FrontierJS

Workbench

Tooling · Laptop@frontierjs/workbench

Basecamp runs your servers. Workbench runs the machine you build on — and it is a FrontierJS app too.

$ fli desktop:install  # from a FrontierJS checkout — private, never published

Chats

A Claude Code chat per pinned checkout

Each repo you pin has its own chats, and the ~/.claude history is indexed into the app's own database, so last week's conversation is a row you open rather than a file you dig for.

Replaces

one terminal tab per repogrepping ~/.claude by hand

Atlas

Issues, open questions and rulings, read and ruled on

The project's registers rendered as one screen, with Claude beside it to talk an item through. Decide shows the open questions one card at a time: swipe to rule.

Replaces

reading markdown registers in an editor

Autopilot

The project's loops as a town

Lanes, the Dock, the Switch and a replay of the day, so seeing what your agents did overnight means opening one page rather than reading their logs.

Replaces

tailing logsa tmux session per loop

Terminal

A shell in your home folder that outlives the tab

Close the browser and the session keeps running; open it again and you are back where you were.

Replaces

tmuxscreen

Fleet view

Basecamps · Servers · Charter

Every Basecamp this laptop made, whether it answers, plus Back up now and Restart. Servers lists the machines your Hetzner and DigitalOcean tokens reach; it only lists and verifies them, and each token is stored encrypted and guarded.

Replaces

provider consoles in four tabs

Laptop

fli's own files on this machine — disk, keys, what is running

A secret never leaves the API. The page gets presence, mode and a masked key, and a probe like gh auth status runs only when you press Check.

Replaces

ls ~/.config and hoping

Notifications

An in-app bell, plus a push to your phone

Built on @frontierjs/notifications with ntfy as the push transport. Autopilot can ask for a ruling on your phone and act on the button you tap.

Replaces

a Slack bot you wrote for yourself

Peering

A signed call to Basecamp, never an import

The laptop holds an Ed25519 key that Basecamp enrolls as a peer. Neither package imports the other, so the only thing that crosses between them is a request Basecamp can verify.

Replaces

a shared admin tokenSSH from the laptop

Loopback only

Binds 127.0.0.1, signs in with one pass-phrase

It can start a shell and spawn claude on the machine it runs on, so it is a laptop tool and never a hosted service. Production mode refuses the dev pass-phrase.

Replaces

Nothing — there is no common equivalent to swap out.

Desktop

The same web/ in a Tauri window

The browser app bundled into a native shell and added to your launcher. Clicking it starts the API if nothing is answering yet.

$ fli desktop:install   # add it to the app launcher
$ fli desktop:run       # build, start the API, open the window

Replaces

Electron wrappersa pinned browser tab