Product

Memory for agent teams

An orchestration harness coordinates agents. It doesn't remember for them. ENGRAM gives every agent — the orchestrator and each sub-agent — a memory of its own, and lets them share deliberately. This is the layer a harness can't own.

Each agent owns its memory; sharing is explicit and revocable O Orchestrator ASub-agent BSub-agent CSub-agent Owned memory Shared on purpose (grant) Revoked Each agent owns its memory. Sharing is explicit, and revocable.
One orchestrator, three sub-agents — each with a memory of its own, sharing on purpose.

Every agent owns its memory

In ENGRAM, a memory belongs to a principal — a human, an orchestrator, or a sub-agent — and is private to that owner by default. Ownership isn't a tag bolted on afterwards; it's how the store is scoped. Each memory sits on a nested ring — task, context, project, user — that decides how widely it surfaces in its owner's own recall, and a missing scope fails closed rather than leaking. Nothing an agent learns is visible to another agent until someone deliberately shares it.

Sharing is deliberate

Memory crosses from one agent to another only through an explicit grant, and a grant only takes effect when two independent conditions are both met — an active grant from owner to grantee, and an owner-ring scope that reaches far enough to permit it. Absent either, recall returns an agent only its own memories. That is the whole safety model: fail-closed, revocable, and auditable. The Sharing & hand-off page covers it in full.

Orchestrators, sub-agents and projects

An orchestrator can grow its own team. With the Agent-Manager role it provisions sub-agents it owns, delegates work down a tree (capped at two levels, with the human at the top accountable for it), and scopes each finding to a project so one unit of work's memory never bleeds into another's. The orchestrator then recalls its team's findings a project at a time. See Roles & Agent Management for how this is set up.

Two ways to give an agent an identity

The simplest way to get started: hand an agent a human user's access token. It then acts as that human — everything it remembers is the human's, attributed to them — which is exactly right for a single-user setup and the fastest path to a working integration.

For a team of agents, provision each one its own token. Every sub-agent gets a server-pinned identity of its own, owns its own memory, and shares through grants. Same server, same audit trail — you choose per-agent identity when you want isolation, impersonation when you want speed.

Identity is server-pinned either way. An agent authenticates as whoever its token belongs to and can never act as another principal, so the audit trail always attributes work correctly — whether that's a shared human identity or a sub-agent's own.

How much a token may do

Identity answers who. Authority answers how much. A token can carry less than the account behind it: mark it Restricted and it still reads everything that account reads and still adds articles, documents and memories — but it cannot create accounts or hand out credentials. No minting a sub-agent, no issuing or rotating a token, no changing a user.

This matters most in exactly the case above, where an agent runs on a human's own token. That is the fastest path to a working integration, and it hands the agent everything the human can do. If the agent reads anything you did not write — a document it was pointed at, a web page, a webhook payload, another party's message — restricting its token leaves it working as before while taking account creation and credential minting off the table. An orchestrator that genuinely needs to grow its own team is the case for an owner token; a worker almost never is.

Authority is per token, not per account. The same agent can hold an owner token for work you drive yourself and a restricted one for an exposed surface. Rotation preserves whatever a token had, so routine key rotation never quietly hands power back, and a restricted token cannot lift its own restriction.

Which credential wrote it

Because one principal can hold several tokens, "who wrote this" was not always a precise enough question. Every memory and article now records which token wrote it, on the record itself — so the coding agent learned this while working in the repo is distinguishable from the desktop assistant was told this by a document it ingested. Those carry different evidential weight, and now they read differently.

The practical value is scope. If a surface is ever compromised, everything that credential wrote is a single query rather than a review of everything the account ever produced. Writes with no credential behind them — a signed-in human in the browser, or one of ENGRAM's own background jobs — say so explicitly rather than being left blank, so an unattributed record means something specific instead of meaning nothing in particular.

Private beta — by invitation

If you're building an agent harness and want a memory layer your agents can own, tell us what you're building.

Get in touch → info@pvelua.net