🐋 New in v0.3.0 — one-line install, an MCP server for AI agents, secret redaction, and team memory sharing. Read the release →

Local-first terminal memory

MemoryWhale remembers what your terminal forgets.

Records commands, output, and errors into local SQLite — so you and your AI agent can search what already failed. Survives crashes, SSH drops, and machine switches. Nothing is uploaded.

$ curl -fsSL https://raw.githubusercontent.com/wuisabel-gif/MemWhale/main/install.sh | sh
Terminal memory live
$ mw --live --notes "project:demo"
autosaving session every 2s
safe if SSH drops before exit

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. No copy-paste, and the memory never leaves your machine.

Setup One command
Tools recent_errors · search_memory · get_context
No agent? mw context prints a paste-ready digest
$ claude mcp add memorywhale -- mw-mcp

> why is this build failing?
⏺ memorywhale · recent_errors
  You hit this exact linker error 3 weeks ago
  on the Jetson — the fix was rebuilding with
  --features vendored-ssl. Trying that now…

Break reminder

Remember the human at the keyboard.

MemoryWhale can keep a simple one-hour break timer beside the work: stretch, blink, drink water, and come back with the debugging thread still intact.

Hourly focus loop

Start the timer when you begin a work session. The page will remind you every hour, and browser notifications are used when permission is available.

Install

One line. No Rust needed.

Prebuilt binaries for Linux x86_64 and aarch64 (including Jetson) and macOS. Then type mw — it explains itself and offers to auto-record every new terminal. For SSH sessions and sudden shutdown risk, use mw --live.

One line curl … | sh
Cargo cargo install --git … mw-cli
Debian / Jetson .deb on the releases page
Storage Local SQLite — nothing uploaded
$ curl -fsSL https://raw.githubusercontent.com/wuisabel-gif/MemWhale/main/install.sh | sh
$ mw
🐬 Welcome to MemoryWhale.
Enable auto-recording in every new terminal now? [y/N] y

$ mw context --last-error
recent failures, with the exact error text
$ mw-serve
dashboard for you — and your whole team
Time for a break

Stand up, stretch, rest your eyes, then come back to the saved thread.