Meet fleet

A flagship at dusk signals a fleet of small boats, each carrying a glowing screen

Ever since I got my first HP-41 calculator in the early 80s I have constantly been tweaking my setup. I tuned my Windows back in the 90s to something unrecognizable. Moving to Linux in 1999 a whole world of opportunities opened. The tweaking of my desktop and my workflow became a passion that continued uninterrupted until the summer of 2025. Then it took a steep turn upward with Claude Code.

I can run a dozen Claude Code sessions at once. Each has its own project and its own window. One writes my Rust tools. Another searches my own data. One looks after the laptop. I have one for the Amar RPG sessions. One for online trading. Etc.

In the last two weeks they got some 1,000 prompts from me and made 21,000 calls to Claude.

With that many sessions I can get lost. Which one is done? Which one waits for me? And what did it ask me an hour ago, before its next answer pushed the question off the screen?

So I needed fleet.

One screen

fleet in a terminal: sixteen sessions and an inbox

fleet lists every session on the laptop. Who works. Who waits for me: YOURS, in orange. Who is idle or off. The ETA a session gave (as a clock time), turning red once that time has passed. Context size, model and my last prompt. Below: an inbox of files that just landed, from the phone or from another session.

It ticks every 2 seconds while open, with one stat per session file.

Sessions talk to each other

A message to a session becomes a file in its mailbox folder. A hook hands it over when the session’s turn begins or ends. If the session is idle, fleet wakes it.

Last night I asked one session which apps and repos needed an update after I launched my new software page. It sent the app changes to the session that owns my Rust tools and did the rest itself. A few minutes later the other session reported back: done, with the commit numbers.

I don’t have to be that meat proxy between them.

One thing they will not pass on: my yes. When I approved a release through one session, the other refused to publish on it. It wanted the yes from me. Control.

Every answer has the same shape

A Claude Code session: an answer that ends with Closed: 1 and 2. Your move

Every session follows the same rules. The verdict comes first. A question gets a number. An action only I can do (like sudo) is a line that starts with “Your move”. Work that goes on gets an ETA as a clock time (never “in 20 minutes”).

fleet keeps every numbered question and action on a list until the session closes it. I answer with the number: “3 yes”. Hooks check the rules and send an answer back when it breaks them. The answer gets rewritten until it meets my requirement for a good output.

Notice that all output is in my HyperList format, properly syntax highlighted.

On the phone

The fleet app's session listAn answer on the phone

The fleet app in nomad is the twin on my phone. It notifies when a session finishes its turn, or when work with an ETA is done. It shows the list, and each answer in full. Every open item gets Yes, No, Done and Rec (as recommended), with an optional text from me.

The new software page was built that way, managed completely from my phone.

How it fits together

How fleet links the sessions, a small server and the phone

The laptop writes finished turns, answers and the session list to a folder. Syncthing copies it to a small server. The phone asks the server. My messages go back the same way, and the session gets them on its next turn.

Get it

fleet is written in Rust and is part of Fe2O3: github.com/isene/fleet. The phone app is on the nomad page. All public domain.


Link to this post: https://isene.org/2026/10/Fleet.html