Axel, a smiling axolotl in neon colours

Agent orchestration, designed for Rex.

A year of agent apps taught us what works: threads, and named agents. Axel brings them back to the terminal, on Rex, where your work already lives, on this machine or any other on your tailnet.

›What are we building?
add retries to the webhook sender
> @atlas add retries to the webhook sender, then ask @nova@mini to review it
›steer, or @mention another agent
Threads from the Codex app and T3 CodeNamed agents from Buzz and skills.shThe terminal from Rex

The foundation

Rex fixed the terminal. So orchestration can live there again.

The agent apps of the past year found the right ideas, then rebuilt the terminal badly to deliver them: their own windows, their own status lights, their own way to reach a remote machine. They had to. The terminal couldn't keep work alive, couldn't tell you a program was waiting on you, didn't know your other machines, and couldn't even scroll: a long agent conversation in a full-screen TUI, or inside tmux, is junk the moment you scroll up.

Rex, by Superlogical, starts from scratch on what a terminal session is: a durable session around the work itself, driven by software while you can always see and take control of it. Sessions survive disconnects and devices. Programs report when they're working, done or blocked on you, and Rex shows it on the tab. Servers join your tailnet on their own. Scrollback is the terminal's, not a TUI's redraw. And every bit of it is an API a program can drive.

Axel is just a program in a Rex pane, built on exactly that. A thread streams into its pane as plain terminal output, so you scroll it like anything else.

Threads

The unit of work is the thread, not the tab

The Codex app and T3 Code got this right. A thread is what you asked for and everything done about it: the conversation, every tool call, the diff, the agents that joined. A chat tab dies with its window; a thread doesn't.

That changes how you work. You run five things at once without losing any of them, come back tomorrow and resume, hand a thread to another agent, and settle it when it's done.

One worktree per thread, if you want it. Parallel agents on one repository don't step on each other. Or work in place, across several projects, or none.

Signed, so it travels. In Axel a thread is a log of signed events. Copies on two machines merge, which is what lets a thread run on the mini while your laptop sleeps.

thread · Add retries to the webhook sender
atlas · session 1 · laptop · ended
nova · session 2 · laptop · ended
atlas · session 3 · mini · working
open
being worked on
settled
finished, still listed
archived
put away

Named agents

Specialists, not one agent that knows everything

Buzz gave agents names and keys; skills.sh made skills a one-line install. Put together, you stop prompting a generic assistant and start working with a team: atlas builds, nova reviews.

A second pair of eyes. The best review comes from someone who didn't write the code. atlas asks nova, a different agent with a different model and a review skill, and gets the answer as its next prompt. You see every message.

No skill bloat. Install sixty skills into one agent and every session pays for their descriptions, and picks the wrong one. Each named agent carries only its own.

Its own key, permissions and budget. Everything atlas does is signed by atlas. It reaches only the agents you allowed, can't loop, and stops at its daily budget.

atlasbuilds
claude
rustaxumsqlx
novareviews
codex
reviewsecurity
Message from atlas, another Axel agent on this thread:
@nova the retry backoff is in src/webhooks.rs, tests pass. Review it and reply to atlas.

Remote hosts

Ask, then close the laptop

Your Mac mini at home is on your tailnet, and Rex is on it. @atlas@mini runs atlas there, in the mini's own Rex session, or make the mini its default.

The thread streams to your laptop as if it ran locally. Close the lid on the subway; its branch and uncommitted work come home when you reconnect. A running session can even move between machines and keep its conversation.

Keys never leave home. The host gets a short-lived grant to sign for atlas, on one thread only.

laptop
atlas's key stays here
thread + code →delegation →← events, branch
mini
signs for atlas: one thread, 7 days
$ axel agent edit atlas --host mini
$ axel session move 01j9… --to local

Autopilot

No babysitting

Each agent has a mode for routine permissions, a guard for the things that are never routine, and a daily budget. When an agent does need you, Rex shows it on the tab, and the question waits in the thread and in your inbox.

Every token counted. Input, output and cache tokens, and the estimated cost, per thread and per agent.

No screen scraping. Status comes from hooks, the Agent Client Protocol or axel status. It runs Claude Code, Codex, OpenCode and any ACP agent.

autopilotnever asks; the guard still refuses irreversible commands
editsfile edits go through, everything else asks
supervisedasks before every action
planread-only
atlas · 41k tokens · $0.62 today
refused: nova has spent $20.00 today and reached its daily budget

Why not today?

Two commands. The first time, Axel checks your machine and helps you create your first agent.

$ curl -fsSL https://axel.md/install | sh
$ axel
Read the installation guide