Skip to content

I built a terminal that remembers

Last Tuesday I was staring at a Supabase migration that refused to deploy. The error message was familiar in that nagging way — I’d seen it before, maybe a month ago, maybe for a different project. I couldn’t place it.

My terminal placed it for me. A toast appeared in the corner: “Similar error on PVB, 2026-02-19. Fix: toggle IPv4 in the Connect modal.” Thirty seconds later the migration was through.

That feature is called Flashback, and it’s why I built TermDeck.

TermDeck is a browser-based terminal multiplexer. Real PTY terminals, embedded in a dashboard, with metadata overlays showing what each panel is doing — project, status, last command, AI agent state. You pick from seven grid layouts, theme each panel independently, and switch between them the way you’d switch tmux windows. That part is already useful.

The part that makes it interesting is the memory.

TermDeck is the visible tier. Underneath it sit two smaller projects, each doing one job well:

  • TermDeck — captures what happens in every terminal: commands, exit codes, error signatures, status transitions. Renders the UI.
  • Mnestra — a persistent memory MCP server. Postgres + pgvector, hybrid search (keyword + semantic + recency), exposed to any MCP-capable agent. Stores the captured signals and everything your Claude Code sessions write.
  • Rumen — an async learning loop. Every 15 minutes it reads recent memories, relates them to older ones, and writes synthesized insights back. The store gets smarter while you sleep.

When a panel hits an error, TermDeck extracts the signature, queries Mnestra for similar past errors across every project you’ve worked on, and fires a toast if the match is strong enough. Two features fall out of this:

  1. Proactive recall. You don’t have to remember to ask. The terminal surfaces the memory when it’s relevant.
  2. Cross-project transfer. The fix you worked out three weeks ago on a different repo is available to you now, without you having to go find it.

TermDeck’s sprints run on a pattern I ended up liking a lot. Four terminal instances work in parallel on non-overlapping files — each one owns a slice of the codebase for that sprint. A fifth terminal coordinates via an append-only STATUS.md. When all four sign off [Tn] DONE, the coordinator runs the integration pass. It’s cheap to set up and it compresses a day of work into a couple of hours.

Before v0.3 I ran a five-auditor 360 review — five parallel reviewers rating the codebase against independent rubrics (architecture, UX, docs, correctness, launch-readiness). The average across all five came in at 9.53 / 10. The gaps they flagged became Sprint 13 and 14’s backlog.

Terminal window
npx @jhizzard/termdeck

That’s it for tier one. Add memory when you want it:

Terminal window
termdeck init --mnestra
termdeck init --rumen

Each wizard handles migrations, secrets, and MCP config.

I built this because I needed it. If you also keep solving the same problem twice, try it.