ZELL.agent harness
zell@host: ~/src
protocol v1 · zig 0.16+

Less is More.
Security First.

ZELL is a minimal coding-agent harness in Zig. print / JSON / RPC / TUI share one core. Less is More keeps the surface small; Security First is a separately specified Guarded mode that is not available yet.

zell — print mode · protocol v1
$ zell -p "What is 2+2?"
4
$ zell --mode json -p "hi" | jq -r .type
zell.protocol
agent_start
# illustrative output · check the actual release
$ 
Install

Build the current source

Zell has no Node or npm runtime requirement. Build from source today; artifact size, linkage, and supported targets are measured per release rather than assumed from the language.

# 1. 克隆并构建(需要 zig 0.16+)
git clone https://github.com/Jackallink/zell && cd zell
zig build -Doptimize=ReleaseSmall
# 2. 放入 PATH
cp zig-out/bin/zell ~/.local/bin/
You get the zell command right after install. All four modes live in one binary: print · json · rpc · tui, plus -c session resume. Deliberately not: no daemon, no built-in MCP, no permission-prompt stack.
zig 0.16+Required for source builds (not for binary releases)
release targetsValidate size, linkage, and support for the target you ship
cross-compileZig can target other platforms; see the docs for the current validation boundary
$ scroll to continue
Why ZELL?

A small agent loop, made explicit

Visible behavior · Zig-native runtime

Less is More keeps workflow policy out of the core. Security First is an explicit, small future boundary—not a claim that the current process is sandboxed.

A · Behavior

Visible agent loop

Follow-up, tool use, and visible events form one documented agent loop. print / JSON / RPC / TUI expose the current implementation; behavior is verified incrementally, not claimed by slogan.

zell -p "重构 fetch 重试"
$ zell -p "重构 fetch 重试"
I added exponential backoff to the fetch retry logic.
B · Runtime

Zig-native runtime

No Node or npm runtime is required. The current baseline runs with the invoking user's authority: it has no sandbox, filesystem confinement, network policy, or key isolation. Use external OS/container isolation when required today; Guarded is planned and will fail closed until its platform backend is proven.

ls -lh $(which zell)
$ zig build -Doptimize=ReleaseSmall
$ ls -lh zig-out/bin/zell
# record the target, release, size and startup measurement
C · Embed

Embeddable in scripts / IDEs

--mode json streams events to scripts, --mode rpc speaks stdin commands / stdout NDJSON — IDEs and CI mount directly.

zell --mode rpc
$ zell --mode json -p "hi" | jq -r .type
zell.protocol
agent_start
$ printf '%s\n' '{"id":"1","command":"prompt","text":"hi"}' | zell --mode rpc
{"type":"zell.protocol","version":1,"capabilities":[…]}
{"type":"response","command":"prompt","success":true,"id":"1"}
{"type":"agent_start",…}
ζ · Zeta

ζ is the Greek avatar of Z

One letter, two layers: order in mathematics, life in its root.

Order · Riemann ζ function

In mathematics, the Riemann ζ function is a compact metaphor for order in complex systems. Here it is a naming reference, not an implemented multi-agent bus.

Life · the root Zao

In Ancient Greek, ζάω (zao) means "to live, to be alive". It is a naming motif for a compact coding-agent runtime, not a claim of autonomous hardware, self-pruning, or self-bootstrapping features.

Capabilities

Four primitives, no feature stacking

loop, footprint, steer, session — every one an inspectable primitive, not a buzzword. Terminal output below is illustrative, close to real command behavior.

01 · Agent loop

Outer follow-up, inner tool loop

Two visible loops: the outer drives follow-ups and convergence, the inner executes tool calls, emitting events line by line.

zell -p "跑通 checklist"
$ zell -p "跑通 checklist"
The checklist has 3 completed items and 1 pending item.
02 · Footprint

Small enough to disappear

One Zig binary and a small dependency surface. Artifact size, linkage, memory use, and target support are release-specific measurements, not universal product guarantees.

ls -lh zell
$ zig build -Doptimize=ReleaseSmall
$ ls -lh zig-out/bin/zell
# publish a target-specific measurement with each release
03 · Steer / Follow-up

Enter submits, Alt+Enter adds context

In the TUI, Enter submits and Alt+Enter follows up; in RPC, steer and follow_up share the transport but have different queue semantics—see Protocol v1.

zell --mode rpc
$ zell --mode rpc
# client sends command JSON after the startup handshake
{"command":"prompt","text":"写 is_even"}
{"command":"steer","text":"不用 % 运算符"}
{"command":"follow_up","text":"压成一行"}
04 · Session

Resumable local sessions

Sessions persist as structured JSONL messages; -c resumes history. They are local conversation records, not protocol-event logs or immutable audit records.

cat .zell/sessions/oncall.jsonl
$ zell --name oncall -c -p "继续上次的修复"
…
$ cat .zell/sessions/oncall.jsonl
{"role":"user","content":"继续上次的修复"}
{"role":"assistant","content":"…"}
Four modes

Four modes, four ways to consume

A human in the terminal, scripts pulling data, CI assertions, IDE embedding — one core, four exits.

tui

Interactive

Streaming TUI; Enter / Alt+Enter set the pace, built for a human in the loop.

zell
$ zell
◇ 加载 session…
▸ 提问:解释 zig 的错误联合
· (streaming…) 错误联合同时表达值与错误…
print

Print

One-shot prompt, answer straight to stdout — the plainest and most composable.

zell -p
$ zell -p "2+2"
4
json

JSON

Structured event-stream output — scripts and assertions consume it directly.

--mode json
$ zell --mode json -p "hi" | jq -r .type
zell.protocol
agent_start
rpc

RPC

stdin commands / stdout NDJSON, designed for IDE and embedding scenarios.

--mode rpc
$ zell --mode rpc
{"type":"zell.protocol","version":1,"capabilities":[…]}
{"command":"prompt","text":"hi"}
{"type":"response","command":"prompt","success":true}
{"type":"agent_start",…}
SDK / O3 protocol: planned — opens when there is a real embedding need.
Principles

Boundaries, stated plainly

The do / don't boundary is respect for the product — Less is More, no claiming unshipped capabilities.

We do

  • Behavior is verified incrementally against documented scope
  • Zig single binary; no Node.js or npm runtime requirement
  • print / JSON / RPC / TUI — four modes, one binary
  • Resumable structured session messages with their limits stated plainly

We don't

  • Daemons or background processes
  • Built-in MCP or permission-prompt stacks
  • Marketing roadmap items as shipped capabilities
  • Sacrificing the single binary's size for an "ecosystem"
Positioning: Zig-native runtime. Less is More; Security First is a planned, explicitly bounded overlay.

Install zell, run your first agent round in three minutes

One Zig binary with four modes. Docs state the protocol, limits, and current security boundary.