Every fact an Actionist agent learns lives in a plain Markdown file on your machine — 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
CRM bucketCustomer accounts and historyRead / 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 on disk. 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 buckets
Global memoryRead/Write
CRMR/W
ProductsRead
PoliciesNo access
OperationsNo access
DocsRead
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 on disk. The tab shows a row per bucket with a three-way permission control: No access (invisible to the agent), Read (search and recall), Read/Write (search, recall, and save new facts).The Global memory bucket (Globe icon, always at the top) covers workspace-wide scratch memory shared by every agent. It is always included in search regardless of its permission setting.The six built-in company buckets cover shared ground truth:
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
You can also let one agent read another agent’s memory directory by adding agent:{targetId} as a scope — useful for coordinator agents that need to read a specialist’s learned facts.
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, not a free-for-all. The matrix below starts in the recommended setup for a CRM agent. Change anything; watch the agent’s world change.
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 access— read only— read + write
company/products/ — no access— read only— read + write
company/policies/ — no access— read only— read + write
company/operations/ — no access— read only— read + write
company/crm/ — no access— read only— read + write
company/docs/ — no access— read only— read + write
Struck-through paths are invisible to the agent — in chat, in workflows, and in search.
The CRM agent owns customer data. Read/Write lets it both recall existing records and save new ones — call outcomes, updated deal stages, contact notes.
Products gets Read
The agent references your catalogue when qualifying leads, but it shouldn’t rewrite product facts. Read-only keeps the source of truth safe.
Operations and Policies get No access
A CRM agent has no reason to read internal process docs or policy files. No access keeps the context clean and prevents accidental contamination.
Verify with a test message
Open a chat and ask: “What do you know about our pricing?” Watch the Search Memory tool call and confirm it returns results from the CRM and Products buckets only.
Always give at least one bucket Read/Write for any agent that runs on a schedule or trigger. If every bucket is Read or No access, the memory agent plans writes it cannot execute — the agent appears to work normally but retains nothing between sessions.
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.
Six 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.
Always give at least one bucket Read/Write
If every bucket is Read or No access, the memory subsystem plans writes it cannot execute. The agent appears to work — answers questions, runs workflows — but retains nothing, and the next session starts from zero. For any scheduled or triggered agent, confirm one Read/Write bucket before production.
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, hard-capped at 200 lines or 25 KB, oldest entries dropped first. For agents running for months, open it occasionally and confirm your most important facts still have entries. If a critical early fact was evicted, 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 on-device · Nothing leaves your workspace.