agentpeek logo

Persistent Claude Code sessions,
in any browser.

agentpeek is the free, self-hosted browser control panel for Claude Code. Start a session on your Linux or WSL2 box, drive it as a terminal or a chat, and reach it from any device over your tailnet — it keeps working when you close the laptop.

Get it on GitHub Quick start

MIT licensed Python 3.10+ 100% self-hosted Tailscale

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.

Any browser agentpeek · your tailnet tmux + Claude Agent SDK your project · still running

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 + tmuxagentpeek
InterfaceTerminal onlyTerminal and a Claude chat
On mobilePainfulBuilt for the browser
Find a sessionRemember its nameVisual session manager
ReconnectSSH back, re-attach by handOpen a browser tab
Files & inputType paths by hand@-mention, image paste, voice
Keeps runningtmux, configured yourselfBuilt 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

agentpeek UI mode: a Claude chat rendering a Markdown table and a code block, with a model picker and a sidebar of sessions grouped into folders
UI mode — a streaming Claude chat that renders Markdown, tables and code, with folders of persistent sessions in the sidebar
The create-session dialog: pick a folder, Shell or UI type, and a working directory
Create a session — Shell (terminal) or UI (Claude chat), in any project folder

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.