Skip to content
Moissanite-LabsPublic

About

One agent with one continuous memory. A harness that watches itself in your terminal.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

 
 

Repository files navigation

Exo: every model, fitted to you. A shell of linked nodes around an orange core, with packets travelling in.

Exo

Exo is a coding agent for the terminal and the browser that keeps one memory across sessions, ties each approval to post, send or pay to the exact text you saw, shows the cost of every turn, and runs on your Claude Code login or an API key.

It reads and edits files and runs commands in the folder you start it in. The glossary explains the few words Exo uses in its own way.

Exo is a standalone agent system for working well with language models. You talk to one agent. It keeps one continuous memory across every window, channel and scheduled run, so a new thread is not a blank mind. It records how it performs (which model served each call, how long it took, what it cost) and turns that record into findings it can verify. Anything that posts, sends or pays waits for your answer, and the answer is tied to the exact text. It runs in a terminal and in a browser, on the same core.

Exo is early and in active build. Waves 1 to 3 are built and in daily use on one agent. See DECISIONS.md for every significant choice, with the reason and what was rejected.

Hand-authored illustration of a terminal session: a prompt, tool lines ticking in, an example approval panel for a git push, a signed answer and the status strip.

What is in it

One agent, one memory A seat is one agent with one append-only, hash-chained log and one summary tree. Windows, channels, scheduled runs and peer messages are threads of it. /context shows what the next call carries. docs/MEMORY-MODEL.md
A harness that watches itself Every model call records its route, timing and cost. Anomaly rules turn the trace into findings. A finding marked fixed is measured again and reopens if it returns. docs/TRACE.md
A gate with exact-text approvals For outward acts the gate hashes the exact text, target and arguments. Edit one character and it asks again. Seats sign their answers, and standing grants belong to the principal and expire. docs/GATE.md
Background jobs A long build or test run does not hold the turn. It is a job the agent owns, and the agent gets a notice when it ends. docs/JOBS.md
Peers Sessions message each other through one ingress path with a trust policy. A peer message is input, never consent. docs/PEERS.md
Cost per turn Timing and estimated cost for every turn and call. A call Exo cannot price reads unknown, never zero.
Two clients A terminal client (exo, the same as exo tui) and a web client (exo web), both drawn from one protocol and one design language. docs/UI.md, docs/ui/WEB.md
Fits one person, works for anyone The core is generic. Everything about a person lives in their own store, built by an onboarding interview. A fresh install with an empty store runs end to end.

Also built: a signed ledger and personal store, a learning loop with explicit promotion rules and a gated path that uses held-out evaluation, decision models for small choices, subagents on the cheapest model that can do the job, and a provider-agnostic model router with fallback. Other promotion paths use principal rulings or repeated, high-confidence evidence.

Screenshots

These are historical screenshots driven by scripted test data for a demo agent named atlas, fixing a failing test in a small library. They may not show current controls or the default layout; the older approval image still shows the former Esc stop hint. The main terminal screenshot set uses the classic layout; the separate D-046 inverse-layout example is listed in docs/media/README.md.

Terminal client

Start A turn with tools
Terminal client on an empty thread with the node-shell hero Terminal client during a turn, with tool lines and the status strip
Approval /context
Approval panel with the exact text and key chips The /context memory report

A finished background job shown as one line in the transcript

Web client

Start A turn
Web client on an empty thread with the instrument column Web client during a turn
Approval Memory column
Web client approval panel Web client with the memory column filled in

More on each client: exo.askaconsult.com/cli and exo.askaconsult.com/app.

Quick start

The repository is a private preview during the early build. Access is on request from Aska Digital. Exo needs git and Python 3.11 or newer, on macOS or Linux (tested on Arch with Python 3.14).

git clone https://github.com/aska-digital/exo && cd exo
scripts/install.sh --dry-run      # print the plan, change nothing
scripts/install.sh                # install: puts `exo` on your PATH (~/.local/bin/exo)
exo                               # the terminal client, in the current directory

If ~/.local/bin is not on your PATH, the installer prints the line to add to your shell rc file (or run it with --modify-path and it adds the line). With no model key, Exo uses your Claude Code login when the claude command is on your PATH: the model is claude-cli:sonnet, and cost reads unknown because a subscription has no per-call price (docs/PROVIDERS.md). Otherwise, the first run with no model key says so in a note and opens the providers panel. If one provider is set up but no main model is chosen, the model picker opens instead. Type /providers to open the panel again. Upgrade with exo update. exo --version shows the version and, for a checkout install, the git sha. Flags pass through to the client: exo --resume (or exo resume), exo --seat NAME, exo --no-intro. Other commands keep working: exo models, exo providers, exo -h lists all.

For the web client, run exo web. It opens the page in your browser. If it does not, open the full link it prints, http://127.0.0.1:7342/#token=...: the part after #token= is a key for this launch, and the bare address shows only a note. exo web starts the shared core if none runs, and exo stop ends it.

Options, what each install step does, safety rules and re-runs are in docs/INSTALL.md. To add a model key, see docs/PROVIDERS.md. Provider keys are read from the environment first, then the macOS Keychain or Linux Secret Service (when secret-tool is available), then a mode-0600 keys.env file. EXO_KEYS_FILE can point to another file.

The first time exo runs on an EXO_HOME, the agent gives a short orientation (/intro) and turns on tutorial mode: small tips the first time something comes up. /tutorial off turns them off, and exo --no-intro skips the orientation. Details in docs/ONBOARDING.md.

Commands you will use in the terminal (/help lists all): /new, /sessions, /fork, /undo, /cwd, /context, /compact, /model, /default, /usage, /trace, /findings, /peers, /send, /handoff, /intro, /tutorial.

Versions

Exo 0.2.0 (egg). Each major version has a codename from the exopet line: egg, cell, tile, cube, frame, then 4D and up. See CHANGELOG.md and docs/VERSIONING.md.

Read on

docs/USER-GUIDE.md Using Exo day to day
docs/DEVELOPER-GUIDE.md Building on Exo: the protocol, plugins, tools, tests
docs/REPOSITORY-WORKFLOW.md Where changes belong, reviewed desktop syncs and the transition from paired PRs
Whitepaper How each part works and why, with the trade-offs
docs/DOCS-MAP.md Index of every doc, and what is still missing
docs/ARCHITECTURE.md Components, memory and context model
DECISIONS.md Every significant choice, why, and what was rejected
docs/media/README.md How the images and animations are made

Folders: src/ the core, clients/tui/ the terminal client, plugins/ memory, context, gate, bus, command centre and orchestra, research/ the groundwork, site/ the project website.

Two goals, held together

  • Fit one person as closely as possible. The first principal is the project's author.
  • Replicate for anyone. The core is generic. Everything about a person lives in their own principal store. See DECISIONS.md (D-004).

Credits and inspirations

  • dzhng/jevgrep (MIT): the jg code search behind the code_find tool and the jevgrep skill (D-029).
  • Hermes Agent by Nous Research (MIT): Exo lifts parts of it, with credit and provenance (PROVENANCE.toml).
  • Victor Taelin and Higher Order Company, OptChat and UniiChat: the word-for-word log and summary tree behind Exo's memory. Exo reimplements the ideas, not the code.
  • opencode, Command Code, Letta Code, and Gwern Branwen's "Guardian Angel": ideas for the surface, taste and memory.

The full list, with how each source applies, is on the project site.

Built by Aska Digital.

About

One agent with one continuous memory. A harness that watches itself in your terminal.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages