Skip to content
MasihMoafiPublic

About

A Codex-based coding-agent TUI with explicit context control, auditable Smart Prune, and local session continuity.

Topics

Resources

Contributing

Security policy

Stars

51 stars

Watchers

3 watching

Forks

Repository files navigation

Elpis

The ultimate harness: the perfect home for your agents.

You put an agent into an Elpis, and it becomes Elpis. Be Elpis, my friend.

A coding agent should see only what you chose to show it, and a team of agents should touch only what each was given. Elpis is an agent harness for Linux, built on OpenAI's Codex: a terminal and a desktop app where you decide what every agent knows, design teams of agents on a board, and watch every step they take.

Alpha · v0.5.1 · Linux x86_64 · in daily use by its author

Releases · Website · Technical guide · Contributing · License

Quick start

Install both apps, the desktop app and the terminal app, on Linux x86_64:

curl -fsSL https://raw.githubusercontent.com/MasihMoafi/Elpis/main/scripts/install.sh | bash

Then run elpis-app for the desktop app or elpis for the terminal app, and sign in with ChatGPT or Claude, or set up a provider. Claude models run through your own Claude Code install.

Other ways to install

From the v0.5.1 release; every file has a SHA-256 checksum:

  • Ubuntu, Debian: sudo apt install ./elpis_0.5.1_amd64.deb ./elpis-desktop_0.5.1_amd64.deb
  • Fedora, Arch, Omarchy, any Linux: chmod +x Elpis-0.5.1-x86_64.AppImage, then run it; add elpis to run the terminal app.
  • Arch, Omarchy (native package): git clone https://github.com/MasihMoafi/Elpis && cd Elpis/packaging/aur/elpis-bin && makepkg -si
  • Terminal app only: curl -fsSL https://raw.githubusercontent.com/MasihMoafi/Elpis/v0.5.1/scripts/install-elpis.sh | bash

Both apps share one engine and one state folder, ~/.elpis-next.

Demo

Elpis in the terminal: the agent reads the project, a long search result is shortened before the model sees it, and the reply arrives with 87% of the context left

Workflows: the Mother agent designs a code-review team of eight agents in four waves, shown flat and in isometric, runs it and checks each agent's work

What it is

Elpis is a home for coding agents. It keeps Codex's engine, its tools and its sandbox, and adds the controls around them: a ledger of what each agent was told, a board for teams of agents, a page that shows every request and tool call, and one place for every model you pay for, from GPT and Claude to Gemini and OpenRouter.

Why it exists

Today's coding agents load every instruction file they find and keep the whole conversation until the window fills. You cannot see what they were told, and you cannot take it back. Put several on one task and it gets worse: they write over each other's files, nobody checks the work, and you merge the result by hand.

Elpis treats both as one problem, the context an agent works in, and answers it with two rules:

  • You choose what each agent sees. The Context Ledger lists every instruction file, chosen file and memory with its token cost, and you include or exclude each one.
  • Each agent owns what it writes. In a workflow every agent has its own folder, a second agent checks its work, and the Mother agent reviews the combined result before anything reaches your project.

Core features

  • Context Ledger. Every instruction file, file and memory an agent receives, with its token cost; include or exclude each. The Context Ledger in the Elpis terminal app: each instruction file with its token cost and an INCLUDED mark

  • Workflows. Describe a job; the Mother agent does it herself or designs a team on a board you can edit. Patterns: Sequential, Parallel, Kahn graph waves, Recursive and Voting.

    Workflows: the Mother agent designs a team, runs it and checks each agent's work

  • Observability. Every request, tool call, token and cache hit of a chat on one timeline, in the desktop app's Observability page and the terminal's /dashboard (next release).

  • One app for every model. GPT, Claude and Gemini, through your ChatGPT or Claude subscription or an API key; switch models without losing the thread, and import chats from Claude Code and Codex.

  • Two apps, one engine. A desktop app (four themes, light and dark) and a terminal app, sharing sessions and state. In the terminal, the Agent command center shows each helper under its parent chat.

    The Agent command center in the Elpis terminal app, with example tasks: GPT and Claude helpers under their parent chat, each model in its own colour

  • Love Spot. A drawing board where Matilda, the app's companion, answers and draws with you.

    Love Spot: Matilda answers on the drawing board

One Elpis desktop chat in six themes: Elpis dark and light, Midnight dark, Paper light, Plum dark and Midnight light

How it works

Elpis keeps Codex's Rust engine and sandbox and adds its controls around the chosen model. The desktop app is Electron with a Node bridge that drives each agent over the Agent Client Protocol. No model weights are bundled. State lives in ~/.elpis-next, or in the folder ELPIS_HOME names.

How a workflow orders its steps. Elpis sorts the board with Kahn's algorithm: an agent starts once everything it waits for, and that work's check, has passed. Agents in one wave run side by side. A loop is refused before any agent starts, unless you choose the Recursive pattern and a round limit. The Voting team runs in four waves:

%% id: voting-waves
%% alt: The Voting team in four waves: the Mother agent starts three answering agents, each answer has its own check, a tally agent joins the checked answers, a check reviews the tally, and the Mother agent reviews and merges.
flowchart LR
  M([Mother agent]) --> A1[Answer 1] & A2[Answer 2] & A3[Answer 3]
  A1 --> C1{{Check 1}}
  A2 --> C2{{Check 2}}
  A3 --> C3{{Check 3}}
  C1 & C2 & C3 --> T[Tally]
  T --> CT{{Check tally}}
  CT --> R([Mother agent reviews and merges])
Loading

Who may write what: ownership, as in Rust. Rust lets many readers or one writer hold a value, never both, and checks this before the program runs. Elpis applies the same rule to agents:

Rust Elpis workflow
A value has one owner Each agent owns agents/<its name> and the folders you give it; in a Git project it works in its own worktree, and a step that changed files outside its folders fails.
Shared borrows read, never write Every writer is followed by a check that reads its work and writes only agents/<name>/check.
No two mutable borrows at once Two agents linked to work alongside may not share a folder.
The owner decides what lives The Mother agent reviews the combined commit and must pass it with evidence before Elpis fast-forwards your project.

A Voting team (three answering agents and one tally agent, each with its own check) finished on GPT-6 Luna and on Claude Haiku 5.5 in 74 to 100 seconds; the test is tests/canvas-live.runtime.mts. Outside a Git project the folders are instructions, not enforced.

A finished Voting workflow in the Elpis desktop app: the Mother agent starts three answering agents, each checked, and a tally agent joins their answers

What Elpis builds on, and what it adds. Elpis is a fork of OpenAI's Codex (Apache-2.0): its engine, about 2.3 million lines in codex-rs/, carries Elpis's changes but stays close to upstream. Elpis's own code is about 214,000 lines, 8% of the repository: the desktop app, the bridge, the Context Ledger, workflows, the terminal additions and their tests. The Observability page is a port of the Trajectory view from DeepSeek Harness (MIT); thank you to its authors. Details: technical guide, context, sessions.

Where it's going

  • Matilda as the one agent you talk to. She routes work to the right agents, sets up workflows, keeps schedules and reminds you, on the model of DeepSeek Harness's super agent.
  • Automations. Prompts and workflows that run on a schedule, set with a calendar or asked for in one sentence.
  • A code-health dashboard. Size, churn, duplicates and agent readiness for any Git project open in Elpis.

Smart Prune and reasoning expiry are experimental. Not claimed: the whole inherited Codex test suite; macOS and Windows builds. Release CI gates each terminal release on Elpis's Rust checks, runtime evals with failing controls and clean offline installs; these checks do not prove that Elpis writes better code.

Summary

Elpis gives you the two controls today's coding agents lack: you decide what each agent sees, and each agent may change only what it was given. Install it from the latest release, open a chat, and look at its Context Ledger before you send the first message.

CONTRIBUTING.md explains how to build, test and report a bug. Upstream Codex is Apache-2.0; Elpis keeps its attribution and notices (LICENSE).

More projects

  • Rustidian: a native Markdown notebook for Linux that opens Obsidian-format vaults
  • rag-mcp: local hybrid search over your documents, as a CLI and MCP server
  • Skills: SKILL.md workflows for coding agents
  • WhisperType: local voice input for developers
  • Read Aloud: select text, press Super+R, hear it in a local voice
  • Love Spot: a shared drawing board where characters talk, draw and compete with you
  • SVG Studio: high-quality image vectorization
  • Pin: an always-on-top priority note, saved as plain Markdown
  • Clocki: a floating desktop timer for tracking focus hours

All of them: masihmoafi.com

About

A Codex-based coding-agent TUI with explicit context control, auditable Smart Prune, and local session continuity.

Topics

Resources

Contributing

Security policy

Stars

51 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages