When three developers are using Claude Code, Cursor, and Codex on the same codebase, Tages gives you one memory graph with provenance, RBAC, and an audit trail across every agent. Memory isn't storage. It's a team practice.
Mainstream agent memory frameworks store facts and retrieve them later. That works for a solo developer. It breaks when teams ship with AI: decisions get re-litigated, conventions drift across agents, and no one can answer "who taught the AI that?"
Tages treats memory as a governed artifact. Every write records who, what, when, and from which agent session. Every memory can be audited, exported, or revoked. Federation propagates team decisions; drift detection surfaces when agents have learned conflicting things.
Every memory write captures the full context of its origin. This is stored alongside the memory value and is queryable via the CLI, MCP tools, and the dashboard.
| Field | Type | Description |
|---|---|---|
user_id | uuid | Supabase Auth user who initiated the write. |
agent_id | text | Logical agent identifier (e.g., claude-code, cursor, codex, gemini-cli). |
session_id | uuid | FK to agent_sessions.id. Correlates every tool call within one session. |
tool_name | text | MCP tool that wrote the memory (remember, observe, import, etc.). |
source_context | jsonb | File path, PR number, commit SHA, or ticket ID associated with the write. |
created_at | timestamptz | Server-side UTC timestamp. Immutable. |
confidence | numeric | 0.0–1.0 confidence score (auto-indexer runs, draft-memory captures). |
See docs/provenance-model.md for the formal specification and migration history.
Every memory write, update, delete, and export is recorded in an append-only audit log. Entries capture the provenance fields above plus the operation type and the RBAC role of the actor at the time of the write.
Retention: audit rows are retained for 365 days by default. Self-hosted deployments configure retention via the TAGES_AUDIT_RETENTION_DAYS environment variable. Cloud customers on the Governance tier can request extended retention (up to 7 years) to meet SOC 2 and HIPAA requirements.
Tamper-evidence: each audit row is written with a row-level hash chained to the previous row within the same project. Any modification or deletion breaks the chain and is detectable via tages audit verify. (Planned for Governance tier; see roadmap.)
Audit logs and memory snapshots export on demand in machine-readable formats suitable for compliance review.
Run tages audit export --format json --since 2026-01-01 to export scoped ranges.
Users can request erasure of their own contributions. Project owners can erase any memory or user's writes within a project they own.
Three roles at the project scope:
Enforced at the Supabase Row Level Security layer (migration 0031 and 0051_team_rbac_hardening). UI and MCP tools receive the same RLS denials; there is no enforcement split between layers.
Federation lets one team memory propagate to other projects with explicit override rules. Security and platform teams can own specific memory types or AGENTS.md sections (planned via tages agents-md federate) so cross-project conventions stay consistent without manual copy-paste.
Every federated memory retains its original provenance record. You can always trace a propagated memory back to the team and user that authored it.
When multiple developers run agents on the same codebase, memory state drifts. Tages' tages drift command computes an Agent Stability Index across semantic, coordination, and behavioral drift dimensions, surfacing which memory keys are diverging and why.
Inspired by the Agent Drift paper (arxiv:2601.04170). Shipping in the Governance tier.
Optional AES-256-GCM field-level encryption for memory values (set TAGES_ENCRYPTION_KEY). All cloud traffic over TLS 1.2+. Supabase Auth with GitHub OAuth for user identity; SHA-256 hashed CLI tokens with expiration and rotation.
Full security posture at /security.
Compliance status is documented openly. Contact security@tages.ai for current attestation artifacts or to request a specific control review.
Tages runs behind any MCP-compliant gateway. Integration and compat guides in progress for Stacklok ToolHive (Apache 2.0, K8s-native) and TrueFoundry vMCP.