What comcon is
commonconsole (comcon) turns a single VPS into a multi-user workspace for AI agents. Each user gets an isolated Podman container with a persistent terminal, a real signed-in browser, and their agent of choice. When the work is done, the whole host parks as a disk snapshot and compute billing stops.
The design rule underneath everything: the container is the user. There are no unix accounts per person and no shared desktop session. Every surface a user touches is its own subdomain serving only that user's container.
Your surfaces, one URL each
With a wildcard DNS record on your domain, every capability is a plain HTTPS URL you open in your own browser:
| URL | What it serves |
|---|---|
term.<user>.<domain> | Persistent Zellij web terminal |
browser.<user>.<domain> | A real headful Chromium you and your agent share |
<agent>.<user>.<domain> | Agent web UIs, for example MagicStride on port 4096 |
<port>.web.<user>.<domain> | Any dev server you run inside your container |
auth.<domain> | The identity portal, when SSO is enabled |
No domain yet? The same surfaces work over the host IP at https://<ip>/<user>/term with a self-signed certificate and basic auth.
Two ways agents work
Native web surfaces. Anything that already serves HTTP is proxied as-is: Zellij, agent web UIs, your dev servers. No screen scraping involved.
Remote attach over SSH. The agent runs inside your container; your local client is a thin UI over a published SSH port (ssh -p 2200+slot dev@<host>, key-only). Devin attaches to a devin-server backend in your home, the way VS Code Remote attaches to a server. Claude Code and Codex run as terminal UIs over the same path.
One streamed surface. The browser is the only thing streamed, because a signed-in, visible browser is genuinely needed. You log into sites once inside browser.<user>; the agent then drives that same Chromium over the Chrome DevTools Protocol. It runs headful, not headless, so sites see a real browser.
The economics
Compute bills by the hour; storage bills by the month. comcon separates the two.
- Working: a normal cloud VM, sized to your users.
- Parked: the entire disk becomes a snapshot (~$1–2/mo on DigitalOcean), the VM is destroyed, and billing drops to $0/hr.
- Resuming: a fresh VM boots from the snapshot and every URL, session, and file returns byte-identical within a few minutes.
What a deploy gives you
- A hardened Debian host with Podman, Caddy, and automatic HTTPS.
- One container per user with sudo inside the container only — never on the host.
- Your choice of auth gate: per-user passwords, full SSO, or an external OIDC provider.
- Scheduled state backups, hibernate/warmup scripts, and per-user routes — all self-contained. No Cloudflare, no Tailscale, no third-party control plane.