v0.15.0 is here

MemoryWhale

Make your terminal remember.

Hit an error you've seen before and MemoryWhale hands back the fix. It keeps debugging evidence on your machine, so your coding agents stop re-solving the same problems.

On LongMemEval, a public memory benchmark, search puts the right past session in the top 5 for 97% of questions. In a controlled eval on project-specific bugs, an agent solved 25% without memory and 96% with it (synthetic tasks; how it was measured).

  • Local-firstMemory stays on your machine
  • PrivateNo cloud required
  • Built for coding agentsDebugging knowledge survives sessions
Recall a fix you already found
$ cargo build
error: linker `cc` not found
$ mw context --last-error
## This error
You've hit this 2 times: a later run succeeded 1 of 2 times. [e6750e65]
$ mw search linker cc not found
 36%  [note · terminal] linker cc not found -> run: xcode-select --install

Real MemoryWhale 0.13 output, shortened.

Terminal Memory

Capture useful debugging context while you work.

Intelligent Retrieval

Recover previous commands, failures, and fixes when they matter.

Completely Local

Keep MemoryWhale data on your own machine.

New in 0.15.0

Memory that joins the conversation.

Product 0.15.0 spans the CLI, web UI, and desktop app; the Rust core stays 0.8.0 and stores stay on SQLite schema 13. MemoryWhale now works with Delphin: it records your agent conversations safely and answers "have we seen this error?" while the agent is still working. See the release notes.

One command to connect

mw integrate delphin checks that Delphin is installed and prints the command to run: delphin --memorywhale -- claude. No database path to type.

Hints while the agent works

mw hint matches an error against past failures and names what fixed it: seen 2 times, the fix was: xcode-select --install. Delphin shows that line live, while the agent is still going.

Conversations, redacted

mw turns stores Delphin's conversation turns through the same redaction and capture rules as every other capture, so a secret the agent prints is stored as [REDACTED].

The family

Three tools, one memory.

MemoryWhale remembers. Delphin lets you keep talking to your agent while it works. Joule sends a model only the history it needs. Each works on its own and does more together.

🐋 MemoryWhale

Local memory of commands, errors, and fixes. On LongMemEval, a public memory benchmark, search puts the right past session in the top 5 for 97% of 470 questions.

🐬 Delphin ↗

Keep typing while your agent thinks. With delphin --memorywhale -- claude, an error that scrolls past gets a live hint from memory: seen 2 times, the fix was: xcode-select --install.

⚡ Joule ↗

An energy-aware LLM proxy. Its history trimming ranks old turns with MemoryWhale. On LongMemEval it cuts 91% of the prompt and keeps all of the answer's evidence for 81% of questions, against 5% for plain truncation.

Who it's for

Built for three ways of working.

MemoryWhale serves developers whose debugging context is scattered across terminal scrollback, shell history, machines, and temporary agent sessions. See the full use-case walkthroughs with real command transcripts.

🔍 The shell-centric debugger

You hit the same build, linker, or dependency error twice. Shell history remembers the command but not the output, the error tail, or the fix. mw search returns the old failing run and the lesson linked to it.

🛰️ The multi-machine worker

Jetson, lab server, laptop: sessions drop and each machine keeps a private, incomplete history. mw --live autosaves through disconnects; mw push / mw pull move memory between machines explicitly.

🤖 The coding-agent user

Claude Code, Codex, Cursor: every session starts with re-explaining your environment. With mw-mcp, the agent can query prior evidence and explicitly save a lesson with remember. You still need to verify that a fix works.

How it works

Capture, store, extract, explore.

1

Capture

Paste a terminal run, call the Rust helper, or start a live-autosaved shell.

2

Store

SQLite saves command runs and arguments locally on your machine.

3

Extract

Rust extracts keywords from commands, notes, and error text.

4

Explore

Search or click command nodes in the glowing graph interface.

AI agents

Give your agent memory of what already failed.

Coding-agent sessions can lose context and repeat debugging you already did. mw-mcp is a Model Context Protocol server over your local memory. Register it once and Claude Code, Rho, Codex, or Cursor can query past failures directly. Anything the client retrieves can reach the model provider it sends context to, so connect only clients you trust.

Claude Code Rho Claude Desktop Codex CLI Cursor Continue Cline Zed Gemini CLI VS Code Windsurf Goose OpenCode More in the matrix

Setup guides for clients and tools: the capability matrix documents MCP support, auto-capture, and verification status per client, including model gateways like OpenRouter and CLIProxyAPI.

Setup One command
Tools 6 local MCP tools: recent_errors · search_memory · get_context · remember · similar_failures · stats
No agent? mw context prints a paste-ready digest
$ mw integrate claude
$ mw integrate rho
$ mw doctor
$ mw search "linker error" agent:claude

# Search captured Claude evidence from either client.
# MCP access, hooks, and skills are separate components.
# A skill guides memory use; it does not force tool calls.

Capture → memory → retrieval

See the core loop with synthetic data.

Capture one command, save the explanation that fixed it, then search the local store when the same failure returns. MCP provides retrieval and explicit writing; it does not capture ordinary terminal activity automatically.

The offline Claude-to-Rho handoff demo imports fixtures and simulates a Rho client against real MCP. It does not run live agents or execute and verify the fixture's Cargo fix. Rho hooks currently retain failure metadata when command text is absent; successful calls without command text are skipped. Automatic task-start recall, failure lookup, and pre-compaction saving remain client-orchestration work, not shipped automation.

$ mw-run -- cargo build
error: could not find native library `ssl`
$ mw remember "install libssl-dev to fix openssl-sys"
mw: remembered #42
$ mw search "openssl"
#42  install libssl-dev to fix openssl-sys
Synthetic MemoryWhale terminal and dashboard demo

Your data

Local-first means visible choices.

The database lives on your machine: typically ~/.local/share/MemoryWhale/ on Linux or ~/Library/Application Support/MemoryWhale/ on macOS. Set MEMORYWHALE_DATA_DIR to choose another location.

Capture controls.mwignore, path policy, commands-only
RedactionHelps with common secrets; it is not a security boundary
Size limitCaptured text fields default to 1 MiB with truncation
Inspect / deletemw audit · mw rm · mw prune
Transfermw export / mw import or explicit SSH transfer
Stewardshipmw memory compact: dry-run first, rows preserved

Security model

Local by default, explicit when shared.

The CLI, TUI, MCP server, web dashboard, and desktop shell use the local store. mw-mcp is a trusted local stdio process; the dashboard binds to loopback by default. A non-loopback dashboard requires a token, and should only be exposed on a trusted network. Protected HTTP MCP requires Bearer authentication; the opt-in JSON API shares the dashboard's access controls. HTTP does not encrypt the connection. Neither interface makes client access automatic capture. See the local data threat model.

Install

One line. No Rust needed.

Prebuilt binaries are available for Linux x86_64/aarch64 and macOS. The installer verifies published SHA256 files when a release provides them; older releases may not have a checksum. Start with one explicit capture, inspect it, and only then consider mw global on. Windows is not a native target; WSL can use the Linux build.

Try firstmw demo: writes sample data to the selected store
Cargo cargo install memorywhale-cli --version 0.15.0 --locked
Debian / Jetson .deb on the releases page
Verifymw --version · mw doctor
$ curl -fsSL https://raw.githubusercontent.com/wuisabel-gif/MemWhale/main/install.sh | sh
$ export PATH="$HOME/.local/bin:$PATH"
$ mw --version
$ mw doctor
$ mw-run -- cargo check   # in your project
$ mw search "cargo check"
$ mw global on   # optional, after reviewing capture