Résumé
← projects

Demerzel

An open-source terminal coding agent in Rust: one small binary that runs the agent loop in your terminal against the model provider you choose.

/ rust · cli · ai · agents · tui / view source ↗

The demerzel wordmark beside a folded octahedron drawn in violet, cyan, and gold linework on dark blue

Overview

Demerzel is a terminal coding agent written in Rust. One small binary runs the agent loop in your terminal and connects to the provider you choose: a ChatGPT subscription, an Anthropic API key, or any server that speaks the Chat Completions or Responses protocol, local model servers included. It is open source under the MIT license.

Three goals set the order of work: a rich ecosystem, deep customization, and low overhead. The overhead claims come with reproducible benchmarks, not adjectives.

Features

  • Interfaces: a full-screen terminal interface, a --plain line interface, and a one-shot mode for a single prompt
  • Four provider adapters: openai-codex, anthropic, openai-compat, and openai-responses, with named instances for any compatible server
  • Approval modes: read-only, ask, and auto, switchable during a session
  • Sessions: resume the latest session in a project, or any session by id
  • Layered config: flags, environment variables, a project file, and a user file
  • doctor: reports config, credentials, and tool checks, and whether a session can start, without printing credential values

Technical Details

  • Language: Rust, split into core, providers, tools, terminal interface, binary, and test-mock crates
  • Contracts: the core crate owns the provider contract, engine events, tool interface, and session format; adapters translate into that contract and own their wire format
  • Platforms: Linux and macOS

Measurements

Measured in September 2026 on the project’s two reference machines:

  • Linux x86_64: 8.59 MB stripped binary, 1.6 ms median warm start to prompt, 4.96 MB idle PSS
  • macOS arm64: 7.26 MB stripped binary, 9.0 ms median warm start to prompt, 1.61 MB idle footprint

PSS and footprint are different metrics, so the memory numbers do not compare across platforms. Each number has a receipt in the repository’s bench/results/ directory, tied to the machine and revision that produced it.

Design Decisions

Provider-neutral. New model ids stay in configuration and protocol differences stay in adapters, so the engine stays the same for every vendor.

Hash-anchored edits. Each file read returns numbered lines under a short tag of the whole file. An edit sends the tag back and applies only while the file still matches it, so an edit against a stale read fails with an error the model can recover from.

Receipts or no claim. A performance number only ships with a committed receipt. The repository’s benchmark rules compare like metrics on the same operating system and do not treat shared CI runners as evidence.

Honest safety. Approval modes control which tools Demerzel offers and asks to run. They are not an operating-system sandbox, and the docs say so. Write tools stay inside the project root, but bash in auto mode can write wherever the process can.

Judgments, planned. The next differentiator is a fast model beside the main one that answers narrow questions about the loop with probabilities, while code applies the thresholds and picks the action. It is the same idea as truthsayer, built into the loop.

Status

Pre-alpha and usable from source, with no packaged release yet. The current milestone adds the ecosystem work: routing, skills, hooks, MCP, subagents, memory, and judgments. None of that has shipped, and a packaged release with dmz as the short command comes after it.