Project Exo · Web app

The same agent,
with the memory
in view.

The current web client runs in your local browser and talks to the same core over the same protocol as the terminal. Open it next to the terminal and you see one agent, one thread, one memory. It adds a column that shows what the next call carries.

01 / Overview

One core, another view.

The web app is plain JavaScript served by a small plugin. It has no build step, no framework and no file from outside. Panels draw from command answers and core events, so completed work stays in the core when you close the tab. Copy any unsent draft before closing.

Electron is the chosen future desktop package. It is not built yet, and comes last after core verification and browser workflow polish. See the delivery order.

Memory column

Tokens the next call carries, split into system, summary tree, other threads and tail. Tree nodes, log length and the fold frontier. Filled from /context.

Last calls

The route that served each call, time to first token, cache share and any fallback, with the cost of that call. A call that could not be priced reads unknown.

Approvals

An orange panel with y allow, n deny and a allow always, which work when the composer is not focused. Outward acts are bound to the exact text.

Quiet by design

Hairlines, mono capitals, orange for the one thing that needs you, cold blue for what the system knows. One dot pulses while a turn runs.

Reports in the thread

Type /context, /findings or /trace in the composer and the report appears in the transcript.

Motion on a budget

The start hero draws about 24 frames a second, stops when the tab is hidden and shows one still frame under reduced motion. Every animation respects prefers-reduced-motion.

02 / Screenshots

Four states.

Same demo as the terminal page: an agent called atlas fixing a failing test. The text is scripted for the screenshot. The layout is the real client.

03 / How to open it

Two commands.

Start the core, then start the client. It binds to 127.0.0.1 only. For a core on another machine, use --url and --token-file.

  1. Install

    The same installer as the terminal client. Python 3.11 or newer.

    $ scripts/install.sh
  2. Start the core

    One process per agent. Terminal windows and the web app all join it.

    $ exo serve
  3. Open the app

    Then visit the address below.

    $ exo web
    # http://127.0.0.1:7342

Prefer a terminal? The terminal client shows the same thread.