Map

showagent

Toolbox toolboxgolangtuicoding-agentssession-toolingwatchlistGolangMIT โ†ณ show in map Markdown
title
showagent
type
toolbox
summary
TUI listing coding-agent sessions from every CLI, with resume, branch and cross-agent conversion
tags
golang, tui, coding-agents, session-tooling, watchlist
language
Golang
license
MIT
created
2026-07-18
updated
2026-07-18

showagent is a Golang TUI that pulls the coding-agent sessions scattered across your machine into one picker. Each agent โ€” Codex, Claude Code, Gemini CLI, OpenCode, jcode, Pi โ€” writes its own session format under its own dot-directory, so yesterday's context is stuck in whichever tool you happened to start it in. showagent reads those stores straight off disk and gives you a single list, grouped by workspace and sorted newest-first, that you can fuzzy-search, resume in the native CLI, branch into a local copy, or convert into another agent's format. It is fully local: one static binary reading your own files, with no hosted service, telemetry, or account.

The stand-out feature is cross-agent conversion. Start debugging in Codex, press x, and the conversation is rewritten into Claude Code's native session format so claude's own resume just works. Like agentsview it unifies history across agents, but where agentsview is a read-only macOS browser, showagent is terminal-first and adds resume, branch, and conversion. It sits in the same session-tooling cluster as mclaude (a Claude Code session browser), re_gent (session replay/analysis), and mindwalk.

How it works

Each supported agent is a self-contained provider file implementing an 8-method interface (internal/session/provider.go) covering discovery, resume arguments, transcript extraction, and conversion โ€” roughly 250 lines each. Providers register in a registry slice and the TUI picks up badges, filter keys, and convert targets automatically. Two templates exist: a file-based store (gemini.go) and a CLI-based store (opencode.go).

Storage differs per agent. Codex, Claude Code, jcode, and Pi keep JSONL or JSON files under their dot-directories; showagent reads those directly. OpenCode keeps sessions in a SQLite database, so every OpenCode operation (discover, export, import, delete) routes through your own opencode CLI โ€” showagent never writes into the database. Agents whose CLI isn't on PATH are auto-hidden (jcode, OpenCode), and the convert picker only offers hand-off targets whose CLI is installed, so a conversion never strands. Pi sessions are versioned JSONL trees; showagent follows Pi's active leaf through parentId links and ignores abandoned branches.

Conversion extracts the user and assistant turns and writes a brand-new session in the target format, preserving code blocks, newlines, and indentation. It deliberately does not copy tool-call internals, approval history, encrypted reasoning blobs, or provider attachments โ€” those are private to the source agent and wouldn't replay correctly anyway. Originals are never modified; new files are written atomically with 0600 permissions, so a crash can't leave a half-written session in another tool's store. Trust is explicit: the first x shows a hand-off preview, the second writes it (--dry-run gives the same preview in scripts).

An mcp subcommand runs a stdio MCP server that exposes your session history to whatever agent you're talking to โ€” list_sessions, get_transcript, branch_session, convert_session, resume_command. Ask Claude Code whether you've solved a bug before and it can find the Codex session where you did and hand back the resume command. Transcript text is marked untrusted, and secret-like values are redacted unless the server is started with --allow-secrets; --read-only drops the two additive (branch/convert) tools. There is no delete tool over MCP โ€” deletion stays in the TUI behind a two-press confirm.

Install

# Homebrew (Linux/macOS)
brew install aytzey/tap/showagent

# Go 1.25.12+
go install github.com/aytzey/showagent/cmd/showagent@latest

# install script (Linux/macOS, binary to ~/.local/bin)
curl -fsSL https://raw.githubusercontent.com/aytzey/showagent/main/scripts/install.sh | sh

Prebuilt archives are on the releases page for linux/darwin amd64+arm64 and windows amd64.

Usage

showagent                              # interactive picker
showagent list --json                  # every session, machine-readable, newest-first
showagent resume latest                # reopen the most recent session, any agent
showagent convert latest --to claude --dry-run   # preview a hand-off before writing
showagent info latest                  # exact resume command + storage location
showagent mcp                          # serve session history over stdio MCP

In the picker, / fuzzy-searches across agent, workspace, session id, and messages; enter resumes; x previews then writes a conversion; n branches a full local copy; 1..9 toggle provider visibility. showagent list --json emits a stable-field contract (id, provider, workspace, updated, first_message, last_message), and when stdout isn't a terminal plain showagent prints the list table, so pipes work.

Limitations

Single-author project, early (34 stars at time of writing), so it's on watchlist pending traction and release cadence. Linux and macOS are the supported platforms; Windows builds are released but experimental โ€” resume runs the agent as a child process instead of replacing showagent (no exec), so its semantics are only approximated. OpenCode and jcode only appear when their CLI is installed, and OpenCode always needs its CLI because imports go through it. Conversion carries user/assistant turns only, not agent-private runtime state, which is the correct trade-off but means a converted session isn't a byte-for-byte clone.

Repo: https://github.com/aytzey/showagent โ€” 34 stars, MIT license.