I build Elpis — a terminal environment for coding agents forked from OpenAI's Codex CLI.
One problem I keep running into with long agent sessions: the context window fills up with the history of how the agent got to the answer, not the answer itself. Transcripts, file reads, searches, command output, dead ends — all of it accumulates, and every new request pays for all of it.
Elpis exists to fix that.
What is Elpis
Elpis is a terminal environment for coding agents. You put an agent into Elpis, and it becomes Elpis.
The agent runs the model loop. Elpis owns the environment around it: context, continuity, memory, permissions, evidence, and explicit provider choice.
Elpises
Elpis is the shared environment, not any one agent. Put an agent inside it and the agent inherits the same context, memory, permissions, evidence, and control.
Multiple Elpises working from those shared roots is a direction for the project — not a claim that multi-agent control ships in v0.1.1.
Why Elpis
Long agent sessions accumulate transcripts, file reads, searches, command output, and dead ends. The useful state gets buried in the history of how the agent reached it, while every request pays for more context.
Elpis separates working context from durable evidence. The next request receives a small, inspectable working set; the exact record stays on disk and is retrieved only when needed.
One controlled comparison — same task, same prompt:
| Free context at end | |
|---|---|
| Elpis | 93% |
| Codex | 73% |
Screenshots from that comparison
Start:
End — Elpis, 93% free:
End — Codex, 73% free:
This is one recorded workflow, not a claim that every task reduces the same amount.
Core features
-
Managed context — Ace performs meaning-aware post-turn pruning while Codex's inherited safety cap bounds exceptionally large tool output. Inspect pruning with
/prune. - Portable continuity — goal and checkpoint state survive compaction and restarts, so work resumes without replaying the full transcript.
- Visible context — the Context Ledger shows exactly which files are in the working set, with ctrl+clickable paths for inspection.
- Durable evidence and bounded memory — exact conversations, terminal events, and artifacts remain on disk; reusable memory stays selective, size-capped, and attributable.
- Explicit provider choice — use OpenAI, Anthropic, Gemini, or OpenRouter without silently routing one provider through another.
- Visible safety controls — Read Only, Default, and Full Access modes keep file changes, commands, approvals, and results inspectable.
- No analytics by default — Elpis does not upload usage analytics, and all OpenTelemetry exporters default to off. Telemetry is sent only if you explicitly configure an OTEL exporter.
-
Local read-only RAG — from a source checkout,
scripts/setup-rag.shadds semantic search over local knowledge without granting write access.
Evidence — full context-management session
The clip above is a 25-second highlight. This one is the full uncut session: you can watch the context loop run — post-turn pruning, the Context Ledger updating, goal and checkpoint state surviving compaction — and see the 93 vs 73% numbers appear in real time.
Quickstart
Linux x86_64:
curl -fsSL https://raw.githubusercontent.com/MasihMoafi/Elpis/main/scripts/install-elpis.sh | bash
elpis
On first launch, choose a provider and sign in or enter its API key.
Current state
v0.1.1, Linux x86_64. Not in this release: macOS, Windows, /auto routing, multi-agent control, voice input, LSP integration.
The execution foundation — terminal UI, patches, permissions, sandboxing, sessions — derives from OpenAI's Apache-2.0 Codex CLI. Elpis adds the context, continuity, memory, retrieval, and provider-control layer around it.
GitHub: https://github.com/MasihMoafi/Elpis
Docs: https://masihmoafi.github.io/Elpis/





Top comments (0)