SmritiTantra
Memory for AI agents: ingest, recall, learn. One shared async core, served three ways — embedded in your process, over HTTP, or as an MCP server — so a laptop script and a production service run the exact same recall pipeline.
Quickstart
import asyncio
from smrititantra import Smrititantra
async def main() -> None:
async with Smrititantra() as smriti:
await smriti.concepts.author(
kind="metric", name="net_revenue",
metadata={"title": "Net Revenue", "description": "Gross minus refunds."},
body="Net revenue is gross order value minus refunds.",
)
await smriti.snapshots.compile()
pack = await smriti.recall("what is net revenue")
print(pack.confidence, [i.ref for i in pack.required])
asyncio.run(main())
Or the self-contained tour (no database or config needed):
pip install "smrititantra[local]"
smrititantra demo
See Install for the extras matrix, CLI for the full command surface, HTTP API for the service routes, and Architecture for how the pieces fit together.
Why
A recall answer is only useful if it's grounded: the concept it names, the binding that computes it, the rule that must be applied, the asset it reads from. SmritiTantra compiles that structure into a versioned snapshot and serves recall against it with access control, provenance, and a knowledge-gap loop that surfaces what's missing instead of guessing.