Governed memory for
coding agents

Your agent should know what is true, what changed, and what to ignore.

pip install quilmem

The problem with AI memory

Your coding assistant forgets everything between sessions.
Most memory tools solve storage. None of them solve trust.

🔄

Repeats old mistakes

Fixed a bug last week? Your agent doesn't remember. Same error, same fix, every session.

💥

Contradicts itself

Old rule says "always do X." New rule says "never do X." The agent sees both and picks randomly.

💭

Context collapse

Long conversation compresses. Your agent loses the project map, the decisions, the preferences.

No source of truth

Is that memory from yesterday or last month? Is it still valid? Nobody knows. Not even the agent.

Memory with governance

Every memory has a status. Your agent knows what to trust.

hypothesis active validated

deprecated superseded — excluded from recall

Trust-ranked recall

Validated memories rank above hypotheses. Deprecated ones are excluded entirely.

Conflict detection

Finds contradictions between active memories. Separates real conflicts from duplicates.

Staleness detection

Flags memories when source files change, go missing, or haven't been updated.

Provenance tracking

Every memory knows where it came from: source file, section, content hash.

Health scoring

Scores your memory system 0-100. Know exactly how trustworthy your agent's knowledge is.

Local-first

No cloud, no API keys, no vector DB. Just SQLite. Your data stays on your machine.

See it work

# Store memories with trust levels
mem.add(type="decision", title="Use per-track volume",
        content="Never apply loudnorm to voice.",
        status="validated")

# Recall only returns what's trustworthy
context = mem.recall("audio processing", max_tokens=2000)

# Find contradictions
conflicts = detect_conflicts(mem._conn)
# !! "Always apply loudnorm" vs "Never apply loudnorm"

# Check system health
report = health_check(mem._conn)
# Health: 85/100 | Conflicts: 1 | Stale: 0

# Lifecycle management
mem.promote(record.id)                   # hypothesis -> active -> validated
mem.deprecate(old.id, reason="Disproven")
mem.supersede(old.id, new.id)            # old points to replacement

Battle-tested in production

65+
Videos produced
330+
Governed memories
0
Repeated bugs
66
Tests passing

How it compares

Mem0 Letta Mengram agentmem
Memory lifecycle states No Partial No 5 states
Conflict detection No No Partial Built-in
Staleness detection No No No Built-in
Provenance tracking No No No source + hash
Trust-ranked recall No No No Status-weighted
Health scoring No No No 0-100 score
Local-first Cloud Self-host Yes Always
MCP server Separate Separate Yes 13 tools

Get early access

We're building a dashboard for conflicts, stale memory, health history, and team memory.
Drop your email to get notified when the paid beta opens.

Post in GitHub Discussions so we know what you're building with.