I Use 6 AI Coding Tools. Finding Last Week's Session Was Harder Than the Bug It Fixed.
TL;DR: VibeCockpit gives you one dashboard for all your AI coding sessions. Claude Code, Copilot, Codex, Gemini, OpenCode — search across all of them, click to resume. Works locally and over SSH. Zero config, single binary, open source.
Last Saturday I needed a Claude Code session from a week ago — an eBPF ring buffer fix. Was it Claude Code? Copilot? Codex? I searched through ~/.claude/projects, ~/.codex, and ~/.copilot before finding it buried in a JSONL file. The fix took 2 minutes. Finding where I left off took 15.
Copilots everywhere, but no cockpit. Claude Code, Copilot CLI, Codex, Gemini CLI, OpenCode — each stores sessions in its own format, its own directory. No shared protocol, no common index, no way to search across all of them at once.
So I built one: VibeCockpit.

The Fragmentation Problem
Every AI coding tool reinvented session storage. JSONL, SQLite, YAML, scattered JSON. If you use more than one of these tools, your work is fragmented across incompatible silos. And the problem gets worse every month as new tools launch.
What It Supports
VibeCockpit auto-detects which tools you have installed by checking their data directories. No config file needed. Currently supported: Claude Code, Claude Desktop, Codex CLI, Copilot CLI, OpenCode, and Gemini CLI. It extracts project names, models, git branches, message counts, and timestamps from each tool’s session storage.
Clicking “Resume” opens the session in your preferred terminal. VibeCockpit knows about 10+ terminal emulators (kitty, alacritty, wezterm, ghostty, iTerm2, and more) and passes the right flags for each.
It ships with both a web dashboard and a terminal TUI with vim keybindings. The web UI shows the cockpit-style overview you see in the screenshot above. The TUI is faster for keyboard-driven workflows: / to search, j/k to navigate, Enter to resume.
Under the Hood
It is a single Go binary (~12 MB) with a Svelte 5 frontend embedded via go:embed. No external dependencies to install. The backend has a provider for each tool that knows how to read that tool’s session format. Adding support for a new AI coding tool means writing one Go file that implements a simple interface: scan sessions, resume command, delete session.
The hardest part was dealing with six completely different storage formats. Each tool has its own ideas about where sessions live. Claude Code scatters metadata across JSONL files. Codex stores sessions in SQLite but message counts in separate JSON. Gemini puts chat files in temp directories with no obvious project mapping. Claude Desktop wraps Claude Code sessions in its own JSON layer, so VibeCockpit deduplicates them to avoid showing the same session twice.
Active session detection works too. If a Claude Code session is still running, VibeCockpit marks it as active in the dashboard so you can see at a glance what is live.
Search That Actually Works

The search box supports both fuzzy matching and structured filters. Type model:opus branch:main active to find active sessions using an Opus model on the main branch. Or just type “ebpf” and it finds sessions with that in the project name or first prompt.
Filter chips let you narrow by tool, model, or active status with one click. You can group sessions by tool, project, or date. And the model picker lets you switch models when resuming a session, useful when you started with Sonnet but want to continue with Opus, or when benchmarking different local models.
Remote SSH Scanning
This was the feature that surprised me the most. I run Claude Code on my homelab server regularly, and those sessions were invisible from my laptop. VibeCockpit can scan sessions on remote machines without installing anything on the remote:
# ~/.config/vibecockpit/config.yaml
remote_sources:
- name: homelab
host: dev.example.com
user: nils
method: ssh

Resuming a remote session opens an SSH terminal to the remote machine and runs the tool’s resume command in the right directory. Remote sessions show up right next to local ones, so you get one unified view across all your machines.
Install and Run
The install script detects your OS and architecture, downloads the right binary, and sets up a desktop entry. Linux and macOS, amd64 and arm64.
curl -fsSL https://raw.githubusercontent.com/NJannasch/vibecockpit/main/install.sh | bash
# Start the web dashboard
vibecockpit --web
# Or start on login (optional)
vibecockpit --autostart # systemd (Linux) or launchd (macOS)
With autostart, the dashboard runs on localhost:3456 whenever you log in. Always one browser tab away.
What Comes Next
VibeCockpit currently reads session data. It never modifies your files (except when you explicitly delete a session). But the provider architecture opens the door for deeper integrations:
Session analytics. With a local SQLite database tracking session history, VibeCockpit could show trends: sessions per tool per week, average session duration, which projects get the most AI attention. The same compounding memory effect you get from any always-on agent, but for your coding workflow.
Secret scanning. AI coding sessions regularly handle environment variables, API keys, and config files. A lightweight scanner that flags sessions where sensitive data was exposed in prompts or tool outputs would be a useful safety net. I already built something similar with eBPF for CI/CD pipelines, and the same pattern applies here.
MCP integration. Right now VibeCockpit reads static session files. With an MCP server, other tools could query your session history programmatically. Imagine an always-on agent asking “which sessions touched this file in the last week?”
More providers. Cursor is next on the list — its session storage is similar to Copilot’s. Windsurf, Aider, and any tool that stores sessions locally can be added with one Go file. Pull requests welcome.
Why This Matters
In the AI adoption pyramid, I talked about moving from chat to agents. But there is an infrastructure problem hiding underneath: as you adopt more AI tools, your sessions fragment across incompatible storage systems. You lose context, you lose continuity, you lose the ability to find what you did last week.
This is not a problem that any single AI company will solve. Anthropic is not going to index your Copilot sessions. OpenAI is not going to parse your Claude JSONL files. The solution has to be independent, open, and local-first.
VibeCockpit is that missing layer. Not another AI tool. A tool for your AI tools. The cockpit for your copilots.
curl -fsSL https://raw.githubusercontent.com/NJannasch/vibecockpit/main/install.sh | bash
vibecockpit --web
If this solves a problem you have, give it a star on GitHub. If a provider is missing or broken, open an issue. The interface is simple enough that adding a new tool is a single afternoon’s work.
Part of the Beyond the Chat Window series.
The views and opinions expressed here are my own and do not reflect those of my employer.