STATUS // ONLINE
CALLSIGN // BATTLELAB-ACTUAL
BATTLELAB
// Command & Code //

Self-hosted command deck for your AI-coding agents — Claude Code, opencode, Codex, Gemini & Antigravity. Sessions survive every deploy. Pulse curates your recent work; a live map commands it. One-line install.


ENGINES // 5 SESSIONS // PERSISTENT INSTALL // 1 LINE SYS // 00:00:00Z
BATTLELAB // AGENT-MAINSTATUS // LIVE
~/claude/app on main · scroll up for history why is the auth redirect looping? Picking up where you left off — the redirect loop is the missing next param on /login.
curl -fsSL https://battlelab.superstatus.io/install.sh | sh

Stream through our infra — no exposed box

Don't want to run a reverse proxy or open a port? Opt in at install and your box dials out to our blind relay — reach a live terminal from any browser. No account, free, sessions cap at 60 minutes.

curl -fsSL https://battlelab.superstatus.io/install.sh | AGENT_SESSIONS_REMOTE=stream bash
STEP 1 // INSTALL ON YOUR BOX STEP 2 // OPEN CONNECT PAGE STEP 3 // ENTER NAME + KEY
OPEN CONNECT PAGE ▸

The relay is blind

Our relay is a dumb bridge. It sees only ciphertext and a console name you choose — never your keystrokes, output or files. We forward encrypted frames between your box and your browser and nothing else; there's no plaintext for us to read, log or hand over.

End-to-end encrypted

The session is encrypted end-to-end between your box and your browser — an X25519 handshake keyed by your access key, then AES-256-GCM. The keys live at the two ends, not on the relay, so the relay can't decrypt the stream even if it wanted to.

No account, nothing stored

No signup, no email, no profile. Your box dials out to the relay — we don't run code on it and hold no credentials for it. Sessions cap at 60 minutes, and there's nothing to delete afterward because there was never an account.

Your access key = full control

The access key is generated on your box and is the pre-shared key for the encryption — it never travels to us in the clear. It grants full control of that machine, so keep it secret. BattleLab staff will never ask for your access key or console name.

Persistent agents

Agents run in detached sessions that outlive tabs, reboots and deploys. Reattach and scroll up — clean, console-style history for all five engines: Claude, Codex, opencode, Gemini & Antigravity.

Pulse — work at a glance

Pulse reads your recent sessions and curates a state of your work overview — ranked by what needs you (), what's in flight, and what's idle, each one click from jumping back in. Cached so it loads instantly; pick the depth, from free local curation to an AI synthesis banner.

Tactical map & projects

A live flowchart of every session, grouped into projects. Open multiple agents on one screen and command the whole operation at a glance.

Touch-ready

A mobile-first terminal with a real compose bar, control keys and image paste. Drive your fleet from a phone.

AI session reviews

An AI reads every running session and posts a one-line summary on each row, flagging the ones that need you () — triage your whole fleet at a glance, no transcript-scrolling required. Point it at any OpenAI-compatible endpoint, even a local model.

AI auto-sort

New sessions file themselves. An AI matches each unassigned session to the right project — confidently, or not at all — so your map stays organised without manual sorting. Reuses the same endpoint as reviews.

Frequently asked

What is BattleLab?

BattleLab (the agent-sessions project) is a self-hosted, mobile-first web app that organizes and runs your AI coding agents — Claude Code, Codex, opencode, Gemini, and Antigravity — in one place, each in its own persistent terminal session.

Which AI coding agents does it support?

Five engines today: Claude Code, Codex, opencode, Gemini, and Antigravity. Each appears in a unified sidebar, grouped by project, with per-engine badges and filtering. Adding an engine is one small provider in the registry.

What is Pulse?

Pulse is an AI-curated overview of your recent work: it reads your sessions and ranks them by what needs you, what's in flight, and what's idle, with one-click jump-back-in. Results are cached so the page loads instantly, and you pick the depth — free local curation (zero LLM calls) or an AI “state of your work” synthesis. It reuses the same OpenAI-compatible endpoint as AI reviews.

Is it free and open source?

Yes. BattleLab is open source under the MIT license and fully self-hosted — your sessions and data never leave your own machine.

How do I install it?

One line: curl -fsSL https://battlelab.superstatus.io/install.sh | sh. It's a rootless, user-level install (no root, no system daemon) with atomic releases, one-step rollback, and an opt-in self-updater.

Do sessions survive reboots and deploys?

Yes. Every session runs under its own detached PTY (dtach), so you can close the tab, reboot, or upgrade the app and reattach to the exact same conversation — with clean, console-style scroll-up history for all five engines.

Does it work on a phone?

Yes — it's mobile-first: a touch-ready terminal with a real compose bar, control keys, and image paste, so you can drive your whole fleet of agents from a phone.

Is it secure to expose?

It's a single-admin tool that launches agents with permission bypass by design — treat it like SSH. Run it on your own host behind a reverse proxy (TLS + auth); it also has cookie + CSRF + same-origin checks and optional TOTP two-factor auth.

Can BattleLab read my streamed sessions?

No. Streaming is opt-in (AGENT_SESSIONS_REMOTE=stream) and end-to-end encrypted between your box and your browser (X25519 keyed by your access key, then AES-256-GCM). Our relay only forwards ciphertext tagged with a console name you choose — it never sees plaintext, holds no keys, and there's no account or stored history. Sessions cap at 60 minutes.

How do I uninstall it?

One line: curl -fsSL https://battlelab.superstatus.io/uninstall.sh | sh. It asks to confirm, then stops the service, removes the install (the ~/.local/share/agent-sessions tree, its systemd units, config, and scrollback cache) — and leaves your agents' own session history (Claude / Codex / opencode / Gemini / Antigravity) completely untouched.

UNCLASSIFIED // INTERNAL USE // SELF-HOSTED // BATTLELAB
Created with by superstatus.io · GitHub · Legal