Project Exo · Terminal client

A prompt.
A transcript.
Instruments.

exo opens the terminal client for Exo. It looks like a quiet shell, and it reports what the system is doing: which model served the call, how full memory is, how much came from the cache, what it cost.

01 / Overview

Text is the fastest way to ask for work. The screen should say what happened.

The client is a Textual app over the Exo protocol. It holds no state of its own: every line comes from an event the core sent, so a second window or the web app sees the same thing. It follows the site design language: hairlines instead of boxes, mono capitals for labels, orange only for the one thing that needs you.

Status strip

The route that served the call (orange, with the requested model, when it fell back), a memory gauge, cache share of the last call, session cost and open findings.

Activity you can read

One line per tool with its state, short arguments and elapsed time. A wire with a travelling packet shows data in flight. Nothing moves at rest.

Approvals in place

A panel with an orange rule shows the exact text that will go out. The answer is bound to it. Edit the text and the gate asks again.

Jobs, peers, memory

A finished background job, a message from a peer session and a folded stretch of memory each show as one short line with a cold label.

A first run that teaches

The first launch starts with /intro and small tips the first time something comes up. /tutorial off turns them off.

Plain when you need it

NO_COLOR drops the colours and keeps the shape. EXO_REDUCED_MOTION=1 turns off the boot, spinner, pulse and blink.

02 / Screenshots

Five states you will see.

The demo agent is called atlas and is fixing a failing test in a small library. The text is scripted for the screenshot. The layout is the real client.

03 / Key commands

Three prefixes and one menu.

/help lists everything. These are the ones you will use first.

Prefixes and keys

/Run a command.
@Attach a file or note to the message.
!Run a system command.
ctrl+pOpen the searchable list of every action.
ctrl+oExpand or fold a tool line.
ctrl+cStop the turn. Background jobs keep running. Esc never stops a turn.
type while busySteers the running turn.

Commands

/new /sessionsStart a thread, list threads. Same memory in all.
/fork /undoBranch from here, or hide the last turn.
/contextSee what the next call will carry.
/compactFold what is ready, capturing your words first.
/model /defaultPick a model, set the default.
/usage /traceTokens, timing and estimated cost per turn.
/findingsProblems the harness found in itself.
/peers /sendSee and message other sessions.
/handoffWrite a note for the next session.

04 / Install

Python 3.11 or newer, on macOS or Linux.

The installer prints its plan first, and --dry-run changes nothing. The installer puts exo on your PATH. Type exo to start the client; the first run walks you to a model key. exo update upgrades.

# the repository is private during the early build, access on request $ git clone https://github.com/aska-digital/exo && cd exo $ scripts/install.sh --dry-run $ scripts/install.sh $ exo

Prefer a browser? The web app runs on the same core and the same memory.