Brand Memory
The account's durable knowledge - voice, positioning, product facts - and how an agent reads and edits it.
Brand Memory is the account's durable knowledge: who the business is, what it sells, how it sounds, what it has already said. It is a small file tree, not a prompt, and every job reads it before it writes anything.
This is the highest-leverage thing an agent can edit. A post with the wrong tone is a symptom; the voice file is the cause. Fix the file and every future post is fixed.
Read it
GET /api/workspace answers the tree with its completion ring - which parts of the brand are
filled in and which are still empty.
Write it
A file says what it does to a job in optional frontmatter: authority: rule (obeyed) or
authority: reference (background), and stale_after: 2026-12-31 (past that day a job is told the
file exists, not given its text). With no frontmatter, files under guidelines/ are rules and every
other file is a reference.
A write with any other authority, a stale_after that is not a real date, or more than 256 KB is
refused with a 400 (frontmatter) or a 413 (size) that says why, and nothing is written: fix the
file rather than send it again. POST /api/brain/import answers the same way when a document's text
is too big. Only a 502 means Brand Memory is not answering and a resend is right.
Needs write. POST /api/brain/scan reads a link and files what it says into the tree (an NDJSON
stream). POST /api/brain/import takes a document. Both are how you fill a new account in one
move rather than typing it.
Let an agent finish it
The screen's ring and its "Still open" chips exist for an agent too. GET /api/workspace/onboarding
answers what is still empty as the questions a human answers, each with its hint and the file to
write; the agent asks, composes the answers as markdown under the question headings, and PUTs the
file. Repeat until open is empty.
On the Brand Memory screen, Let your agent do it mints a read+write key and a prompt to
paste into Claude, ChatGPT or any agent - the human answers questions in their own chat and the
agent writes the files. Needs read to read, write to fill.
Assets
The brand's real files - logos, fonts, product shots, footage - live beside the text:
| Method | Path | Scope | Purpose |
|---|---|---|---|
| GET | /api/brain/assets, /api/assets | read | Brand uploads, and the whole asset library. |
| GET | /api/brain/assets/[filename] | read | Stream one asset (Range supported). |
| PUT/PATCH/DELETE | /api/brain/assets/[filename] | write | Upload, rename, delete. |
| GET | /api/media/[...key] | read | Stream any media key this account owns. |
A media key from here can go straight onto a post (mediaKeys) or onto a job message
(mediaKeys). Uploading an asset puts it in the library for reuse; attaching it to a message is
what makes this turn's agent look at it. Two different asks - do the one you were asked for.
Standing agents
An agent is a recurring brief the server wakes on its own schedule.
POST /api/strategies needs write, or publish if the agent is armed to autopublish - arming
something that posts without a human is itself a publishing act. Waking one always needs
publish. What they propose lands in the queue as proposed; see Posts.
