Citations on every claim
Context returned by Repo carries the exact messages, files, and folders it was built from. Nothing is generated. Only retrieved, ranked, and shaped.
Every answer is a receipt. Every key is a contract. Every retrieval is in the ledger. Repo is built so the answer to “why did the agent say that?” is one query away.
Six primitives, all live today. None of them are opt-in add-ons or future roadmap items — they are how the system works in private beta.
Context returned by Repo carries the exact messages, files, and folders it was built from. Nothing is generated. Only retrieved, ranked, and shaped.
Every memory node carries source, ingestion, and last-sync timestamps. The Context Contract reports per-result age so agents can refuse stale answers.
Each agent gets its own key, bound to allowed actions (search, context, ask, ingest, admin) and allowed providers. No key can ask outside its contract.
Repo preserves Google Drive sharing metadata, Slack channel basis, and provider scope. Drive source items missing access-policy metadata are excluded from retrieval at the SQL layer.
Every /v1/context call writes an audit event keyed by request id with actor, scope, evidence ids, freshness, and limitations. Snippet text is never persisted to the trail.
Atomic per-key, per-action rate windows in Postgres. Over-budget calls return 429 with Retry-After and never reach retrieval or audit.
Every /v1/context response carries a versioned envelope: who asked, what scope was applied, how retrieval ran, what evidence was returned, what was excluded, and what limitations the caller should honor.
Agents, SDKs, and logs see a stable shape from day one. Future versions will live behind the same name with explicit version negotiation.
The authenticating key identity, captured server-side. Audit events use actorApiKeyId for agent calls and actorUserId for console writes.
If the key was scoped to a subset of providers, the contract names which providers were filtered out and why each was excluded.
Per-evidence freshness with the basis (source timestamp, ingest timestamp, last sync) so the agent can apply its own staleness threshold.
If memory was empty, scope was applied, or sources were missing freshness or access-policy metadata, the contract reports it explicitly.
Every contract response writes an audit event keyed by the same requestId carried in the contract header. The two are stitched without any client-side wiring.
The ledger is the company's contract with its own AI. Sample rows from a live workspace below — actors, actions, evidence counts, and status codes; never the snippet text itself.
Repo is in private beta. The primitives below are live; the items in roadmap are flagged so you know what to expect, not surprised by a missing answer.
OAuth, channel allowlists, per-account identity, refresh tokens, paginated sync, deduplication. Drive sources without preserved access policy are excluded from retrieval at the SQL layer.
Source-backed responses with actor, access, retrieval, evidence, citations, and limitations. Per-evidence freshness on every result.
Metadata-only audit on every retrieval and admin write. Atomic per-key, per-action rate windows enforced in Postgres.
Today Drive carries preserved permission metadata as accessPolicy on every result; per-user ACL enforcement at retrieval time is queued for v2 of the contract.
Today v1 ships single-owner per workspace. Email invites, multi-role memberships, and SSO/SCIM are in the post-launch backlog.
Linear, Confluence next. Same access policy posture: provider scope, channel/folder basis, freshness on every result.
We'll walk through the Context Contract, the audit trail, scoped keys, and the connector permission model with the people who'll have to sign off on the rollout.