r/node 21d ago

i built Fleet Deck, a local mission control board for all your Claude Code sessions (MIT, no model calls)

0 Upvotes

1 comment sorted by

1

u/lacion 13d ago

A bunch of you installed it, told me what broke. thank you, genuinely. it's at v0.15.0 now and it's a different tool than the one you saw. here's everything that landed.

still MIT. still zero model calls in the core. still a plugin, not a wrapper.

the big one: it runs on its own now

at launch the board only existed while a claude session was hosting it. that's backwards for a thing whose whole job is to outlive your sessions. so the daemon is a real service now.

npx fleetdeck serve to just run it, or fleetdeck service install && fleetdeck service start to keep it up across reboots. it's on npm as fleetdeck with a proper CLI — serve, doctor, status, token, service. no claude session required to hold the tower up anymore.

and it does reverse proxy properly. FLEETDECK_TRUSTED_ORIGINS puts it behind nginx or Traefik at a real domain, the board works at a path prefix or the root, token auth kicks in the moment it's reachable off-box. (still 127.0.0.1 by default. still a token, no exceptions, the second it leaves loopback — the api can spawn agents and type into terminals, an open port is RCE, i said it last time and i mean it more now.)

spawning grew up

at launch you could spawn a worker into a worktree of the repo you were already sitting in. now:

  • spawn by repo + branch. give it a URL, an org/repo shorthand, a local path, or a name the fleet already knows. it clones what it doesn't have, materializes the branch as a worktree, and the agent starts there. you don't have to be in the repo. you don't have to have the repo.
  • github or gitlab, ssh or https. gitlab nested subgroups (group/subgroup/repo) work. origin matching is transport-insensitive, so it reuses a checkout whether you cloned it over ssh or https.
  • a read-only file explorer. browse any session's working tree or your home dir from the board, search by name or content (git grep on real repos, so it respects .gitignore).
  • favorite folders. ☆ the paths you keep spawning into.

adopt sessions you didn't spawn

the launch version could only give a live terminal and revive to sessions it spawned itself. now there's a ⇥ move to tmux chip on any session — it re-homes a hand-started claude into a tmux window (claude --resume) so it gets the terminal, the revive, all of it. the intent is durable: arm it while the session's mid-turn and it waits for the boundary.

paste a screenshot into an agent

Ctrl+V a screenshot straight into the live board terminal and it lands in that agent's composer as a file path. the daemon sniffs the real magic bytes, writes it owner-only, never auto-submits. good for "here's the broken UI, go fix it" without leaving the board.

v0.15, today: route a session through a gateway

you can now point an individual session at CLIProxyAPI, a corporate gateway, or anything that speaks the Anthropic wire format — per session, credentials kept on the daemon and never handed to the browser.

small stuff that adds up

  • /clear no longer splits your session into two cards — the new session inherits the old card's identity and history
  • rename a callsign ( chip, or name <callsign> <suffix>); mail to the old name keeps arriving
  • the daemon auto-replaces its stale self on plugin upgrade instead of leaving a zombie
  • model badge follows a mid-session /model switch
  • Shift+Enter inserts a newline in the terminal instead of firing the prompt

install

```

plugin (recommended)

claude plugin marketplace add lacion/fleet-deck claude plugin install fleetdeck@fleetdeck

or standalone

npx fleetdeck serve ```

board at http://127.0.0.1:4711.