🐋 Current release assets, checksums, and installation notes →

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.

Arguments Become Searchable

Flags like --manifest-path, paths, subcommands, package names, and model options are split into their own rows.

Error Logs Stay Attached

stderr is preserved beside the command that produced it, so the cause and context remain together.

Live Autosave for Sessions

mw --live writes the active shell transcript into SQLite every few seconds, so a disconnect can still leave a usable memory trail.

Graph Nodes for Failures

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.

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 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.

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
$ 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
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

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. 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.

Quick installcurl … | sh
Cargo cargo install --git … mw-cli
Debian / Jetson .deb on the releases page
$ 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