~
← Stack

Lobsterbox + Lobsterfleet

2026 - now

  • Rust
  • Axum
  • Yew/WASM
  • SQLite
  • Hetzner
  • Docker
Docker + Hetzner
leases from one CLI
Terminal + VNC
in the browser
Agent API
drive boxes headless

Self-hosted remote dev stack

Lobsterbox is the lease control plane. It hands out Docker or Hetzner runners, stores lease state locally, syncs my checkout over rsync, exposes lbx run, lbx ssh, and lbx cleanup, and reaps idle boxes.

Lobsterfleet is the operator layer. It is a Rust Axum server with a Yew/WASM app, SQLite, GitHub OAuth, admin settings, a board, shared sessions, terminal and VNC bridges, and Codex bootstrap that copies host credentials and project defaults onto each box.

Together they give me a self-hosted version of the crabbox and crabfleet workflow I liked, but with my own auth, defaults, deployment shape, UI, and agent API.

Why I built it instead of using OSS

Crabbox and crabfleet were useful references, but I wanted this stack to run as plain self-hosted services in my homelab and on Hetzner without inheriting managed control-plane assumptions. I also wanted hyper-personal flows: Codex defaults per box, local broker ownership, my own GitHub and SSH boundaries, board-to-session links, shared read-only terminals, and desktop boxes when a task needs VNC.

Rebuilding it in Rust let me push the important boundaries into typed crates instead of keeping a large app-shaped script. Lobsterbox is a 9-crate broker workspace, while lobsterfleet is a 23-crate fleet workspace with the server, DB, GitHub, broker client, SSH, VNC, terminal protocol, Codex bootstrap, and static app serving split apart.

What improved

  • Replaced the old Node/TS and React app path with one Rust server and a Rust/WASM frontend, leaving no Node/TS app runtime in the current lobsterfleet path.
  • Added a broker that can run local Docker leases or live Hetzner boxes from the same lbx flow.
  • Verified the real Hetzner loop end to end: lease, Codex bootstrap over SSH, browser terminal, release, and zero active leases left behind.
  • Added browser access to both terminal and VNC sessions, including GUI boxes with Xvfb, x11vnc, and openbox.
  • Made fleet state durable with 25 embedded SQLite migrations, session logs, shared links, admin policy, and board lease links.
  • Added agent-facing API routes so local agents can create sessions, attach to PTYs, write summaries, and pull state without driving the browser.

Future plans

  • Add more provider adapters beyond Docker and Hetzner so the same broker can target my homelab, cloud boxes, and spare machines.
  • Add tighter per-agent budgets, quotas, and lease caps so long-running agent work cannot quietly run up spend.
  • Record session timelines with better search, replay, and artifact links so a completed box leaves a useful work log.
  • Improve multi-user policy around GitHub tokens, SSH keys, and Codex credentials before opening it beyond my own stack.
  • Package a cleaner deploy path with backups, health checks, and upgrade smoke tests for the LXC setup.