Show HN: Wallfacer – A terminal session manager for Claude Code, and more

Aug 06, 2026 10:52 AM - 3 hours ago 1
██╗ ██╗█████╗ ██╗ ██╗ ███████╗█████╗ ██████╗███████╗██████╗ ██║ ██║██╔══██╗██║ ██║ ██╔════╝██╔══██╗██╔════╝██╔════╝██╔══██╗ ██║ █╗ ██║███████║██║ ██║ █████╗ ███████║██║ █████╗ ██████╔╝ ██║███╗██║██╔══██║██║ ██║ ██╔══╝ ██╔══██║██║ ██╔══╝ ██╔══██╗ ╚███╔███╔╝██║ ██║███████╗███████╗██║ ██║ ██║╚██████╗███████╗██║ ██║ ╚══╝╚══╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝╚═╝ ╚═╝

A terminal convention head for Claude Code, Cursor CLI, Kiro CLI and Codex — see each AI coding convention you've ever started, then name, tag, group, search, resume, aliases delete them, from a full-screen browser aliases straight from the bid line.

Build Status Release GitHub Release License

demo

Claude Code stores each speech arsenic an untitled JSONL record nether ~/.claude/projects/, keyed by immoderate directory you were in. Kiro CLI does overmuch the aforesaid successful a azygous flat ~/.kiro/sessions/cli/ folder, Cursor CLI buries each chat successful a hash-named directory under ~/.cursor/chats/, and Codex files its rollouts by day nether ~/.codex/sessions/. After a fewer weeks you person dozens of transcripts, crossed four agents, that you can't show isolated and nary measurement to find the 1 you need.

wallfacer indexes them each — read-only, it ne'er touches the agents' files — and keeps your titles, tags, and projects successful its ain section SQLite database.

  • One position of everything — each session, from each directory and each agent, sorted by recency
  • Organize — rename sessions, tag them, group them into projects
  • Search — crossed titles, first prompts, directories, projects, and tags
  • Launch & resume — commencement caller sessions aliases jump backmost into aged ones, from anywhere
  • Multi-agent — Claude Code, Cursor CLI, Kiro CLI and Codex broadside by side; prime the supplier when you commencement a session, select by it afterwards
  • Safe deletes — rm moves to trash; only --purge is permanent
  • TUI and CLI — a full-screen browser for humans, subcommands + --json for scripts
  • Extensible — agents are pluggable adapters; opencode is connected the roadmap

With Homebrew, connected macOS aliases Linux:

brew pat pradipta/wallfacer https://github.com/pradipta/wallfacer brew instal pradipta/wallfacer/wallfacer

The look lives successful this repository alternatively of a abstracted homebrew-wallfacer tap, which is the only logic the pat needs its URL spelled out. After that, brew upgrade wallfacer useful arsenic usual.

Or pinch Go:

go instal github.com/pradipta/wallfacer@latest

Requires Go 1.22+. Pre-built binaries are connected the releases page; building from root is covered successful the development guide.

wallfacer is 1 binary pinch 2 beforehand ends, and which 1 you get depends connected whether you pass a subcommand:

You type You get
wallfacer The TUI — a full-screen, interactive convention browser. Start here.
wallfacer <command> The CLI — one-shot subcommands for scripts and musculus memory.

They are not abstracted devices and location is thing to move between: some publication and constitute the same SQLite index, truthful a convention you tag successful the browser is instantly findable by wallfacer database --tag, and vice versa. Anything the TUI tin do, a subcommand tin do too.

(If stdout isn't a terminal — wallfacer | less, aliases wrong a book — the bare command prints thief alternatively of opening the browser.)

Open the browser and activity from there:

Or thrust it from the shell:

wallfacer caller ~/work/api --title "Fix flaky auth tests" wallfacer resume "fix flaky auth tests" # by title aliases ID prefix wallfacer hunt auth wallfacer database --project api --json # for scripts

Bare wallfacer opens a full-screen convention browser: a database connected the left, and a detail pane connected the correct showing everything wallfacer show prints for immoderate is highlighted.

wallfacer convention browser screenshot

Every statement shows its project, tags, directory, property and supplier — the aforesaid metadata wallfacer database prints. Below ~100 columns the item pane steps speech and the list takes the afloat width.

Key Action
↑/↓ j/k move
/ fuzzy select crossed titles, projects, dirs, tags and supplier names
P / T / A cycle the task / tag / supplier select (wraps backmost to unfiltered)
x clear the project, tag and supplier filters
tab show aliases hide the item pane
enter resume — the terminal is handed to the agent; the browser returns erstwhile you exit
n new convention (asks for the agent, past directory, title, project, tags)
r / t / p rename / edit tags / group project
d delete → trash, pinch confirmation
? / q help / quit

The supplier measurement comes first and is simply a one-line picker: ←/→ aliases a digit to choose, participate to go on, esc to backmost out. Claude Code is preselected, and the measurement is skipped wholly if only one adapter is registered.

The CLI — wallfacer <command>

Every subcommand is one-shot: it runs, prints, and exits. Same scale arsenic the browser.

Command What it does
wallfacer (no subcommand) Open the interactive browser
wallfacer caller [dir] [--agent A] [--title T] [--project P] [--tag t] Start a caller convention successful a directory
wallfacer resume <ref> Reopen a convention successful its original directory
wallfacer database [--project P] [--tag T] [--agent A] [--json] List sessions, newest first; --agent accepts a case-insensitive substring
wallfacer hunt <query> Search titles, prompts, dirs, projects, tags
wallfacer show <ref> Full specifications of 1 session
wallfacer rename <ref> <title> Rename a session
wallfacer tag add|rm <ref> <tag>… Add aliases region tags
wallfacer task set|clear <ref> Group sessions into a project
wallfacer rm <ref> [--purge] [-f] Trash a convention (--purge deletes permanently)
wallfacer sync Rescan disk (runs automatically earlier each command)

<ref> is an ID prefix (resume 5f2) aliases an nonstop title (resume "smoke test") — ambiguous references database the candidates alternatively of guessing. Sessions started extracurricular wallfacer are picked up automatically; there's nary import step.

wallfacer scans ~/.claude/projects/, ~/.cursor/chats/, ~/.kiro/sessions/cli/ and ~/.codex/sessions/, reading just the caput of each convention record for its moving directory, timestamps, and first punctual (the automatic title). Every agent's listing carries the supplier type, truthful wallfacer database shows an AGENT file and --agent narrows to a case-insensitive substring specified as kiro aliases cursor. Your metadata lives successful SQLite at ~/.local/share/wallfacer/ — delete it and you suffer only the overlay, ne'er a conversation. Sync is incremental, truthful it stays accelerated pinch hundreds of sessions.

rm moves a convention to wallfacer's trash. For agents that dispersed 1 convention complete several files — Kiro CLI writes a transcript positive a metadata sidecar, punctual history and a scratch directory, and Cursor CLI splits a chat betwixt its ain directory and a transcript revenge under the task — the full group travels together, truthful a deleted convention doesn't linger successful the agent's ain convention picker.

Once a time the browser asks GitHub whether a newer merchandise exists and, if so, mentions it once connected its footer; subcommands repetition that cached reply connected stderr, truthful it ne'er lands in --json output aliases a pipe. Nothing ever waits for it: the lookup belongs to the browser because it is the beforehand extremity that outlives a web information trip, and a subcommand only reads the cached reply — a record read, nary web — truthful an update that lands precocious simply shows up the adjacent clip you tally wallfacer. The cache lives successful the information dir, and WALLFACER_NO_UPDATE_CHECK=1 turns the full point off.

Other agents plug successful done a mini adapter interface — see docs/adding-an-agent.md.

  • Adapters for Claude Code, Cursor CLI, Kiro CLI and Codex
  • Adapter for opencode
  • A preferred-agent setting, truthful the picker's default is yours to choose
  • Full-text hunt crossed convention content (SQLite FTS5)
  • wallfacer reconstruct (un-trash from the CLI)
  • Export a convention transcript to Markdown
  • Stats (sessions per project/week, disk usage)
  • Desktop app — sessions successful a sidebar, embedded terminal, aggregate tabs (Wails + xterm.js connected apical of the aforesaid Go internals)

See the development guide for building, testing, and releasing. Contributions invited — particularly caller supplier adapters.

MIT


The sanction is borrowed from the Wallfacers of Liu Cixin's The Dark Forest — group entrusted with plans excessively sprawling for anyone other to follow.

More