{"repo":"thrinz/agentpeek","free":true,"listed":false,"github":"https://github.com/thrinz/agentpeek","clone":"git clone https://github.com/thrinz/agentpeek.git","description":"The browser control panel for Claude Code — persistent sessions you drive as a terminal or a streaming chat, self-hosted over Tailscale","language":"Python","stars":12,"topics":["ai-agents","anthropic","claude","claude-code","fastapi","self-hosted","tailscale","tmux","wsl2"],"license":"MIT","category":"self-hosted-apps","readme_excerpt":"agentpeek Persistent Claude Code sessions in your browser agentpeek is the free, self-hosted browser control panel for Claude Code . Start a session on your Linux/WSL2 box, drive it as a terminal or a chat, and reach it from any browser over your tailnet — it keeps working when you close the laptop. You start Claude Code (or any shell) in a session, close the laptop, and it keeps working. Open the same browser tab from another machine and you're right back in it — the session never stopped. Sessions are plain named tmux sessions, so the exact same ones are reachable over SSH with tmux attach . agentpeek is where the work happens: you drive the AI agents that generate your content — docs, code, reports, sites. Its companion filepeek is the downstream viewer that renders the .md / .html / .xlsx files those agents leave behind. See Companion tool. Architecture Everything binds to 127.0.0.1 and is served from one port, so exposing it on the tailnet is a single command (see below). The terminal iframe is same-origin, which keeps clipboard access and tailscale serve simple. - app/multiplexer.py — the only module that knows about tmux (swap point for another multiplexer). - bin/agentpeek-attach — ttyd entrypoint; validates the session name, replays pane history ( tmux capture-pane -S - ) so browser scrollback covers output from before the attach, then exec tmux attach . - Switching sessions in the sidebar swaps the iframe URL; the old iframe's WebSocket closes, ttyd reaps that tmux ","default_branch":null,"files":null,"tree":[],"storefront":"/r/thrinz","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/thrinz/agentpeek/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}