Flags like --manifest-path, paths, subcommands,
package names, and model options are split into their own rows.
Local-first terminal memory
MemoryWhale remembers what your terminal forgets.
Capture terminal evidence, preserve it in local SQLite, and retrieve the failures and lessons that matter. MemoryWhale is local-first: it does not silently upload or synchronize your data.
$ curl -fsSL https://raw.githubusercontent.com/wuisabel-gif/MemWhale/main/install.sh | sh
Terminal memory
A memory palace for command-line work.
MemoryWhale stores terminal sessions as structured local memory. Instead of keeping one giant text dump, it saves the command, every argument, the working directory, the exit code, stdout, stderr, and your own notes.
stderr is preserved beside the command that produced it, so the cause and context remain together.
mw --live writes the active shell transcript into
SQLite every few seconds, so a disconnect can still leave a
usable memory trail.
Failed commands appear in the knowledge galaxy and connect to extracted concepts like cargo, Tauri, SQLite, ports, and builds.
How it works
Capture, store, extract, explore.
Capture
Paste a terminal run, call the Rust helper, or start a live-autosaved shell.
Store
SQLite saves command runs and arguments locally on your machine.
Extract
Rust extracts keywords from commands, notes, and error text.
Explore
Search or click command nodes in the glowing graph interface.
AI agents
Give your agent memory of what already failed.
Coding agents forget everything between sessions and re-debug what
you already solved. mw-mcp is a Model Context Protocol
server over your local memory — register it once and Claude Code,
Codex, or Cursor can query past failures directly. Retrieval stays
local unless you explicitly export or transfer the data.
$ claude mcp add memorywhale -- mw-mcp > why is this build failing? ⏺ memorywhale · search_memory Past evidence: this linker error appeared 3 weeks ago. The saved lesson says to rebuild with --features vendored-ssl. The agent reviews that evidence before choosing what to try.
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.
$ 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
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.
.mwignore, path policy, commands-onlymw audit · mw rm · mw prunemw export / mw import or explicit SSH transferSecurity 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.
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.
$ curl -fsSL https://raw.githubusercontent.com/wuisabel-gif/MemWhale/main/install.sh | sh $ mw-run -- cargo build saved command, output, and exit code locally $ mw search "openssl" retrieved the matching failure and saved lesson $ mw global on # optional, after reviewing capture