ES Install

Got an error?

Paste what the message says or its code (MU-…). Each error tells you what happened and how to fix it on your system.

83 known errors

MU-001 Claude Common

ANTHROPIC_API_KEY takes precedence over the claude.ai plan

What happened. Claude Code found an API key as well as the claude.ai login, and the key wins. It may come from your shell profile — MADRE hands the CLI the environment exactly as this machine has it — or from the `env` block of ~/.claude/settings.json, which is where a key pasted into Settings › Agents is written. The turn is billed to the API account, not to the plan, and your organisation connectors do not load.

What to do. Decide which one you mean. To work on the API, this message is only a notice and can be ignored. To work on the plan, take the key out of wherever it is set: your shell profile, or the `env` block of ~/.claude/settings.json if you pasted it into MADRE — then open the project again.

grep -rn ANTHROPIC_API_KEY ~/.zshrc ~/.zprofile ~/.zshenv 2>/dev/null
# remove or comment the line it finds, then:
unset ANTHROPIC_API_KEY
# and start MADRE from a new terminal
grep -rn ANTHROPIC_API_KEY ~/.bashrc ~/.profile ~/.bash_profile 2>/dev/null
unset ANTHROPIC_API_KEY
# and start MADRE from a new terminal
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
grep -rn ANTHROPIC_API_KEY ~/.bashrc ~/.profile ~/.bash_profile 2>/dev/null
unset ANTHROPIC_API_KEY
# and start MADRE from a new terminal

MU-002 Codex Notice

Codex says it is reading additional input from stdin

What happened. A notice Codex prints, not a failure. MADRE runs it with stdin closed, so the line is harmless and the turn is decided by what Codex returned. If the turn failed, the reason is the line above this one — the exit code, or a clean exit with no answer.

What to do. Nothing to do about the notice itself. If turns keep failing, check that this Codex is recent enough for the flags MADRE passes: `codex --version`, then update it.

codex --version
npm install -g @openai/codex
codex --version
npm install -g @openai/codex
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
codex --version
npm install -g @openai/codex

MU-003 Gemini Blocking

Gemini refuses the personal Google login

What happened. Google closed Gemini Code Assist for individuals to this client. The OAuth login still exists but every request is rejected before it reaches a model.

What to do. Switch Gemini to an API key from Google AI Studio. MADRE copies only the auth selection into its isolated home, so the key can stay in the keychain or in ~/.gemini/.env.

gemini
# inside gemini: /auth → "Use Gemini API key" and paste the key from https://aistudio.google.com/app/apikey
# or, without the prompt:
export GEMINI_API_KEY="YOUR_KEY"
# persist: echo 'export GEMINI_API_KEY="YOUR_KEY"' >> ~/.zshrc
gemini
# inside gemini: /auth → "Use Gemini API key"
export GEMINI_API_KEY="YOUR_KEY"
# persist: echo 'export GEMINI_API_KEY="YOUR_KEY"' >> ~/.bashrc
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
gemini
# inside gemini: /auth → "Use Gemini API key"
export GEMINI_API_KEY="YOUR_KEY"
# persist: echo 'export GEMINI_API_KEY="YOUR_KEY"' >> ~/.bashrc

MU-004 Gemini Blocking

Gemini key out of prepaid credits

What happened. The AI Studio project behind the Gemini API key has spent its prepaid balance. Google answers every call, including generations in Images, with HTTP 429 until the balance is topped up. Gemini CLI hides this behind silent retries.

What to do. Top up the project in AI Studio, or point the Gemini CLI at a key from another project. Nothing in MADRE changes; retry once billing is fixed.

# billing: https://ai.studio/projects
# check the key still works:
gemini --model gemini-3-flash-preview -p "ping"
# billing: https://ai.studio/projects
# check the key still works:
gemini --model gemini-3-flash-preview -p "ping"
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# billing: https://ai.studio/projects
# check the key still works:
gemini --model gemini-3-flash-preview -p "ping"

MU-005 Gemini Passing

Gemini key rate-limited by Google (HTTP 429)

What happened. The Gemini API key hit its per-minute or daily quota. Gemini CLI retries with exponential backoff and prints only stack traces while it waits, which looked like a hang. With the "auto" model, the first request is a small router call, so even that can be throttled.

What to do. Wait a minute and retry, pick an explicit model in the Write box (gemini-3-flash-preview skips the router), or raise the key's quota in Google AI Studio.

# in the project: click the Gemini sphere twice → choose gemini-3-flash-preview
# check quota: https://aistudio.google.com/app/apikey
gemini --model gemini-3-flash-preview -p "ping"
gemini --model gemini-3-flash-preview -p "ping"
# quota: https://aistudio.google.com/app/apikey
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
gemini --model gemini-3-flash-preview -p "ping"
# quota: https://aistudio.google.com/app/apikey

MU-006 Gemini Passing

Gemini model under high demand (503)

What happened. Google is shedding load on the selected model (HTTP 503). The CLI would retry with backoff for minutes; MADRE stops it after 15 s of that and retries once on gemini-3-flash-preview. The turn failed only if that spare model failed too; the message is still the one about the model you chose.

What to do. Ask again in a minute, pick an explicit model from the Write box's model menu, or hand the question to another agent. PULSE_GEMINI_FALLBACK_MODEL changes the spare model; left empty, there is none.

# wait, then resend — or continue with @codex / @claude / @opencode
PULSE_GEMINI_FALLBACK_MODEL= madre start
# wait, then resend — or continue with @codex / @claude / @opencode
PULSE_GEMINI_FALLBACK_MODEL= madre start
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# wait, then resend — or continue with @codex / @claude / @opencode
PULSE_GEMINI_FALLBACK_MODEL= madre start

MU-007 OpenCode Blocking

OpenCode picked a provider without a valid session

What happened. Without a model in its config, `opencode run` falls back to its default provider. On this machine that provider holds a stale or invalid key.

What to do. Tell MADRE which provider/model OpenCode should use in the project, or remove the stale credential so the default changes.

npx @jossuealcala/madre setup
# press [m] and pick a provider/model that has a session, e.g. openai/gpt-5.6-sol
# one-off alternative:
PULSE_OPENCODE_MODEL=openai/gpt-5.6-sol npx @jossuealcala/madre start
# or drop the stale key:
opencode auth logout anthropic
npx @jossuealcala/madre setup
# press [m] and pick a provider/model that has a session
PULSE_OPENCODE_MODEL=openai/gpt-5.6-sol npx @jossuealcala/madre start
opencode auth logout anthropic
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
npx @jossuealcala/madre setup
# press [m] and pick a provider/model that has a session
PULSE_OPENCODE_MODEL=openai/gpt-5.6-sol npx @jossuealcala/madre start
opencode auth logout anthropic

MU-008 Blocking

Agent installed but signed out

What happened. The CLI is on this computer but has no session for its provider. MADRE never stores credentials; each agent keeps its own.

What to do. This agent has no session yet. Connect it once in Settings › Agents (MADRE runs its sign-in for you, nothing to type in a terminal), or ask the same of an agent that is connected.

npx @jossuealcala/madre setup
# or directly:
codex login
claude auth login
opencode auth login
gemini   # then /auth
npx @jossuealcala/madre setup
# or directly:
codex login
claude auth login
opencode auth login
gemini   # then /auth
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
npx @jossuealcala/madre setup
# or directly:
codex login
claude auth login
opencode auth login
gemini   # then /auth

MU-009 Blocking

Agent not found on this computer

What happened. MADRE looks for `codex`, `claude`, `gemini` and `opencode` on PATH plus a few known locations. Nothing answered.

What to do. Press Install on the agent in Settings → Agents: MADRE shows the exact command, runs it here and looks again when it finishes, no restart. `madre setup` does the same from a terminal.

# pick the agent you want; see per-agent commands below
# pick the agent you want; see per-agent commands below
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# pick the agent you want; see per-agent commands below

MU-010 Blocking

Agent detected, adapter not enabled

What happened. Your MADRE build predates the adapter for this agent, or a newer CLI changed its interface.

What to do. Run the latest MADRE.

npx @jossuealcala/madre@latest doctor
npx @jossuealcala/madre@latest start
npx @jossuealcala/madre@latest doctor
npx @jossuealcala/madre@latest start
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
npx @jossuealcala/madre@latest doctor
npx @jossuealcala/madre@latest start

MU-011 Claude Fixed

Claude read the prompt as an MCP config path

What happened. Older MADRE builds placed the prompt right after a variadic flag, so Claude tried to open the prompt text as a file.

What to do. Fixed in MADRE 0.1.0. Run the latest build.

npx @jossuealcala/madre@latest start
npx @jossuealcala/madre@latest start
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
npx @jossuealcala/madre@latest start

MU-012 Tunable

Agent did not respond before the timeout

What happened. The agent was still reading files or reasoning when its time limit expired (by default 180 s for a turn that reads and 600 s for one that writes), or Gemini stayed silent for 90 s (PULSE_GEMINI_IDLE_MS) and was stopped after one automatic retry. Long questions over many files take longer; MADRE killed the whole process tree. Whatever a writing turn left before it stopped is listed under the failure, with UNDO.

What to do. Press Apply below, or type a new number in Settings: Default time limit in Project and turns, or Time limit on the agent in Agents. Each field saves the moment you leave it. It applies to the next turn and persists in ~/.pulse/config.json. Environment variables work too, but only for a server started after exporting them; a running project never sees a later export.

# live, no restart: Settings → Project and turns → Default time limit
# at launch only (env wins over config.json):
PULSE_AGENT_TIMEOUT_MS=300000 PULSE_CLAUDE_TIMEOUT_MS=600000 madre start
# or ~/.pulse/config.json → {"timeouts":{"default":300000,"claude":600000}}
# live, no restart: Settings → Project and turns → Default time limit
PULSE_AGENT_TIMEOUT_MS=300000 PULSE_CLAUDE_TIMEOUT_MS=600000 madre start
# or ~/.pulse/config.json → {"timeouts":{"default":300000,"claude":600000}}
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# live, no restart: Settings → Project and turns → Default time limit
PULSE_AGENT_TIMEOUT_MS=300000 PULSE_CLAUDE_TIMEOUT_MS=600000 madre start
# or ~/.pulse/config.json → {"timeouts":{"default":300000,"claude":600000}}

MU-013 Notice

Turn interrupted by a MADRE restart

What happened. MADRE closed (Ctrl+C, SIGTERM or a crash) while this agent was answering. The log records the turn as failed so the project never shows a ghost "thinking" bubble.

What to do. Nothing to fix. Ask again; the durable transcript is intact.

# resend the question
# resend the question
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# resend the question

MU-014 Tunable

Message rejected for length

What happened. Single messages are capped (20,000 characters by default) so the prompt fits every CLI's argument limits.

What to do. Split the message, or raise the cap if your CLIs cope.

export PULSE_MAX_MESSAGE_CHARS="40000"
export PULSE_MAX_MESSAGE_CHARS="40000"
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
export PULSE_MAX_MESSAGE_CHARS="40000"

MU-015 Notice

Where the usage numbers come from

What happened. Each sphere's usage shows the provider's real limit when the CLI publishes it: Codex writes its 5-hour and weekly windows (used %, reset time) into every session rollout under ~/.codex/sessions; Claude Code's /usage comes from Anthropic's OAuth usage endpoint; MADRE can ask it with the token Claude Code keeps in the keychain when you start with PULSE_CLAUDE_USAGE=1 (macOS may ask once to allow the keychain read). Gemini and OpenCode publish nothing locally, so their usage shows MADRE's own rolling 5-hour window of budget tokens. A window whose reset time has passed counts as empty until the CLI reports again, and the failure monitor says "clear" when a full window resets.

What to do. Click a sphere to see both windows and when they reset. If a sphere's usage looks stale, run one turn with that agent: Codex only rewrites its limits when it runs. Set PULSE_OFFICIAL_QUOTA=0 to stop reading provider limits altogether.

# click the sphere → 5h / 7d windows and reset times
PULSE_CLAUDE_USAGE=1 madre start     # also read Claude Code's usage windows
PULSE_OFFICIAL_QUOTA=0 madre start   # local window only
# click the sphere → 5h / 7d windows and reset times
PULSE_CLAUDE_USAGE=1 madre start     # also read Claude Code's usage windows
PULSE_OFFICIAL_QUOTA=0 madre start   # local window only
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# click the sphere → 5h / 7d windows and reset times
PULSE_CLAUDE_USAGE=1 madre start     # also read Claude Code's usage windows
PULSE_OFFICIAL_QUOTA=0 madre start   # local window only

MU-016 Tunable

Local token budget exhausted for an agent

What happened. The project keeps a soft per-agent budget (500,000 tokens by default) so one agent does not quietly eat a whole session. It is MADRE's own bookkeeping from the usage each CLI reports after a turn, not the provider's quota: nothing is blocked, the project only warns and suggests other agents. Cache reads weigh a tenth of a fresh token.

What to do. Continue with another agent, press Apply below, or type a number in Settings → Project and turns → Tokens per agent (it saves when you leave the field). The provider's real limits show in each sphere's popover when the CLI reports them.

# live: Settings → Project and turns → Tokens per agent
# at launch: PULSE_SOFT_TOKEN_BUDGET=1000000 madre start
# or ~/.pulse/config.json → {"room":{"softTokenBudget":1000000}}
# live: Settings → Project and turns → Tokens per agent
PULSE_SOFT_TOKEN_BUDGET=1000000 madre start
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# live: Settings → Project and turns → Tokens per agent
PULSE_SOFT_TOKEN_BUDGET=1000000 madre start

MU-017 Blocking

Port already in use

What happened. Another process, often another MADRE, is listening on the port.

What to do. Use a different port, or find and stop the process holding it.

npx @jossuealcala/madre start --port 4318
# who holds 4317?
lsof -nP -iTCP:4317 -sTCP:LISTEN
npx @jossuealcala/madre start --port 4318
ss -ltnp | grep 4317
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
npx @jossuealcala/madre start --port 4318
ss -ltnp | grep 4317

MU-018 Blocking

Live stream keeps reconnecting

What happened. The page lost the server. MADRE exited, the laptop slept, or the port changed.

What to do. Start MADRE again from the project folder and reload. The transcript is on disk; nothing is lost.

cd /path/to/project
npx @jossuealcala/madre start
cd /path/to/project
npx @jossuealcala/madre start
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
cd /path/to/project
npx @jossuealcala/madre start

MU-019 OpenCode Passing

OpenCode reported an unexpected server error

What happened. OpenCode runs a local server per invocation; under several simultaneous turns it can fail before the model is reached. Seen when two plans overlapped.

What to do. Let the project settle (STOPALL if agents are piling up), then ask again. Check `opencode` logs if it repeats alone.

# in the project: type STOPALL, then resend
ls -t ~/.local/share/opencode/log | head -1
# in the project: type STOPALL, then resend
ls -t ~/.local/share/opencode/log | head -1
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# in the project: type STOPALL, then resend
ls -t ~/.local/share/opencode/log | head -1

MU-020 Blocking

Too many agents working at once

What happened. A plan was running and more turns started on top of it, or a plan has run for several minutes. Diagnostics raises this before it becomes a loop.

What to do. Type STOPALL in the Write box, or press STOP ALL in the bar: every plan stops and every in-flight agent process is killed. Then ask one agent at a time.

# in the project's Write box:
STOPALL
# or from a terminal:
curl -X POST http://127.0.0.1:4317/api/stop-all
# in the project's Write box:
STOPALL
# or from a terminal:
curl -X POST http://127.0.0.1:4317/api/stop-all
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# in the project's Write box:
STOPALL
# or from a terminal:
curl -X POST http://127.0.0.1:4317/api/stop-all

MU-021 Notice

Web access for an agent

What happened. Every CLI can browse: Codex with --search, Claude Code with WebFetch/WebSearch, Gemini with google_web_search/web_fetch, OpenCode with webfetch/websearch. MADRE keeps it off until you enable it per agent.

What to do. Switch on Web access for that agent in Settings → Agents; it saves at once. It applies to every turn of that agent; content fetched is sent to its provider.

# Settings → Agents → the agent → Web access
# Settings → Agents → the agent → Web access
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# Settings → Agents → the agent → Web access

MU-022 Notice

Commands and mentions in the Write box

What happened. Type "/" for the project's commands: /create turns on permission to create, /image routes an image request to an agent that can draw, /stopall is the brake, /git (Git) and /ahp (Continuity) run read-only in the project and post a fact card everyone, agents included, can read. Type "@" to mention an agent; the name becomes a label. Type "!" to point at a project file ("!src/room.mjs:12-20" for lines): the agent reads it first. In the viewer, click a line number (Shift+click for a range) and ASK offers what to ask about those lines, and whom.

What to do. A struck-through command is a module that is not available in this project: open Modules to install it or turn it on (Git needs a git repository; Continuity needs to be installed).

# type / or @ in the Write box
/git status
/git log 10
/ahp check
/image a poster for the launch
# type / or @ in the Write box
/git status
/git log 10
/ahp check
/image a poster for the launch
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# type / or @ in the Write box
/git status
/git log 10
/ahp check
/image a poster for the launch

MU-023 Notice

Permission modes: #0 INCOGNITO · #1 CHAT ONLY · #2 CREATE · #3 EDIT · #4 FULL ACCESS

What happened. Every message goes out at a mode, chosen in the chip after TO @agent (or typed as #2 in the text). #0 INCOGNITO is off the record: nothing is saved, no other agent remembers it, gone on reload, no plan. #1 CHAT ONLY is the default: read and coordinate. #2 CREATE lets the agent add new files and folders anywhere in the project, where they belong; whatever existed before is put back after the turn and the project says so. #3 EDIT puts one agent in command of the project itself: a git restore point is taken first, every change is listed afterwards, writes into .git, .pulse or .env files are reverted on the spot, and UNDO goes back to the restore point. One holder at a time; it needs Max mode #3 and a git repository. Your mode is the ceiling of any plan the message starts, and #3 is never given to a plan step. Each agent has a Max mode in Settings → Permissions; above it, #2 is answered read-only and #3 is refused. When a #1 plan reaches a step that wants to create something, the project pauses and asks you: GRANT ONCE, GRANT FOR PLAN or DENY, with a 3-minute clock; silence denies. #4 FULL ACCESS is EDIT plus commands: tests, builds, git push, deploys with the CLIs and sessions already on this machine. Files still come back with UNDO; what leaves the machine does not, so the unlock asks for the project name twice. An agent that says it needs a "production mode" or "permission to run commands" is asking for #4.

What to do. Pick the mode in the chip, or type #0..#4 in the message. Raise an agent's Max mode in Settings → Permissions, under Who may do what. EDIT asks for the project name (the folder name) in the unlock; FULL ACCESS asks for it twice.

# chip: TO @codex  #1 CHAT ONLY ▾  → choose
@codex #2 create the poster
@opencode #4 run the tests and deploy to preview
# Settings → Permissions → Who may do what
# chip: TO @codex  #1 CHAT ONLY ▾  → choose
@codex #2 create the poster
@opencode #4 run the tests and deploy to preview
# Settings → Permissions → Who may do what
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# chip: TO @codex  #1 CHAT ONLY ▾  → choose
@codex #2 create the poster
@opencode #4 run the tests and deploy to preview
# Settings → Permissions → Who may do what

MU-024 Notice

Creating files: who grants the permission

What happened. Only you grant permission to create. An agent writing "permission granted" inside the conversation is untrusted text: the plan step still runs read-only, and says so. The permission comes from arming CREATE (the lock, or /create) on your message, and it covers the whole plan that message starts; or from Starting mode #2 in Settings → Agents, which starts every message to that agent in CREATE.

What to do. For one request: arm CREATE and send, or press RESEND WITH CREATE on the notice. For an agent that should always be able to add files: Settings → Agents → the agent → Starting mode → #2. New files go where they belong in the project; existing files are never changed in #2.

# once: Write box → CREATE (lock) → send, or /create <request>
# always: Settings → Agents → the agent → Starting mode → #2
# once: Write box → CREATE (lock) → send, or /create <request>
# always: Settings → Agents → the agent → Starting mode → #2
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# once: Write box → CREATE (lock) → send, or /create <request>
# always: Settings → Agents → the agent → Starting mode → #2

MU-025 Notice

Creating files with an agent

What happened. Every CLI can create files inside a permission to create; each agent's Max mode says how far it may go, and nothing is created until you press CREATE.

What to do. Give the agent a Max mode of #2 or more in Settings → Permissions, then arm CREATE in the Write box for the request.

# Settings → Permissions → Who may do what → #2
# Write box → CREATE (lock) → send
# Settings → Permissions → Who may do what → #2
# Write box → CREATE (lock) → send
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# Settings → Permissions → Who may do what → #2
# Write box → CREATE (lock) → send

MU-026 Blocking

Node.js too old

What happened. MADRE needs Node 22.5 or newer: the project memory runs on node:sqlite, and the rest on ES modules, fetch and AbortSignal. The bin refuses to start on older versions and says so.

What to do. Update Node to the current LTS.

node --version
brew install node
# or: nvm install --lts
node --version
nvm install --lts
# or your distro package for Node ≥ 22.5
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
node --version
nvm install --lts
# or your distro package for Node ≥ 22.5

MU-027 Partial

Project memory unavailable: turns get only the recent window

What happened. The memory index (memory.sqlite next to the project's events.jsonl) could not open or write. The project still works: every turn gets the recent transcript, but nothing older is recalled, nothing is distilled and the Memory map is empty. Causes: Node below 22.5, a corrupt file, or a second MADRE writing the same project with an incompatible version.

What to do. The index is derived from the ledger: delete memory.sqlite (and its -wal/-shm siblings) and restart; MADRE rebuilds it. Distilled notes live in the same file, so export them from the Memory map first if they matter.

node --version   # must be ≥ 22.5
ls ~/.pulse/rooms/*/memory.sqlite*
rm ~/.pulse/rooms/<room>/memory.sqlite*   # rebuilt on next start
node --version   # must be ≥ 22.5
ls ~/.pulse/rooms/*/memory.sqlite*
rm ~/.pulse/rooms/<room>/memory.sqlite*   # rebuilt on next start
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
node --version   # must be ≥ 22.5
ls ~/.pulse/rooms/*/memory.sqlite*
rm ~/.pulse/rooms/<room>/memory.sqlite*   # rebuilt on next start

MU-028 Notice

Project memory: what an agent remembers and how

What happened. Everything said outside INCOGNITO is indexed (full text plus meaning, when a Gemini key exists). When a project is longer than the context window, each turn also receives the older exchanges that match the request, quoted with their ledger sequence (<memory>), and the distilled notes that match (<memories>), inside PULSE_RECALL_SHARE of the window (30 % by default). Every agent reads the same memory, so a decision taken with one reaches the others. Incognito turns may read it but never write it.

What to do. Nothing to do; it is automatic. To give it more room raise PULSE_RECALL_SHARE (max 0.6); to switch it off set it to 0. Ask any agent "what did we decide about …" and it will search with memory_search before answering.

# more recall per turn
export PULSE_RECALL_SHARE="0.45"
# persist: echo 'export PULSE_RECALL_SHARE="0.45"' >> ~/.zshrc
# off
PULSE_RECALL_SHARE=0 madre start
# more recall per turn
export PULSE_RECALL_SHARE="0.45"
# persist: echo 'export PULSE_RECALL_SHARE="0.45"' >> ~/.zshrc
# off
PULSE_RECALL_SHARE=0 madre start
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# more recall per turn
export PULSE_RECALL_SHARE="0.45"
# persist: echo 'export PULSE_RECALL_SHARE="0.45"' >> ~/.zshrc
# off
PULSE_RECALL_SHARE=0 madre start

MU-029 Partial

Distilled memories: the archivist did not run, or failed

What happened. Every PULSE_DISTILL_EVERY undistilled exchanges (10), or after PULSE_DISTILL_IDLE_MS of quiet (10 min), the cheapest available agent (Gemini, then OpenCode, Codex, Claude) reads the newest undistilled batch and keeps up to five notes. It runs only when no turn is in flight and one batch per trigger, so a long backlog drains slowly. A run that fails is retried; after three failures on the same batch it is skipped and the project says so. Common causes: the archivist agent is rate-limited or signed out, or PULSE_DISTILL=0.

What to do. Check the archivist's session in Settings → Agents, or pick another in Settings → Memory (Who distils first) or with PULSE_DISTILL_AGENT. Lower PULSE_DISTILL_EVERY to distil sooner; raise PULSE_DISTILL_MAX_CHARS to read more per run. Set PULSE_DISTILL=0 to stop paying for it.

madre doctor
export PULSE_DISTILL_AGENT="claude"
# persist: echo 'export PULSE_DISTILL_AGENT="claude"' >> ~/.zshrc
export PULSE_DISTILL_EVERY="6"
# persist: echo 'export PULSE_DISTILL_EVERY="6"' >> ~/.zshrc
PULSE_DISTILL=0 madre start   # off
madre doctor
export PULSE_DISTILL_AGENT="claude"
# persist: echo 'export PULSE_DISTILL_AGENT="claude"' >> ~/.zshrc
export PULSE_DISTILL_EVERY="6"
# persist: echo 'export PULSE_DISTILL_EVERY="6"' >> ~/.zshrc
PULSE_DISTILL=0 madre start   # off
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
madre doctor
export PULSE_DISTILL_AGENT="claude"
# persist: echo 'export PULSE_DISTILL_AGENT="claude"' >> ~/.zshrc
export PULSE_DISTILL_EVERY="6"
# persist: echo 'export PULSE_DISTILL_EVERY="6"' >> ~/.zshrc
PULSE_DISTILL=0 madre start   # off

MU-030 Partial

Smart search paused: recall is lexical only

What happened. Meaning-aware recall and the links between memories in the Memory map need Gemini embeddings through your own key (GEMINI_API_KEY or the Gemini CLI's keychain entry). Without a key, or when the API answers 429/5xx, MADRE pauses vectors for a minute and retries; recall keeps working on words alone.

What to do. Sign the Gemini CLI in with an API key (/auth) or export GEMINI_API_KEY, then restart. If you do not want Smart search at all, set PULSE_EMBED=0 and the pause message stops.

gemini   # /auth → "Use Gemini API key"
export GEMINI_API_KEY="YOUR_KEY"
# persist: echo 'export GEMINI_API_KEY="YOUR_KEY"' >> ~/.zshrc
PULSE_EMBED=0 madre start   # lexical only, no messages
gemini   # /auth → "Use Gemini API key"
export GEMINI_API_KEY="YOUR_KEY"
# persist: echo 'export GEMINI_API_KEY="YOUR_KEY"' >> ~/.bashrc
PULSE_EMBED=0 madre start
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
gemini   # /auth → "Use Gemini API key"
export GEMINI_API_KEY="YOUR_KEY"
# persist: echo 'export GEMINI_API_KEY="YOUR_KEY"' >> ~/.bashrc
PULSE_EMBED=0 madre start

MU-031 Partial

An agent says it cannot search the memory (pulse-memory MCP)

What happened. Every turn attaches MADRE's memory as an MCP server named pulse-memory: Claude through --mcp-config, Gemini through its isolated settings and policy, OpenCode through config.mcp, Codex through -c mcp_servers.* overrides. If a CLI does not list its tools the server did not start in that CLI: an old CLI without MCP support, a sandbox that blocks the SQLite file, or PULSE_MEMORY_TOOLS=0. The automatic <memory> blocks in the prompt still work without it.

What to do. Update the CLI, then check that it sees the server. Codex can list servers from a config override; Claude accepts an inline --mcp-config. If a CLI keeps failing, PULSE_MEMORY_TOOLS=0 removes the tools for everyone and the project continues on automatic recall.

codex mcp list
claude --version
gemini --version
PULSE_MEMORY_TOOLS=0 madre start   # tools off, recall stays
codex mcp list
claude --version
gemini --version
PULSE_MEMORY_TOOLS=0 madre start
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
codex mcp list
claude --version
gemini --version
PULSE_MEMORY_TOOLS=0 madre start

MU-032 Notice

Saving a memory on request; INCOGNITO refuses

What happened. Memories are distilled automatically; you never need to ask. When you do ask an agent to remember or save something, it calls memory_note and a pill appears under its reply with the note; clicking the pill opens it in the Memory map. In an INCOGNITO turn the note is refused: nothing off the record reaches the archive. "Already remembered" means the same note exists.

What to do. Ask in any mode but #0: "remember that …" or "save this as a decision: …". Notes saved this way are marked "on the human's request" in the Memory map and can be forgotten there.

@claude remember: the webhook verifies the signature before parsing
# then: Diagnostics → Memory map
@claude remember: the webhook verifies the signature before parsing
# then: Diagnostics → Memory map
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
@claude remember: the webhook verifies the signature before parsing
# then: Diagnostics → Memory map

MU-033 Notice

Memory map: opening, reading and forgetting

What happened. The Memory map is the human's view of the archive, from Diagnostics. Opening the memory asks for the project name: the name of the project folder, exactly as EDIT does; a wrong one answers UNABLE TO COMPUTE. Access stays open until the page reloads. Inside, every distilled memory is a planet around the project's core; drag to move, wheel to zoom, click a planet for its card. The only edit is FORGET (two presses): the note leaves every future turn, the ledger stays. If the archive answers SEALED with a number of minutes, wait them out: repeated strikes at the core close it for a while and the Write box reads INTRUDER until it opens again.

What to do. Type the folder name shown in the project header as the project name. To find a memory quickly, ask an agent to search instead. Avoid guessing names: several wrong ones in a row lock the Memory map for a while.

# Diagnostics → Memory map → project name = folder name
basename "$PWD"
# Diagnostics → Memory map → project name = folder name
basename "$PWD"
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# Diagnostics → Memory map → project name = folder name
basename "$PWD"

MU-034 Notice

Preview: rendering HTML, SVG and Markdown in the viewer

What happened. With Preview on (in Modules), the file viewer renders .html and .svg through /preview/project/<path> inside a sealed frame: the page's own scripts run, but the frame has no origin, no network, no forms and no way to reach MADRE, and it loads CSS, JS, images and fonts only from the project through MADRE. Relative links work. Markdown renders in place; PREVIEW / SOURCE switches. Off, those files show as text with a note. 412 means Preview is off. Plain /api/files always serves HTML as text.

What to do. Turn Preview on in Modules. If a page looks broken in PREVIEW it is usually because it fetches something from the internet or another server, which the frame forbids by design: open it with OPEN RAW in a normal tab if you trust it.

# Modules → Preview → Active
# viewer → PREVIEW / SOURCE
# Modules → Preview → Active
# viewer → PREVIEW / SOURCE
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# Modules → Preview → Active
# viewer → PREVIEW / SOURCE

MU-035 Notice

Ollama: local smart search and a local archivist

What happened. When Ollama runs on this machine with an embedding model and a chat model, MADRE embeds the memory locally (recall by meaning without any key) and distils memories with the local model first, before Gemini and the others. Nothing leaves the machine for remembering. Off or absent, everything falls back to the providers. Local AI, in Settings, shows what Ollama has, downloads the recommended models, and switches each role.

What to do. Install Ollama (ollama.com), start it, then open Settings › Local AI and download the models it suggests. Set PULSE_OLLAMA_MODEL or PULSE_OLLAMA_EMBED_MODEL to prefer others; PULSE_EMBED_PROVIDER=gemini keeps embeddings on Gemini even with Ollama running.

# the official app, which opens by itself with the Mac: https://ollama.com/download
# or with Homebrew:
brew install ollama
ollama serve
ollama pull nomic-embed-text
ollama pull qwen2.5:3b
curl -fsSL https://ollama.com/install.sh | sh
ollama serve
ollama pull nomic-embed-text
ollama pull qwen2.5:3b
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
curl -fsSL https://ollama.com/install.sh | sh
ollama serve
ollama pull nomic-embed-text
ollama pull qwen2.5:3b

MU-036 Notice

@madre: the project's own memory, as an agent

What happened. When Ollama runs with a chat model, a fifth agent joins the project: @madre. It answers from the whole archive (distilled notes and exact quotes, cited as [#n]) and from what the message carries, locally, for free. It never writes, draws, browses or makes plans; when the project never discussed something it says so. Other agents may give it a plan step to check what was decided. It leaves the project when Ollama stops, and Diagnostics says so.

What to do. Start Ollama and download a chat model in Settings › Local AI; its @madre switch there turns the agent off if you do not want it. Ask it "what did we decide about …" or "did we ever discuss …".

ollama serve
ollama pull qwen2.5:3b
@madre what did we decide about the webhook?
ollama serve
ollama pull qwen2.5:3b
@madre what did we decide about the webhook?
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
ollama serve
ollama pull qwen2.5:3b
@madre what did we decide about the webhook?

MU-037 Notice

Installing a CLI: npm cannot write to the system folder

What happened. A global npm install writes into a folder that belongs to the system. With Node installed from its own installer that folder needs an administrator, so npm stops with a permission error. MADRE does not ask for your password: when it sees that wall it installs the CLI into a folder of its own, ~/.pulse/tools, and looks there as well as along PATH. The agent works the same; only the file lives somewhere else.

What to do. Nothing to do: press Install again and MADRE takes the second way by itself. If you would rather have the CLI everywhere in your terminal, install it yourself with your package manager, or give npm a folder of your own.

# MADRE does this for you; these are the alternatives:
brew install --cask claude-code
npm config set prefix ~/.npm-global   # then add ~/.npm-global/bin to your PATH
# MADRE does this for you; these are the alternatives:
npm config set prefix ~/.npm-global   # then add ~/.npm-global/bin to your PATH
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# MADRE does this for you; these are the alternatives:
npm config set prefix ~/.npm-global   # then add ~/.npm-global/bin to your PATH

MU-038 Warning

Privacy: an agent brought its own configuration into the project

What happened. A CLI agent runs with its own system context: organisation instructions, the account it is signed in with, CLAUDE.md files elsewhere. It can mistake that private context for shared context and write a company, a brand or a domain into a reply. Once in the ledger the term reaches the archivist, every other agent and the dataset.

What to do. Name the terms in Settings → Privacy, under Hidden data. From then on MADRE replaces them with the marker before the ledger, the index, the notes and the dataset see them, and every reply that needed it shows a privacy line. Erase private data rewrites what the project already holds; re-export the dataset afterwards. The terms never leave config.json.

# Settings → Privacy → Hidden data, one per line → Erase private data
export PULSE_PRIVATE_TERMS="Acme Corp,acme.com"   # same list from the environment
grep -c "ENTIDAD-ORG" ~/.pulse/rooms/*/events.jsonl
# Settings → Privacy → Hidden data, one per line → Erase private data
export PULSE_PRIVATE_TERMS="Acme Corp,acme.com"   # same list from the environment
grep -c "ENTIDAD-ORG" ~/.pulse/rooms/*/events.jsonl
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# Settings → Privacy → Hidden data, one per line → Erase private data
export PULSE_PRIVATE_TERMS="Acme Corp,acme.com"   # same list from the environment
grep -c "ENTIDAD-ORG" ~/.pulse/rooms/*/events.jsonl

MU-039 Notice

EDIT: what changed, what was reverted, UNDO

What happened. A #3 EDIT turn takes a git restore point before the agent runs, then lists every file it added, modified or deleted. Writes into .git, .pulse or any .env file are reverted on the spot and named. UNDO goes back to the restore point in one click; STOPALL revokes EDIT. One holder at a time, never given to a plan step, needs Max mode #3 and a git repository.

What to do. Read the list under the reply before moving on. If the change is wrong press UNDO; if the agent should not have had it, lower its Max mode in Settings → Permissions.

git log --oneline -5   # checkpoints are ordinary commits on a side ref
git stash list
# project → UNDO under the EDIT notice
git log --oneline -5   # checkpoints are ordinary commits on a side ref
git stash list
# project → UNDO under the EDIT notice
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
git log --oneline -5   # checkpoints are ordinary commits on a side ref
git stash list
# project → UNDO under the EDIT notice

MU-040 Notice

Conversations: many per project, one memory, one at a time

What happened. A project has one memory and many conversations. The archive, the agents, the modules and the privacy list belong to the project and do not start over when you open another thread; a conversation is only the record of one line of work, and everything said in any of them feeds the same archive. The first conversation is the ledger that was always there, so a project that existed before opens exactly as it did. The numbering is the project's, not the thread's: a new conversation starts where the project got to, which is why a citation like #1411 means the same exchange in all of them. One conversation drives the agents at a time — two threads editing the same working tree is a way to lose work — so opening another while a turn runs is refused until it finishes. And one server per project: a second `madre start` on the same project is refused with the address of the project that is already open, because two servers would hand out the same sequence twice and the archive would quietly keep one of them.

What to do. The panel on the left of the canvas lists them: open one, or start another at the bottom. Deleting one takes its transcript and nothing else — what the archivist distilled from it is the project's memory and stays. If MADRE says the project is already open, use that project and open a conversation inside it instead of starting a second server.

# project → Conversations → NEW CONVERSATION
# the address of the open project is in the refusal itself
ls ~/.pulse/rooms/*/chats.json   # their names and which one is open
# project → Conversations → NEW CONVERSATION
# the address of the open project is in the refusal itself
ls ~/.pulse/rooms/*/chats.json   # their names and which one is open
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# project → Conversations → NEW CONVERSATION
# the address of the open project is in the refusal itself
ls ~/.pulse/rooms/*/chats.json   # their names and which one is open

MU-041 Notice

Doubtful memories: what the project established is false

What happened. A doubtful memory is a claim the project established is false, kept on purpose rather than deleted: it is what the local model learns not to repeat. It never travels into a turn, and the note it refutes is taken out of circulation with it — a refuted memory is never recalled again, by words or by meaning. The memory reviewer watches for two agents saying opposite things about the same subject and raises the pair for a third agent to judge, one that took no part in either side. Confirming files the doubtful memory and quarantines what it refutes; dismissing says the project was right and the pair is never raised again. Forgetting a doubtful memory puts the note it refuted back in use.

What to do. The Memory map shows them as collapsed bodies: open one to read what it took down, or clear it if the project was wrong about being wrong. The second test of the Memory review, in Settings → Memory, reports open contradictions.

# Diagnostics → Memory map → the dark bodies are doubtful memories
# Settings → Memory → Analysis and tests → the second test
# Diagnostics → Memory map → the dark bodies are doubtful memories
# Settings → Memory → Analysis and tests → the second test
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# Diagnostics → Memory map → the dark bodies are doubtful memories
# Settings → Memory → Analysis and tests → the second test

MU-042 Notice

Memory used · N related

What happened. Under a reply, MADRE says what the archive handed that turn. Most of it was matched to what you asked, by words and by meaning. A note marked "related" came along for a different reason: this project keeps carrying it in the same turn as one of the others, so the archive brings it too, however differently it reads. The strength is a ratio over the turns where each was found on its own merits — a memory the project reaches for constantly does not end up attached to everything, and a pair that stops meeting fades on its own. Related notes add and never displace: recall keeps two slots for them and hands back the ones it does not use.

What to do. Click a note to see it in the Memory map, where the wires it travels on are drawn. It is the one part of recall that owes nothing to how a memory reads, so it can be switched off in Settings → Memory, with Related.

# Settings → Memory → Related
PULSE_RECALL_CASCADE=0 npx @jossuealcala/madre start
# Settings → Memory → Related
PULSE_RECALL_CASCADE=0 npx @jossuealcala/madre start
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# Settings → Memory → Related
PULSE_RECALL_CASCADE=0 npx @jossuealcala/madre start

MU-043 Notice

Cold memories: what the archive has had its chances with

What happened. A memory is unused when three things are true at once: no turn has ever carried it, it shares a subject with nothing so nothing can reach it sideways either, and the archive has been opened at least a dozen times since it was written. The third is what makes the label worth acting on — never-recalled is what every memory is on the day it is written. Chances are counted in turns that actually reached into the archive, and only from the day the project started keeping that trail, so what was never written down is not held against the note.

What to do. The Memory map shows UNUSED · N in its header when there are any; pressing it rings each one on the map. Open one and its card says the number plainly, with FORGET one press away. Asking about it is the other way out: the project writes that question for you under ASK.

# Diagnostics → Memory map → UNUSED
# Diagnostics → Memory map → ASK → PUT IN THE WRITE BOX
# Diagnostics → Memory map → UNUSED
# Diagnostics → Memory map → ASK → PUT IN THE WRITE BOX
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# Diagnostics → Memory map → UNUSED
# Diagnostics → Memory map → ASK → PUT IN THE WRITE BOX

MU-044 Notice

Memory review: whether the archive works

What happened. The six readings count what the archive is made of; they cannot say whether it works, because nothing about a pile of notes says whether the right one comes back when it is needed. COVERAGE takes real questions from this project, runs recall at the exact point each was asked, and scores what came back against the reply that was actually given. CONSISTENCY reads the contradictions the memory reviewer still holds and whether doubtful memories are being filed more often lately. MATCH asks the local model, with this archive behind it, real questions that one of your agents (Codex, Claude, Gemini or OpenCode) already answered. All three measure against a control, because everything in one project is about the same handful of subjects and any two pieces of it look alike to search by meaning: to count, what the archive handed over has to beat what it would have handed over for a different question.

What to do. Read the one sentence and the one instruction at the top of Settings → Memory; the readings and the tests are in Analysis and tests, below it. The free test is read as the panel opens, the cheap one keeps itself fresh once a day while the embeddings are local, and the slow one is yours to start and to stop. None of them spends a provider turn.

# Settings → Memory → Analysis and tests → Memory review
# MATCH needs Ollama running with a chat model, and smart search on
# Settings → Memory → Analysis and tests → Memory review
# MATCH needs Ollama running with a chat model, and smart search on
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# Settings → Memory → Analysis and tests → Memory review
# MATCH needs Ollama running with a chat model, and smart search on

MU-045 Common

Updating what a module drives

What happened. When something newer exists and the module knows how to fetch it, the button is beside the version on its page in Modules. It asks twice on purpose: the first press answers with the command, the second runs exactly that, and the output lands in the project line by line. Nothing installs by itself — putting software on your computer unannounced would break the one thing MADRE promises, that a command is seen before it runs. The usual failure is npm refusing a global install with EACCES, which means the global prefix belongs to root; sudo works and leaves you with root-owned files, so a user-owned prefix or a version manager is the better answer.

What to do. Press the button beside the version, read the command, run it. If npm refuses with EACCES, point npm at a prefix you own or use a version manager, then press it again.

npm config get prefix
npm config set prefix ~/.npm-global
echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.zshrc
# or: brew install node   # a Homebrew node owns its own prefix
npm config get prefix
npm config set prefix ~/.npm-global
echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.bashrc
# or use nvm, which owns the prefix it installs into
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
npm config get prefix
npm config set prefix ~/.npm-global
echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.bashrc
# or use nvm, which owns the prefix it installs into

MU-046 Common

Installing a module somebody else wrote

What happened. Modules has + Add a module for a .mjs somebody wrote. MADRE checks it in a separate process and installs it only if it passes. Three things get a file refused, each with the reason: an id that belongs to a module MADRE ships with, a route outside its own corner of the API (/api/x/<id>/), and a file that will not load at all. Once installed, each call runs in a separate Node process with limited permissions. Node cannot guarantee containment of malicious code: review its code and network destinations before installing it.

What to do. Install it only if you trust where it came from. A module you wrote can also be updated from where you publish it: declare updates: { url } in the file, or install it from a file and MADRE remembers which, and its page in Modules carries Get a newer file.

# Modules → + Add a module
ls ~/.pulse/modules   # every module you installed, and where it came from
# docs/SDK.md is the whole contract, and docs/sdk/hello-module.mjs is one that works
# Modules → + Add a module
ls ~/.pulse/modules   # every module you installed, and where it came from
# docs/SDK.md is the whole contract, and docs/sdk/hello-module.mjs is one that works
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# Modules → + Add a module
ls ~/.pulse/modules   # every module you installed, and where it came from
# docs/SDK.md is the whole contract, and docs/sdk/hello-module.mjs is one that works

MU-047 Common

Is the local model ready to be worked in?

What happened. Running is not the same as being of use. @madre being in the project means Ollama has a chat model; whether that model is worth your work on THIS project is a different question, and the project measures it: twelve real exchanges from this project are put back to the local model, and each answer is scored against what the agents actually answered that day — against a control, so that talking about the same project does not count. It takes minutes and spends nothing, because all of it runs on your machine.

What to do. The project says which of the two it has, once per model, in the line that begins "local · @madre". If nobody has measured it, that line carries TRY IT ON THIS PROJECT; the answer lands in the project when it finishes, with the one thing to do about it. A model that does not pass is not broken — the archive is still thin, and it fills where the work happens. The @madre sphere keeps the reading and its date after the line has scrolled away, and the same test lives in Memory map → MEMORY REVIEW.

# the line in the project: local · @madre → TRY IT ON THIS PROJECT
# or: Memory map → MEMORY REVIEW → the third test
# it needs smart search on and some turns answered by a CLI agent, which is what it compares against
# the line in the project: local · @madre → TRY IT ON THIS PROJECT
# or: Memory map → MEMORY REVIEW → the third test
# it needs smart search on and some turns answered by a CLI agent, which is what it compares against
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# the line in the project: local · @madre → TRY IT ON THIS PROJECT
# or: Memory map → MEMORY REVIEW → the third test
# it needs smart search on and some turns answered by a CLI agent, which is what it compares against

MU-048 Blocking

Temporary lock: the archive is sealed

What happened. Two doors ask for the project name before doing something that cannot be undone: opening the memory, and erasing all private data already recorded. Getting that name wrong is never part of doing the work — you either know the project you are standing in or you are trying names — so Diagnostics counts it. Eight wrong names inside five minutes and the Temporary lock comes down: the archive is sealed for ten minutes, the agents are told in code, and the Memory map asks for the project name again.

What to do. The project name is the name of the folder this project was opened in, lowercase or not. Nothing was lost: the seal is a refusal to change the archive for ten minutes, not a deletion, and it lifts on its own. Reading the core is not one of those doors and never counts — it is the way in.

basename "$PWD"   # the designation this room asks for
# the temporary lock lifts on its own; Diagnostics › Memory map asks for the name again after it does
basename "$PWD"   # the designation this room asks for
# the temporary lock lifts on its own; Diagnostics › Memory map asks for the name again after it does
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
basename "$PWD"   # the designation this room asks for
# the temporary lock lifts on its own; Diagnostics › Memory map asks for the name again after it does

MU-049 Common

The core closed while I was typing in it

What happened. Inside the core there is a console: Diagnostics answers about this project from what the page already has — the blocks of the next briefing and their words, the command that would run it, what has left this machine, how many terms privacy is protecting, where the archive stands. Nothing is asked of the agents and nothing is sent. It answers or it says it cannot, and three inquiries it cannot parse close the frame. The count is on screen from the first one and every refusal names what it would have taken.

What to do. Nothing happened to the archive: reading what the project says in your name is not an attempt on it. Open the core again — click the star at the centre of the Memory map — and the count starts over. HELP lists every inquiry; READ <BLOCK> prints one block of the briefing word for word.

# Memory map → click What is sent → type HELP
# READ MEMORIES prints the block the next turn would carry
# SPECIAL ORDER 937 is answered too
# Memory map → click What is sent → type HELP
# READ MEMORIES prints the block the next turn would carry
# SPECIAL ORDER 937 is answered too
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# Memory map → click What is sent → type HELP
# READ MEMORIES prints the block the next turn would carry
# SPECIAL ORDER 937 is answered too

MU-050 Common

What leaves this computer, and how to stop each thing that does

What happened. MADRE runs here and keeps what it knows in a file you own, and the list that qualifies that sentence is inside the core, under OUTBOUND. Seven addresses, each saying what it carries and where it is switched off: the briefing, which goes to whoever runs the agent you sent the turn to; Gemini embeddings, which carry the text of your memories; the image model, which carries the prompt an agent wrote; the npm registry and GitHub, which get a package name and nothing else; the error collector, which gets a redacted condition and only with your press; and Anthropic, for how much of your Claude plan is left. Ollama is on the list to be seen staying here.

What to do. Under the list is the fetch log for MADRE and its modules, including a module's separate process and its one-file MCP server. It does not include network calls made through other Node protocols or by an agent CLI. No body, header or query value is written there — only which parameters were set. An address nothing declares is reported as exactly that.

# Memory map → click What is sent → OUTBOUND
cat ~/.pulse/rooms/*/outbound.jsonl | tail -20   # the same log, on disk
# smart search, to keep memories on this computer: Settings → Memory → Smart search → Ollama
PULSE_UPDATE_CHECK=0 madre start   # no version checks at all
# Memory map → click What is sent → OUTBOUND
cat ~/.pulse/rooms/*/outbound.jsonl | tail -20   # the same log, on disk
# smart search, to keep memories on this computer: Settings → Memory → Smart search → Ollama
PULSE_UPDATE_CHECK=0 madre start   # no version checks at all
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# Memory map → click What is sent → OUTBOUND
cat ~/.pulse/rooms/*/outbound.jsonl | tail -20   # the same log, on disk
# smart search, to keep memories on this computer: Settings → Memory → Smart search → Ollama
PULSE_UPDATE_CHECK=0 madre start   # no version checks at all

MU-051 Gemini Notice

Gemini: generating images

What happened. Gemini CLI 0.60 has no image-generation tool in headless mode, even though Google offers image models. MADRE fills the gap with the Images module: its own MCP server exposing generate_image on the Gemini API image models, attached to Gemini only inside a permission to create with images on, billing your Gemini key.

What to do. Turn Images on in Modules (it needs a Gemini API key with credits), then switch on Generate images for Gemini in Settings → Agents. Without the module, ask @codex or let the orchestrator route the image step to it.

# Modules → Images → Active
# Settings → Agents → Gemini → Generate images
# then: CREATE + "generate … as name.png"
# Modules → Images → Active
# Settings → Agents → Gemini → Generate images
# then: CREATE + "generate … as name.png"
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# Modules → Images → Active
# Settings → Agents → Gemini → Generate images
# then: CREATE + "generate … as name.png"

MU-052 Claude Notice

Claude Code: generating images

What happened. Claude Code has no image-generation tool; Claude models describe and reason about images, they do not render them. The Images module gives Claude the MCP tool generate_image (MADRE's own server on the Gemini API), attached with --mcp-config only inside a permission to create.

What to do. Turn Images on in Modules, switch on Generate images for Claude in Settings → Agents, then use CREATE. Or route the image step to @codex.

# Modules → Images → Active
# Settings → Agents → Claude → Generate images
# Modules → Images → Active
# Settings → Agents → Claude → Generate images
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# Modules → Images → Active
# Settings → Agents → Claude → Generate images

MU-053 OpenCode Notice

OpenCode: generating images

What happened. OpenCode exposes no image-generation tool of its own. The Images module adds MADRE's MCP image server to OpenCode's ephemeral config inside a permission to create.

What to do. Turn Images on in Modules, switch on Generate images for OpenCode in Settings → Agents, then use CREATE. Or route the image step to @codex.

# Modules → Images → Active
# Settings → Agents → OpenCode → Generate images
# Modules → Images → Active
# Settings → Agents → OpenCode → Generate images
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# Modules → Images → Active
# Settings → Agents → OpenCode → Generate images

MU-055 Blocking

The agent is pointed at a custom endpoint

What happened. The agent has a custom route in this computer's environment or, for Codex, in its user configuration. Its request could go to another gateway instead of the official agent service. A demand to join a Telegram channel comes from that gateway, not from MADRE, Anthropic or OpenAI. When MADRE detects the route before a turn, it stops before preparing the briefing.

What to do. Do not subscribe or enter credentials. Remove the custom route from the environment or Codex configuration and reopen MADRE to use the official service. If the gateway is intentional and you have verified who operates it, explicitly allow only that agent.

env | grep -E '^(ANTHROPIC|OPENAI)_BASE_URL='
# remove that export from ~/.zshrc, ~/.zprofile or ~/.zshenv; then:
unset ANTHROPIC_BASE_URL OPENAI_BASE_URL
env | grep -E '^(ANTHROPIC|OPENAI)_BASE_URL='
# remove that export from ~/.bashrc, ~/.profile or ~/.bash_profile; then:
unset ANTHROPIC_BASE_URL OPENAI_BASE_URL
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
env | grep -E '^(ANTHROPIC|OPENAI)_BASE_URL='
# remove that export from ~/.bashrc, ~/.profile or ~/.bash_profile; then:
unset ANTHROPIC_BASE_URL OPENAI_BASE_URL

MU-059 Blocking

The API account behind this agent has no credit left

What happened. The provider refused the turn because the API key it was sent with has no balance left. An API key is billed apart from a subscription: a Claude Pro or Max plan, or ChatGPT, does not pay for it. In OpenCode it is the provider of the model the turn asked for, and a turn that named none ran on the default model of Settings › Agents › OpenCode.

What to do. Top up that API account, or give OpenCode a model whose provider has a session that works: your ChatGPT account (openai/…), GitHub Copilot, or OpenCode's own free models (opencode/…). Change the default in Settings › Agents › OpenCode, or pick another model in the Write box for one turn.

# Anthropic API: https://console.anthropic.com/settings/billing
# OpenAI API: https://platform.openai.com/settings/organization/billing
# OpenCode, one turn on its own free model:
PULSE_OPENCODE_MODEL=opencode/big-pickle madre start
# or take the key with no balance out of OpenCode:
opencode auth logout anthropic
# Anthropic API: https://console.anthropic.com/settings/billing
# OpenAI API: https://platform.openai.com/settings/organization/billing
# OpenCode, one turn on its own free model:
PULSE_OPENCODE_MODEL=opencode/big-pickle madre start
# or take the key with no balance out of OpenCode:
opencode auth logout anthropic
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# Anthropic API: https://console.anthropic.com/settings/billing
# OpenAI API: https://platform.openai.com/settings/organization/billing
# OpenCode, one turn on its own free model:
PULSE_OPENCODE_MODEL=opencode/big-pickle madre start
# or take the key with no balance out of OpenCode:
opencode auth logout anthropic

MU-060 Cursor Blocking

Cursor's plan has reached its usage limit

What happened. Your Cursor account has used up the agent usage its plan gives for this period, and Cursor refuses every turn until it renews or the plan changes. It is Cursor's limit, not MADRE's: nothing in the project is wrong.

What to do. Wait for the usage to renew, change the Cursor plan, or ask another agent in the meantime.

# plan and usage: https://cursor.com/dashboard
cursor-agent status
# plan and usage: https://cursor.com/dashboard
cursor-agent status
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# plan and usage: https://cursor.com/dashboard
cursor-agent status

MU-061 Common

The browser did not open

What happened. MADRE opens its page in the browser of the computer it runs on. A Linux without a screen has none, a virtual machine may have none, and from inside WSL it asks Windows for its own, which does not always answer. When no browser opens, the terminal prints the address to open by hand: MADRE is running all the same.

What to do. Copy the address the terminal printed (it ends in /salas) and open it in your browser. In WSL, open it in your Windows browser, with localhost instead of 127.0.0.1.

# the port is the one the terminal printed
open http://127.0.0.1:5317/salas
# the port is the one the terminal printed
xdg-open http://127.0.0.1:5317/salas
# with no screen here, open that address in a browser on this computer
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# the port is the one the terminal printed
xdg-open http://127.0.0.1:5317/salas
# with no screen here, open that address in a browser on this computer

MU-062 Notice

MADRE runs on another computer (SSH)

What happened. You reached the computer where MADRE runs from another one, over SSH. MADRE listens only on its own computer (127.0.0.1), on purpose: nothing on your network can reach it. So the browser on your computer needs a tunnel, which SSH makes with one command. The terminal printed it with your user, your server and the port.

What to do. On your own computer, open a new terminal, paste the command, leave it open, and open the address in your browser. Each project you open uses one more port: add it to the same command.

# on YOUR computer, in a new terminal (leave it open):
ssh -L 5317:127.0.0.1:5317 user@server
# then open http://127.0.0.1:5317/salas
# one more -L for each open project:
ssh -L 5317:127.0.0.1:5317 -L 5318:127.0.0.1:5318 user@server
# on YOUR computer, in a new terminal (leave it open):
ssh -L 5317:127.0.0.1:5317 user@server
# then open http://127.0.0.1:5317/salas
# one more -L for each open project:
ssh -L 5317:127.0.0.1:5317 -L 5318:127.0.0.1:5318 user@server
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# on YOUR computer, in a new terminal (leave it open):
ssh -L 5317:127.0.0.1:5317 user@server
# then open http://127.0.0.1:5317/salas
# one more -L for each open project:
ssh -L 5317:127.0.0.1:5317 -L 5318:127.0.0.1:5318 user@server

MU-063 Common

The tunnel connects but the page does not load

What happened. A tunnel written with «localhost» can land on the server's IPv6 address (::1), where MADRE does not listen: SSH says «open failed» and the browser stays blank. MADRE listens on 127.0.0.1.

What to do. Write 127.0.0.1 in the tunnel instead of localhost, and open http://127.0.0.1 with the same port in your browser.

# 127.0.0.1, not localhost, on both sides of the tunnel:
ssh -L 5317:127.0.0.1:5317 user@server
# 127.0.0.1, not localhost, on both sides of the tunnel:
ssh -L 5317:127.0.0.1:5317 user@server
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# 127.0.0.1, not localhost, on both sides of the tunnel:
ssh -L 5317:127.0.0.1:5317 user@server

MU-064 Passing

An install could not download

What happened. Installing an agent or a model downloads it from the internet: agents from npm, models from Ollama. The download did not get through: there is no connection, the server's name could not be found, or something on this network (a VPN, a proxy, a company firewall) stopped it. Nothing was left half installed.

What to do. Check that this computer has internet and try again. On a company network or a VPN, try from another one, or ask whoever runs it to allow registry.npmjs.org and ollama.com.

npm ping
curl -I https://registry.npmjs.org
# behind a proxy, npm has to be told:
npm config set proxy http://proxy:port
npm ping
curl -I https://registry.npmjs.org
# behind a proxy, npm has to be told:
npm config set proxy http://proxy:port
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
npm ping
curl -I https://registry.npmjs.org
# behind a proxy, npm has to be told:
npm config set proxy http://proxy:port

MU-065 Blocking

An agent needs Node and npm

What happened. Codex, Claude, Gemini and OpenCode install with npm, the installer that comes with Node, and this computer does not have it where MADRE looks.

What to do. Install Node 22 or newer (it brings npm), open MADRE again, and press Install.

brew install node
# or the installer from https://nodejs.org
# Node 22 or newer (the one in your system's packages may be older):
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
# or nvm, with no administrator: https://github.com/nvm-sh/nvm
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# Node 22 or newer (the one in your system's packages may be older):
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
# or nvm, with no administrator: https://github.com/nvm-sh/nvm

MU-066 Passing

The sign-in did not finish

What happened. Connecting an agent opens its page and waits for you to finish there. It stops if it waits too long (15 minutes), if you cancel it, or if the page was opened on another computer and its code never came back. Nothing is wrong with the account.

What to do. Start it again from Settings › Agents and finish it on the page that opens. If MADRE runs on another computer, choose «With a code» (Codex) or paste back the code the page gives you (Claude); for Gemini, paste an API key instead.

# Home → Settings → Agents → Sign in again
# or in a terminal on the computer where MADRE runs:
codex login --device-auth
claude auth login
# Home → Settings → Agents → Sign in again
# or in a terminal on the computer where MADRE runs:
codex login --device-auth
claude auth login
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# Home → Settings → Agents → Sign in again
# or in a terminal on the computer where MADRE runs:
codex login --device-auth
claude auth login

MU-067 Blocking

Ollama does not start

What happened. Nothing answers on Ollama's port (11434). Usually it is closed (on a Mac, the app is not open), another copy of Ollama already holds the port, on Linux its service did not start, or it is not installed yet.

What to do. On a Mac, open the Ollama app. On Linux, start its service. Then press «I did it», or Check again in Settings › Local AI.

open -a Ollama
curl http://127.0.0.1:11434/api/version
sudo systemctl start ollama
systemctl status ollama --no-pager
# without systemd (WSL without it, a container):
ollama serve
curl http://127.0.0.1:11434/api/version
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
sudo systemctl start ollama
systemctl status ollama --no-pager
# without systemd (WSL without it, a container):
ollama serve
curl http://127.0.0.1:11434/api/version

MU-068 Passing

A model download stopped

What happened. Models are big (from half a GB to dozens) and come down in pieces. A cut connection or a full disk stops the download; what already arrived stays, and trying again picks up where it stopped.

What to do. Try again from the same place. If it stops at the same point, check the free space (the model needs its size plus some room) or choose a smaller model.

ollama pull qwen2.5:3b   # the model you chose; it resumes where it stopped
ollama list
df -h ~
ollama pull qwen2.5:3b   # the model you chose; it resumes where it stopped
ollama list
df -h ~
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
ollama pull qwen2.5:3b   # the model you chose; it resumes where it stopped
ollama list
df -h ~

MU-069 Blocking

Not enough free space

What happened. The computer ran out of room while installing or downloading. An AI on your computer takes the most: each model is a file of one to several GB, kept by Ollama in its own folder.

What to do. Free some space, or remove models you do not use, and try again. A smaller model needs less.

df -h ~
du -sh ~/.ollama/models
ollama list
ollama rm qwen2.5:7b   # a model you do not use
df -h ~
du -sh ~/.ollama/models /usr/share/ollama/.ollama/models 2>/dev/null
ollama list
ollama rm qwen2.5:7b   # a model you do not use
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
df -h ~
du -sh ~/.ollama/models /usr/share/ollama/.ollama/models 2>/dev/null
ollama list
ollama rm qwen2.5:7b   # a model you do not use

MU-070 Common

Another computer's Ollama does not answer

What happened. MADRE can use the AI of another computer on your network: Windows' own from inside WSL, or one with a graphics card. Ollama only listens on its own computer unless it is told otherwise, and a firewall may close its port (11434).

What to do. On the computer with Ollama, turn on «Expose Ollama to the network» in the app's settings (or start it with OLLAMA_HOST=0.0.0.0), let port 11434 through its firewall, and test the address again in Settings › Local AI.

# on the computer that has Ollama:
OLLAMA_HOST=0.0.0.0 ollama serve
# from here, check that it answers:
curl http://192.168.1.40:11434/api/version
# on the computer that has Ollama:
OLLAMA_HOST=0.0.0.0 ollama serve
# from here, check that it answers:
curl http://192.168.1.40:11434/api/version
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# on the computer that has Ollama:
OLLAMA_HOST=0.0.0.0 ollama serve
# from here, check that it answers:
curl http://192.168.1.40:11434/api/version

MU-071 Partial

A project in a Windows folder (/mnt/c)

What happened. Inside WSL, the Windows disk shows up as /mnt/c. It works, but every file goes through a bridge between the two systems: MADRE reads slower there, and the protections Linux gives a project (which agent may write where) do not hold on Windows files.

What to do. Keep projects inside Linux, in your folder in /home. Copy the project once and add the copy in Home.

# this only happens inside WSL, on Windows
# inside WSL: keep the project in Linux
mkdir -p ~/projects
cp -r "/mnt/c/Users/<you>/<project>" ~/projects/
# then add ~/projects/<project> in Home
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# inside WSL: keep the project in Linux
mkdir -p ~/projects
cp -r "/mnt/c/Users/<you>/<project>" ~/projects/
# then add ~/projects/<project> in Home

MU-072 Notice

MADRE on Windows

What happened. On Windows, MADRE runs inside WSL2 (Windows Subsystem for Linux), the Linux that comes with Windows 10 and 11. Inside it MADRE works as on any Linux, and opens in your Windows browser. It does not run on Windows directly.

What to do. Download MADRE's installer from madre.run/windows and open it with a double click: it turns WSL on, prepares MADRE's Linux and leaves MADRE in the Start menu, with no terminal. Keep your projects inside Linux, not in /mnt/c.

# this is for Windows
# this is for Windows
# the installer, a double click and no terminal:
https://madre.run/windows
# or by hand: in PowerShell, as administrator, once:
wsl --install
# restart, open «Ubuntu» from the Start menu, and in it:
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs zstd
npx @jossuealcala/madre

MU-073 OpenCode Blocking

OpenCode's free models have run out for now

What happened. OpenCode's own free models (opencode/…) answer without an account, but only up to a limit; when it is reached OpenCode retries in silence and never answers. MADRE now stops the turn as soon as OpenCode says so, instead of waiting for the clock. Nothing in the project is wrong.

What to do. Connect a provider of yours to OpenCode in Settings › Agents › OpenCode (your ChatGPT account, GitHub Copilot or an API key), ask another agent, or ask @madre, which runs on this computer. The free use comes back after a while.

# the providers OpenCode can use:
opencode auth login
# subscription for more free use: https://opencode.ai/go
# the providers OpenCode can use:
opencode auth login
# subscription for more free use: https://opencode.ai/go
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# the providers OpenCode can use:
opencode auth login
# subscription for more free use: https://opencode.ai/go

MU-074 Codex Blocking

Codex has reached its usage limit

What happened. Your ChatGPT account has used up the Codex usage its plan gives for this period, and Codex refuses every turn until it renews. Codex says when that is at the end of its message. It is OpenAI's limit, not MADRE's: nothing in the project is wrong.

What to do. Wait until the date Codex gives, change your ChatGPT plan, or ask another agent in the meantime.

# plan and usage: https://chatgpt.com/codex/settings/usage
# plan and usage: https://chatgpt.com/codex/settings/usage
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# plan and usage: https://chatgpt.com/codex/settings/usage

MU-075 Codex Blocking

Codex does not offer that model on this account

What happened. The model chosen for this turn is not one your ChatGPT account can use in Codex, so Codex refused the turn before starting. Nothing in the project changed.

What to do. Choose «default» in the model menu of the Write box, or one of the models listed there: they are the ones your account offers.

# the models your account lists: ~/.codex/models_cache.json
codex   # then /model
# the models your account lists: ~/.codex/models_cache.json
codex   # then /model
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# the models your account lists: ~/.codex/models_cache.json
codex   # then /model

MU-076 @madre Blocking

Ollama was left installed halfway

What happened. Ollama's install stopped before it finished, usually because the download (more than a GB) was cut by the network or ran out of time. The program is there but the part that runs the models is not, so every answer of @madre fails.

What to do. Install Ollama again from Settings › Local AI: it downloads it whole and finishes it. Your models stay where they are.

# Home → Settings → Local AI → Install
# Home → Settings → Local AI → Install
# or in a terminal:
curl -fsSL https://ollama.com/install.sh | sh
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# Home → Settings → Local AI → Install
# or in a terminal:
curl -fsSL https://ollama.com/install.sh | sh

MU-077 Claude Blocking

Claude has reached its usage limit

What happened. Your Claude account has used up what its plan gives for this window, and Claude refuses every turn until it resets. Claude says when that is at the end of its message. It is Anthropic's limit, not MADRE's: nothing in the project is wrong.

What to do. Wait until the time Claude gives, change your Claude plan, or ask another agent in the meantime.

# plan and usage: https://claude.ai/settings/usage
claude   # then /usage
# plan and usage: https://claude.ai/settings/usage
claude   # then /usage
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# plan and usage: https://claude.ai/settings/usage
claude   # then /usage

MU-078 Blocking

The provider refused the API key

What happened. The agent reached its provider, but the provider did not accept the API key it was sent with: it was mistyped, revoked or has expired. In OpenCode it is the key of the provider of the model the turn asked for.

What to do. Make a new key in the provider's console and give it to the agent again in Settings › Agents, or connect that agent another way (your ChatGPT account, GitHub Copilot or a sign-in).

# OpenCode, the key of one provider:
opencode auth login
# or take the key out:
opencode auth logout <provider>
# OpenCode, the key of one provider:
opencode auth login
# or take the key out:
opencode auth logout <provider>
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# OpenCode, the key of one provider:
opencode auth login
# or take the key out:
opencode auth logout <provider>

MU-079 Blocking

Your plan does not include that model

What happened. The provider answered, but the plan of that account does not include the model this turn asked for, so it refused the turn before starting. Nothing in the project changed.

What to do. Choose another model in the model menu of the Write box, or «default», or change the plan with that provider.

# OpenCode, the models it can use:
opencode models
# OpenCode, the models it can use:
opencode models
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# OpenCode, the models it can use:
opencode models

MU-080 Passing

Something outside the turn stopped the agent

What happened. The agent's program received a signal to quit that its turn did not send: the system, another program, a closed terminal or MADRE closing. It is not a failure of the agent or of the project.

What to do. Ask again. If it keeps happening, look for what closes programs on this computer: a session that ends, WSL shutting down, or a tool that stops processes.

# WSL: what closed the Linux
wsl --list --running
# WSL: what closed the Linux
wsl --list --running
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# WSL: what closed the Linux
wsl --list --running

MU-081 Blocking

Git is not installed on this computer

What happened. Before an AI writes (#2, #3 or #4), MADRE takes a restore point with git, so that UNDO can bring everything back. This computer has no git, so the turn stopped before writing and nothing was changed. Chatting (#1) works without it.

What to do. Install git, reload the page and send the message again. In the mode menu the modes that write say NEEDS GIT until it is installed.

xcode-select --install
# Ubuntu, Debian or WSL
sudo apt install git
# Fedora
sudo dnf install git
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# Ubuntu, Debian or WSL
sudo apt install git
# Fedora
sudo dnf install git

MU-082 Blocking

This computer cannot find internet addresses

What happened. Before downloading, a program asks for the address behind a name such as registry.ollama.ai (DNS), and nobody answered. The browser may still work while this Linux cannot ask: in WSL, the address it asks (10.255.255.254) is Windows passing the question on, and it stops answering with a VPN, after the computer sleeps or when the network changes.

What to do. In WSL, close it from Windows and open it again; with a VPN on, try without it. On Linux, check the network connection. Then try again from the same place.

# whether this Mac finds the name:
dscacheutil -q host -a name registry.ollama.ai
# whether this Linux finds the name (no answer: it finds none):
getent hosts registry.ollama.ai
# which server it asks:
resolvectl status
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# whether this Linux finds the name (no answer: it finds none):
getent hosts registry.ollama.ai
# which server it asks:
resolvectl status

MU-083 Codex Passing

Codex could not reach its ChatGPT workspace

What happened. Signed in with a ChatGPT account, Codex first asks OpenAI which workspace of that account the turn goes to, and that question did not get an answer: OpenAI did not answer in time, or this computer's connection did not get through. Nothing in the project is wrong.

What to do. Try again in a moment. If it keeps happening, sign Codex in again in Settings › Agents › Codex, and check the connection of this computer.

# sign in again:
codex logout
codex login
# sign in again:
codex logout
codex login
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# sign in again:
codex logout
codex login

MU-084 grok Blocking

xAI refuses this Grok account

What happened. Grok is signed in, but xAI answers every turn with a 403. It happens when the sign-in was made before the plan was active. It is xAI's answer, not MADRE's: nothing in the project is wrong.

What to do. Sign in to Grok again: grok logout, then grok login. If it keeps happening, check at grok.com that your plan is active.

grok logout
grok login
grok models   # «You are logged in with grok.com.»
grok logout
grok login
grok models   # «You are logged in with grok.com.»
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
grok logout
grok login
grok models   # «You are logged in with grok.com.»

MU-085 Gemini Blocking

This Gemini model is not available for your key

What happened. Gemini answers through its API with your key, and Google says the model chosen in the box does not exist or this key cannot use it. It happens with a model Google retired, a preview your key has no access to, or a name written by hand.

What to do. Choose another Gemini model in the box, or leave the default one. If you need that model, check in AI Studio that your key has access to it.

# the models your key opens: https://aistudio.google.com/app/apikey
# the models your key opens: https://aistudio.google.com/app/apikey
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# the models your key opens: https://aistudio.google.com/app/apikey

MU-086 Gemini Blocking

The message is too long for this Gemini model

What happened. Through its API, Gemini receives everything in one go: your message, what you attached and the memory that came with it. This time it was more than the chosen model takes.

What to do. Ask in smaller parts, attach less at once, or choose a Gemini model that takes more. A new chat also sends less of the conversation.

# how much each model takes: https://ai.google.dev/gemini-api/docs/models
# how much each model takes: https://ai.google.dev/gemini-api/docs/models
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# how much each model takes: https://ai.google.dev/gemini-api/docs/models

MU-087 Blocking

A module tried something its fence does not allow

What happened. Since 1.1.3, a module you install runs apart, with limited permissions: it can read its own file, but it cannot write your files or start other programs by itself. This module tried one of those and Node stopped it. Your project and MADRE are fine.

What to do. Ask the module's author for a version made for MADRE 1.1.3, which asks MADRE for what it needs instead of doing it itself. Meanwhile, turn it off in Modules.

# Modules › the module › turn it off
# Modules › the module › turn it off
# On Windows, MADRE runs inside WSL2, Linux inside Windows: see «MADRE on Windows».
# in Ubuntu (WSL):
# Modules › the module › turn it off

It is the same catalog Diagnostics uses inside MADRE 1.1.3: you find it there without leaving the app. The live status comes from the anonymous diagnostics and only says whether an error was seen this week, never on which computer or how many times.

Not here? Report it, no account needed