The user's memory.
In PAMbase, every person has exactly one memory — a single, durable store of what's known about them — and it is created automatically the moment they sign up. There is no “build an AI” or “design a persona” step. This page explains what that single memory is, what little PAMbase keeps about the person beyond their memories, and how your app reads it.
Why it matters
Because there is one memory per user rather than one per app, knowledge accumulates instead of fragmenting. An app you build can show up already knowing the user's interests, goals, and history — and anything your app contributes can benefit other apps the user trusts. That continuity is the whole point: the user's memory follows them from product to product instead of being recreated each time.
Your app brings the persona
PAMbase stores knowledge, not personality. The voice, tone, and character of the assistant your users talk to belong to your app. PAMbase's job is to tell you what's known about the user so your assistant feels continuous across every tool they connect. Two paths:
- If your app has its own model — pull context or a synthesized identity brief and apply your own personality on top.
- If it doesn't — use the hosted AI gateway, a neutral assistant already grounded in the user's memory.
The light profile
Beyond the memories themselves, the only persona-like thing PAMbase keeps is a deliberately thin light profile the user controls in their hub settings. It has just two pieces:
- an optional display name for their memory, and
- an optional one-line tone note (e.g. “warm and concise”), stored at
personality.description.
What the tone note does
The tone note is a hint, not a rule. It shapes two things: the hosted gateway chat (so PAMbase's own assistant honors how the user likes to be spoken to) and the synthesized brief described below. An app that runs its own model can read the tone note and choose to respect it, or ignore it entirely in favor of its own persona.
How to read it
Reading the user's memory requires the identity:read scope. There are two things you might want — the raw light profile, or a synthesized portrait — and a different call for each.
// Raw light profile (display name + tone note) rides on the connection:const { ai } = await pambase.getConnection();ai.name; // → e.g. "Sam"ai.personality?.description; // → the one-line tone note, if set// Synthesized portrait of the user, built from their memories:const brief = await pambase.getIdentityBrief();// Or get that portrait pre-formatted as a system prompt for your model:const prompt = await pambase.systemPrompt();
getIdentity() call. Read the raw profile via getConnection() (it returns the connection plus its ai field), or get the synthesized portrait via getIdentityBrief() / systemPrompt().What a brief reads like
A brief is a short, natural-language portrait stitched together from the user's most relevant memories — ready to feed straight into a model. For a Margin user it might read:
Sam is an avid reader who gravitates toward long-form essays on systemsdesign and engineering culture. They've set a goal to read 24 books thisyear and recently saved highlights about backpressure and rate limiting.Prefers a warm, concise tone.
That last sentence comes straight from the tone note; the rest is synthesized from preference, goal, and event memories. Don't cache a brief forever — fetch it fresh as the user's memory grows; the hub is the source of truth.
Next
- AI gateway — host a memory-grounded assistant without bringing your own model.
- Get the identity brief — the full how-to for briefs and system prompts.
- Permissions — the
identity:readscope and what it grants.