Every fact an Actionist agent learns lives in a plain Markdown file in your workspace, readable, editable, version-controllable. No black-box vector store. No context that silently disappears when the session ends.
Every surface is the same underlying files. You interact with them wherever is most natural. Below: one fact, seen from all three sides.
Memory instructions”Log every client call outcome. Prefer bullet points.”auto-saves
Global memoryWorkspace-wide memory every agent sharesRead/Write
The primary configuration surface, inside the Agent Studio: Agents → select an agent → Memory tab (Brain icon). Instructions, bucket access, and the knowledge corpus, without leaving the app.
company/crm/accounts/northwind.md
## Northwind Trading
- Tier: enterprise · renewal: October
- Reports as slides, never PDF (CEO reads on phone)
Plain Markdown files. Open company/Memory.md or agents/{id}/memory/Memory.md in any editor to read, edit, or version-control what your agents know.
chat · maya
youHow does Northwind want their reports?
tool · Search Memory · “northwind report format”
mayaSlides, never PDF. Their CEO reads on a phone. Saved from your call on June 9.
Agents call Search Memory (memory_search) and Read Memory (memory_get) automatically. In conversation, in workflows, and on scheduled runs.
A background curator watches every conversation, workflow, and scheduled run, and decides what is worth keeping. Below: one agent’s day, landing in her journal as it happens.
agents/maya/memory/TODAY.md
chat · maya · 09:14
09:14Client call with Northwind: they want the Q3 report in slide form, not PDF.
09:14Preference saved: reports as slides for Northwind going forward.
workflow · invoice-chase · 11:02
11:02Sent 3 payment reminders. Invoice #2041 escalated to second notice.
chat · maya · 14:38
14:38New rule from the team: always CC legal@ on contract emails.
14:39Promoted to Memory.md: this one is permanent.
schedule · daily-digest · 17:00
17:00Digest sent. Open rate trending up since switching to bullet summaries.
Nothing blocks the agent. Curation runs asynchronously in the background. The conversation never waits for a memory write.
Today, then history. The journal rolls into dated history files; durable rules get promoted to Memory.md and survive forever.
Everything is a file. Open the workspace in any editor and read exactly what your agent knows. Edit it. Version it.
Every session opens with a deterministic preload: up to six files across five sources, wrapped in named sections, inside a total budget of 8,000 tokens: no search, no guessing. Hover a segment to inspect it.
Truncation is front-first: when a file exceeds its budget, the oldest content is dropped and the newest is kept. If you let Memory.md or TODAY.md grow uncurated, early important context disappears silently. Keep both files tight.
Reach it from Agents → select an agent → Memory tab (Brain icon). Three panels, each controlling a different layer.
Agent Studio, Maya · Memory
OverviewToolsMemoryChannelsSchedule
Memory instructions
Log every client call outcome. Prefer bullet points. Never store API tokens.
auto-saves
Memory
Global memoryRead/Write
Every workspace has Global memory. Any further scope you define in company/Memory.md appears here as its own row with the same three-way control.
Knowledge corpus
Upload File.md .txt .pdf .docx up to 10 MB
pricing-2026.pdfextracted
Memory instructions
The markdown editor at the top of the tab writes directly to agents/{id}/memory/Memory.md. Use it to tell the agent what is worth remembering and how: “Log every client call outcome. Prefer bullet points. Never store API tokens.”Changes auto-save as you type. To revert to the default, click the Reset button (arrow-clockwise icon) in the panel header.
Keep instructions under roughly 200 words. Memory.md is injected verbatim into every session within the 8k-token preload budget. A long essay eats into the budget for TODAY.md and recent history. Write directives, not prose.
Memory buckets
Buckets are named scopes. Each one maps to a file or folder of Markdown in your workspace. The tab shows a row per bucket with a three-way permission control, using the same labels you see in the product: No access (invisible to the agent), Read (search and recall), Read/Write (search, recall, and save new facts).Global memory (Globe icon, always at the top) covers workspace-wide memory shared by every agent. It is the one bucket present in every workspace, and its permission control works exactly like the others: set it to No access and this agent stops reading it.
Which buckets you see depends on your workspace. A new workspace shows Global memory and, once you add documents, a Knowledge corpus. Additional buckets appear only after they are defined in company/Memory.md using the format in the “Adding a custom bucket” note below. If you were expecting named company scopes and do not see them, they have not been defined yet.
A common layout, once you define it, splits shared ground truth by subject:
Bucket
Scope
Contents
Business Info
company:business-info
Mission, values, company facts
Products
company:products
Product catalogue and specs
Policies
company:policies
Internal rules and procedures
Operations
company:operations
Processes and runbooks
CRM
company:crm
Customer accounts and history
Docs
company:docs
Reference documentation
Knowledge corpus
The Knowledge Corpus is a private document library for this specific agent. Upload reference files (specs, pricing tables, runbooks, FAQs) and the agent retrieves the relevant excerpt via semantic search rather than loading the whole document on every turn.“Private documents this agent can reference. Chunks are embedded and retrieved; nothing leaves your workspace.”Click Upload File to add a document. Accepted types for indexing: .md, .txt, .csv, .json, .yaml, .yml, .toml, .ini, .log. Rich document formats (.pdf, .docx, .xlsx) go through a text-extraction step before indexing. Maximum file size: 10 MB per file.To remove a file, hover the row and click the Trash icon. Confirm in the dialog: “Delete [filename] from the knowledge corpus?”
Memory is bucketed by scope so an agent only sees what it needs, a data diet rather than a free-for-all. The matrix below is an illustration built on the example buckets above. Change anything; watch the agent’s world change.
Illustrative. These bucket names are the example layout from the table above, not buckets that exist in a new workspace. Global memory is the one every workspace starts with.
Set each bucket’s access
Business InfoMission, values, company facts
ProductsProduct catalogue and specs
PoliciesInternal rules and procedures
OperationsProcesses and runbooks
CRMCustomer accounts and history
DocsReference documentation
What this agent sees
agents/maya/memory/ . Always
company/Memory.md . Always
company/business/ no accessreadread/write
company/products/ no accessreadread/write
company/policies/ no accessreadread/write
company/operations/ no accessreadread/write
company/crm/ no accessreadread/write
company/docs/ no accessreadread/write
Struck-through paths are invisible to the agent: in chat, in workflows, and in search.
Scope to ownership. Give an agent Read/Write only on the bucket it is responsible for, Read on the reference material it needs, and No access everywhere else. Two agents writing to the same bucket can contradict each other in the same file, so keep one writer per bucket.
Adding a custom bucket. Edit company/Memory.md directly using the heading-based format below. After saving, the new bucket appears in all agents’ Memory tabs immediately.
### My Bucket Name- Scope: `company:my-bucket`- Type: file- Path: `company/my-bucket.md`- Description: What this bucket stores
Upload a 50-page product spec once. The agent retrieves a targeted excerpt on every relevant turn, instead of re-reading the whole file or asking you to paste it in chat. Watch a file move through its lifecycle:
In the Memory tab, scroll to the Knowledge corpus panel and click Upload File.
Pick a file
Text types index directly: .md, .txt, .csv, .json, .yaml, .yml, .toml, .ini, .log. Rich documents (.pdf, .docx, .xlsx) are text-extracted first. Maximum size: 10 MB per file.
Watch the lifecycle
Exactly the animation above: Uploading… → Extracting text… (rich files) → indexing pending → the extracted badge. If you instead see “No text could be extracted from this document”, the file is image-only. Nothing is searchable.
Verify the agent can find it
Ask the agent a question the document should answer. It calls Search Memory and returns a ranked excerpt. Confirm the snippet is from your file.
Remove a file
Hover the file row and click the Trash icon. Confirm: “Delete [filename] from the knowledge corpus?” The file and its index entries are removed immediately.
Wait for the extracted badge before relying on a PDF or DOCX in a live agent. “Indexing pending” means not yet searchable; “No text could be extracted” means it never will be.
Two tools power recall, and agents call them automatically. You see the tool calls inline in chat and in workflow traces. Pick a query and watch the ranking.
memory_search(“report format”)
memory_search(“contract emails”)
memory_search(“demo follow-up”)
memory_search(“tone of voice”)
agents/maya/memory/Memory.md:120.91
Reports for Northwind go out as slides, never PDF. Their CEO reads on a phone.
company/docs/brand-voice.extracted.md:190.48
Tone of voice: direct, warm, zero filler. Short sentences win. No exclamation marks.
company/crm/accounts/northwind.md:20.37
Northwind Trading: enterprise tier, renewal in October, champion: Dana Voss.
company/policies/email.md:40.94
Always CC legal@ on anything containing contract terms or pricing commitments.
agents/maya/memory/TODAY.md:140.52
New rule from the team: always CC legal@ on contract emails. Promoted to Memory.md.
company/products/pricing.md:70.29
Pro plan pools usage across the team; Basic is single-seat with a monthly reset.
agents/maya/memory/history/2026-06-09.md:310.89
Demo follow-ups convert best when sent within 4 hours, with one concrete next step.
company/crm/accounts/northwind.md:20.44
Northwind Trading: enterprise tier, renewal in October, champion: Dana Voss.
agents/maya/memory/TODAY.md:80.33
Invoice #2041 escalated to second notice; finance wants weekly status on it.
company/docs/brand-voice.extracted.md:190.93
Tone of voice: direct, warm, zero filler. Short sentences win. No exclamation marks.
agents/maya/memory/Memory.md:120.41
Reports for Northwind go out as slides, never PDF. Their CEO reads on a phone.
company/policies/email.md:40.27
Always CC legal@ on anything containing contract terms or pricing commitments.
Ranked with the real engine’s hybrid weights: 0.6 semantic similarity · 0.25 keyword match · 0.15 recency, re-ranked so one document never dominates. Demo data, real scoring shape.
”You explained the Northwind report format once. In March.”
maya · memory_search
Tool
Display name
What it does
Key default
memory_search
Search Memory
Semantic + keyword hybrid search across all permitted buckets and corpus files. Returns ranked results with file path, line range, score, and snippet.
Up to 6 results per call
memory_get
Read Memory
Reads a specific memory file. Accepts path (required), from (start line, optional), and lines (line count, optional). Scope-enforced.
Up to 200 lines per call; omit lines to read the full file (also capped at 200)
memory_get is scope-enforced. An agent can only read files in buckets where it has at least Read permission. Attempting to read outside the permitted scope returns an error, not the file contents. Recall works the same everywhere: in chat, in workflows, and on scheduled runs, with each tool call visible in the trace.
Memory is most useful when it surfaces exactly the right context without being asked. These recipes show how agents across roles use recall and write to stay useful across sessions.
Dario · Sales
Before a call, memory_search(“northwind deal stage”) surfaces the last three touchpoints, open commitments, and the champion’s name. All logged automatically from prior sessions. Dario opens the call with context instead of asking the CRM for a briefing.
saves ~6 min per call
Priya · Support lead
A support ticket asks about refund eligibility. The agent runs memory_search(“refund policy”) against the Policies bucket, finds the exact clause, and cites the source file and line number in its reply: no tab-switching, no guesswork.
cited answer in ~8 sec
Maya · Marketing Manager
Maya said once: “Northwind reports go out as slides, never PDF.” That preference was written to Memory.md and now applies on every run. Campaign drafts, digest emails, and scheduled summaries all arrive in the right format without reminders.
Five habits that prevent the most common memory failures and make the most of the context you have.
Write directives, not essays
Memory instructions are injected verbatim at session start, inside the 8,000-token preload budget. Every word you write competes with TODAY.md and recent history. Write short, imperative sentences: “Log every client call outcome. Prefer bullet points. Never store API tokens.” Past 200 words, you are writing prose that belongs in a corpus document.
Match Read/Write to ownership
Think of each agent as owning the buckets it controls: your CRM agent gets Read/Write on CRM, Read on Products, No access on Policies. Giving multiple agents Read/Write on the same bucket creates contention. Agent A’s writes can contradict agent B’s in the same file. One writer per bucket is the clean pattern.
Use the corpus for reference docs, not chat pastes
Pasting a 50-page spec into chat loads the whole document into context every turn. Uploading it to the corpus chunks and indexes it, the agent retrieves the relevant excerpt only when needed. Good corpus candidates: specs, pricing tables, SLAs, runbooks, brand guidelines, FAQs. Bad candidates: short facts (Memory.md) and image-only PDFs (nothing extracts).
Wait for the 'extracted' badge
Rich documents (PDF, DOCX, XLSX) are text-extracted before indexing. The extracted badge confirms usable text came out. “No text could be extracted” means the file is image-only. OCR is not performed, nothing is searchable. Don’t put a corpus file in a production agent’s remit until the badge appears.
Review INDEX.md periodically for long-lived agents
The curator maintains agents/{id}/memory/INDEX.md automatically, one line per memory file, trimming oldest entries first as it grows. For agents running for months, open it occasionally and confirm your most important facts still have entries. If a critical early fact was dropped, re-surface it: ask the agent to log it again, or edit the file directly.
Every fact lives in a plain file you own, readable, editable, version-controllable.
Permissioned by bucket · Indexed for recall · Nothing leaves your workspace.