Skip to main content

panopticon

Agents write the code, you own what ships.

Panopticon is a terminal-native control plane for running multiple coding agents. It drives Claude Code, Codex, or pi for each task and gives you one place to supervise the fleet.

Quick install

pipx install panopticon-next
panopticon quickstart

Run quickstart from any directory. Connect a coding agent, select a repository, and open the dashboard. Missing prerequisites have a corrective action; your saved connection remains available when you resume. See Requirements and Install for details.

  • A live dashboard of all your tasks, showing which agents are working and which are blocked waiting on you, so you stop cycling through terminals to find the one that's stuck.
  • Configurable workflows that make approval points explicit and prevent Panopticon from advancing a task until the current stage is resolved.
  • Isolated by default: each agent works in its own container on its own branch so concurrent tasks do not share workspaces.

Self-hosted: your infrastructure, your secrets, your repos. Workflows control Panopticon's state transitions; they do not restrict the commands an agent can execute. Use least-privilege credentials and forge branch protection as hard controls. Containers separate workspaces but are not a security boundary against a malicious or compromised agent. Quickstart writes a separate environment file for each repository. Reusable agent connections contain no GitHub token; repositories using the same Codex subscription share its rotating authentication directory.

New here? Follow the new-user walkthrough. For the mental model behind the dashboard, read docs/overview.md.

The dashboard

The whole fleet in one terminal view — every task's state, whose turn it is (agent or you), its container status, and its repo and slug:

══════════════════════════════════════════════════════════════════════════
  panopticon                                                6 tasks
──────────────────────────────────────────────────────────────────────────
  state          turn       container   repo       slug[memo]
  ITERATING      agent      live        web-api    add-oauth[Add OAuth login]
  PLANNING       user       live        web-api    fix-upload[Flaky S3 upload]
  MERGING        agent      starting    dashboard  dark-mode[Dark-mode theme]
  ITERATING      user ⚠     down        web-api    migrate-db[Move to Postgres]
  ORCHESTRATING  agent      live        infra      q3-cleanup[Q3 tech-debt]
  PLANNING       agent      live        infra      └─ drop-py38[Drop Python 3.8]
  COMPLETE       agent      –           web-api    ship-readme[README refresh]
──────────────────────────────────────────────────────────────────────────
  t attach   n new task   x drop   / search   d detail   ? help   q quit
══════════════════════════════════════════════════════════════════════════

The turn column is color-coded live — green when the agent is working, yellow when it's your move, red () when a task is blocked waiting on you — so you can tell at a glance which agents need you. The container column tracks each agent's sandbox as it spawns (queued → … → live, or down when one needs a respawn), and governed sub-tasks nest under their governor (└─). Press t to drop into any task's session, ? for the full key list.

Requirements

Panopticon runs the control plane on your host and each agent in its own container, so it shells out to a few host tools. You need:

  • Python 3.11+
  • Docker, with the daemon running
  • tmux: the dashboard, console supervisor, and task sessions run on a dedicated tmux -L panopticon server
  • git: the session service clones a per-task workspace for each agent

Foreground setup offers Claude, Codex, or Pi. Pasting a token or API key requires no agent CLI on the host; install Claude Code or Codex locally only if you choose its native browser login. The task container supplies the agent CLI. Use Claude or Codex for the first GitHub walkthrough.

panopticon quickstart checks these first; run panopticon doctor to re-check any time.

Install

Panopticon is a command-line app, so pipx is the recommended way to install it: it puts the panopticon command on your PATH in its own isolated environment. If command -v pipx prints nothing, install pipx first:

# macOS
brew install pipx

# Ubuntu or Debian
sudo apt-get update
sudo apt-get install --yes pipx

Make commands installed by pipx available in future shells, then close this terminal and open a new one so the PATH change takes effect:

pipx ensurepath

In that new terminal, install Panopticon, then start setup:

pipx install panopticon-next
panopticon quickstart

You can verify the installed release with panopticon --version; it should print panopticon 0.2.12 without requiring a checkout or uv. //: # (x-release-please-end)

The distribution is panopticon-next, but the command you run and the package you import are both panopticon. To work from a checkout, run uv sync and then uv run panopticon doctor.

Quickstart

Run panopticon quickstart from any directory:

panopticon quickstart

Connect Claude, Codex, or Pi, then confirm a repository URL or local path. The current checkout is suggested when available; a checkout without an origin works locally, and a Git bundle is labeled a fixed snapshot. GitHub sources enable GitHub workflows; local and other sources use the local Git workflow.

Setup runs in the foreground. Claude can open its browser login and accept a hidden token paste; Codex browser login writes directly to a new private directory. GitHub workflow credentials are entered separately for the selected repository. A saved connection means credentials are configured; the first real task verifies provider access.

Use panopticon setup to connect an agent even before Docker or tmux is installed. To repair a registered repository, open the repository screen and press s, or run panopticon setup --repo <repo-id>. Repository repair requires the local task service. Pending tasks remain paused after repair: select the one you want to start and press R. Running tasks remain available. Existing explicit credentials are preserved unless you select replacement.

A second repository can use the saved agent connection. Credentials are configured on the current host; a remote runner needs its own setup. Bare panopticon opens first-use setup when no stack configuration exists and otherwise opens your fleet.

Quickstart enables task-service authentication automatically. On Linux, the task service binds to 0.0.0.0 so bridge containers can reach it; restrict reachable interfaces with a firewall or encrypted, access-controlled transport before running on an untrusted network. On macOS it binds to loopback. See docs/auth.md.

Your first task

This GitHub walkthrough currently requires a Claude or Codex task. On the dashboard:

  1. Create it. Press n, pick the repo, and choose github-self-reviewed for the shortest walkthrough: you perform its approval. github-peer-reviewed instead requires another person to approve the PR. For a predictable test, enter Add a hello-panopticon.txt file containing hello from Panopticon and do not change any other files. A new task row appears under the selected repo.
  2. Watch it start. The task's container column moves queued → … → live as the runner spawns its container; once it's live the agent starts on its own branch and begins planning automatically.
  3. Respond when it needs you. The turn column shows whether the agent is working or waiting on you. Press t to attach to its session, then detach with Ctrl-b d (or your own tmux prefix + d) to return to the same dashboard and highlighted task.
  4. Open and approve the plan. When plan.md is ready, press a, select plan.md, and press Enter. Press t to attach again, give any correction, and invoke the advance operation: /advance in Claude or $advance in Codex. The dashboard advances to ITERATING while the agent implements and tests the change. The workflow guide documents command syntax for the other harnesses and workflows they support.
  5. Review what ships. The agent opens a PR; press p on the dashboard to open it in your browser. For the example request, the PR should add only hello-panopticon.txt, containing one line: hello from Panopticon. Attach and invoke advance with the same harness-specific syntax to approve the self-reviewed gate. The task moves through MERGING; success is a merged PR and a COMPLETE dashboard task with no remaining task container. Configure GitHub branch protection as the hard merge control.

When you finish evaluating Panopticon, run panopticon stop. It stops Panopticon task containers and its dedicated tmux server; stored configuration, credentials, task records, and artifacts remain on disk. Verify teardown with:

docker ps --filter label=panopticon.task
tmux -L panopticon has-session 2>/dev/null; test $? -ne 0

Both checks exit successfully when teardown is complete: Docker lists no Panopticon task containers and the dedicated tmux server is gone. Running panopticon stop again also succeeds.

Configuration

Panopticon stores its data under standard XDG locations, each overridable by an environment variable (resolution is $PANOPTICON_*$XDG_*_HOME/panopticon → the default below):

What Default location Override
Database ~/.local/share/panopticon/panopticon.db PANOPTICON_DB (or PANOPTICON_DATA)
Artifacts + per-task clones ~/.local/share/panopticon/ PANOPTICON_DATA
Layers, secrets, workflows ~/.config/panopticon/ PANOPTICON_CONFIG (workflows also via the --workflows-path flag)
Per-repo clone cache ~/.cache/panopticon/repos/ PANOPTICON_CACHE

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

panopticon_next-0.2.12.tar.gz (1.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

panopticon_next-0.2.12-py3-none-any.whl (399.0 kB view details)

Uploaded Python 3

File details

Details for the file panopticon_next-0.2.12.tar.gz.

File metadata

  • Download URL: panopticon_next-0.2.12.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for panopticon_next-0.2.12.tar.gz
Algorithm Hash digest
SHA256 9e2e49e9cdc579279b7c0414974f7ed75b22676886b7459bb0b9d1660be90823
MD5 7c6505a5489b2bb92d7684a7f04a057a
BLAKE2b-256 78d8c25f6d6940e9483ee3ab14d09c920543df48765359446cbb643c7f384da8

See more details on using hashes here.

Provenance

The following attestation bundles were made for panopticon_next-0.2.12.tar.gz:

Publisher: release.yml on Unsupervisedcom/panopticon-next

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file panopticon_next-0.2.12-py3-none-any.whl.

File metadata

File hashes

Hashes for panopticon_next-0.2.12-py3-none-any.whl
Algorithm Hash digest
SHA256 3d97ef418d27b27ef589c7c27f3a2f0f9a0b313dc8cd960dc3768767a2e0754d
MD5 d547715016fe674450613750baf9f36c
BLAKE2b-256 4e16359d57763514a81d1544497ca93a4021bdf5d0ed0f2cbc3b06b2fb35b409

See more details on using hashes here.

Provenance

The following attestation bundles were made for panopticon_next-0.2.12-py3-none-any.whl:

Publisher: release.yml on Unsupervisedcom/panopticon-next

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.2.13

2 files

This release

0.2.12 This release

2 files

0.2.11

2 files

0.2.10

2 files

0.2.9

2 files

0.2.8

1 file

0.2.7

1 file

0.0.6

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page