Memorable
An agent finishes a task; Memorable stores how it was done and replays it when a similar task returns. Storage stays on your side and consent is fail-closed.
$npx memorable-cli@latest login
$memorable enable
$memorable recall "fix the tests"
Quickstart
Two minutes. Signing in links this machine to your workspace; the default backend is a standalone local store, and on a machine running gbrain you can point it at your own database with memorable init gbrain afterwards.
connect this machine
>npx memorable-cli@latest login# opens a browser, approves this machine
>memorable enable# explicit write consent, nothing is stored before this
no node or npm on this machine
>curl -fsSL https://memorable.sh/install.sh | sh
># then: memorable login
store a procedure, then find it
>memorable ingest trace.json
>memorable recall "rotate the TLS cert"
>memorable show <slug>
# guarded, injection-safe rendering>memorable list
# everything stored, newest firstFor agents
Telling a coding agent "use memorable" is enough. Every step is a plain CLI call it can run itself. The drop-in file lives on AGENTS.md.
one line
>memorable agents-md >> AGENTS.md
Measured
Against the same tasks run without memory, on two independent runs.
Recall vs no recall
agent turns -19%, replicated pass rate every run passed injected size ~293 tokens vs a 15,593-token skill: 0% turns
Extraction API
One endpoint converts a tool-call trace into a procedure. Full reference on the API page.
POST /v1/extract
BASE=https://memorable-\
extraction-api.memorable.workers.dev
curl $BASE/v1/extract \
-H "Authorization: Bearer \
$MEMORABLE_API_KEY" \
-H "Content-Type: \
application/json" \
-d '{
"session_id": "run-183",
"task_description":
"rotate the TLS cert",
"harness": "my-orchestrator",
"tool_calls": [
{"name": "shell",
"input": {"command":
"certbot renew"},
"result": {"ok": true}}
]
}'Response · 200
{
"draft": {
"title": "Rotate the TLS cert",
"schema_version": "1.0.0",
"steps": [
{
"seq": 1,
"action": "shell",
"activity_class": "execute",
"command": "certbot renew",
"repeat_count": 1
}
],
"postconditions": [
"final command exited
successfully: certbot renew"
],
"embedding": [],
"embedding_model": ""
},
"request_id": "82886df0-..."
}