Why agentpeek exists
You start Claude Code in a terminal. Then you close your laptop — and the session is gone.
So you SSH back in from your phone and fight with tmux on a tiny screen, trying to
find the session you lost.
agentpeek turns those sessions into persistent, browser-accessible workspaces. They keep working when you close the laptop — open a tab from any device and you're right back in.
Why not just SSH?
SSH and tmux can do this — if you enjoy the fight. agentpeek is that same persistence, with a UI actually built for it.
| SSH + tmux | agentpeek | |
|---|---|---|
| Interface | Terminal only | Terminal and a Claude chat |
| On mobile | Painful | Built for the browser |
| Find a session | Remember its name | Visual session manager |
| Reconnect | SSH back, re-attach by hand | Open a browser tab |
| Files & input | Type paths by hand | @-mention, image paste, voice |
| Keeps running | tmux, configured yourself | Built in — never stops |
Two ways to drive an agent
🖥️ Shell — a real terminal
- Named, persistent tmux sessions with unlimited scrollback
- Select-to-copy, native browser scrollback, no copy-mode dance
- Reach the exact same session over SSH with
tmux attach - An "AI" start option that launches your own command (claude, aider…)
💬 UI — a streaming Claude chat
- The Claude Agent SDK: it edits files and runs commands, as chat
- Token-streamed replies with rendered Markdown, tables & code
- Inline tool activity, a message queue, Stop / Esc to interrupt
- @-mention files, paste/drop images, voice in & out, model picker
What you get
🔄 Sessions that persist
Named tmux sessions and always-on background agents survive a closed tab or a hopped device — pick up exactly where you left off.
💬 Streaming Claude chat
UI mode runs the Claude Agent SDK: token-by-token replies, rendered Markdown and tables, inline tool calls, queue and interrupt.
📎 @-mention, paste & voice
Reference files with @, paste or drop images for vision, dictate with your mic, and have replies read back.
🗂️ Folders & working dirs
Group sessions into collapsible folders and launch each one in any project directory under your tree.
☁️ First-party, Bedrock or Vertex
Use your Claude Pro/Max subscription, an Anthropic API key, AWS Bedrock, or Google Vertex AI.
🔐 Self-hosted & private
Binds to localhost, exposed only over your Tailscale tailnet, with optional password login. Nothing is public.
See it in action


Companion app
🪟 Pairs with filepeek
agentpeek is where the work happens — you drive the agents that generate your docs, code, and reports. filepeek is the downstream viewer that renders the Markdown, HTML, and Office files those agents leave behind. Run them with agentpeek, read them with filepeek — both self-hosted, both reachable over your tailnet.
Quick start
git clone https://github.com/thrinz/agentpeek && cd agentpeek
./setup.sh
# reach it on your tailnet (HTTPS, tailnet-only):
tailscale serve --bg --https=9443 http://127.0.0.1:8090
Open http://localhost:8090 — on WSL2 that works straight from your Windows browser.
On Debian/Ubuntu, setup.sh installs the prerequisites for you (tmux, ttyd, a Python
venv) and the systemd services. You'll need systemd enabled on WSL2 and the
claude CLI for UI mode — see the
full prerequisites.
Frequently asked questions
Which AI agents does it run?
UI (chat) mode runs Claude Code through the Claude Agent SDK — the same agent that edits files and
runs commands, rendered as a streaming chat. Shell mode is a real terminal that can run any
program; its "AI" start option launches your own command (e.g. claude, aider).
Do sessions keep running if I close the browser?
Yes. Terminal sessions are plain named tmux sessions, and UI-mode agents run as always-on background processes. Close the tab, open it on another device, and pick up where you left off.
How do I reach it from my phone?
Over your Tailscale tailnet. agentpeek binds to localhost and you expose it with one
tailscale serve command — HTTPS, tailnet-only, never the public internet.
Can I use my Claude subscription?
Yes — sign in with your Pro/Max subscription from inside the app (the same OAuth flow as the terminal), or use an Anthropic API key, or point it at AWS Bedrock or Google Vertex AI.
Does it work on WSL2?
That's the home turf — runs in WSL2, opens from your Windows browser, and auto-starts on boot via systemd user services.
Is it free?
Yes — free and open source under the MIT license.