An Agent Runtime Where Context Is Explicit State You Can Read, Change, and Put Back Developer ljedrz released nachalnik, a Rust agent runtime that treats context, tools, permissions, and requests as explicit state rather than framework-internal decisions. The runtime offers a /context view listing every item with its token cost and the reason it is excluded or elided, a /step state machine that stops at Ready so decided calls run none, and an append-only event log, with five transcripts published at ljedrz.github.io/nachalnik. The project's budget feature uses a Calibrating counter that learns from what providers actually charge, and its tool registry is live, so /tools drop shell stops offering a tool on the next request. TL;DR: A Rust agent runtime where the context, tools, permissions, and requests are explicit state — not decisions made inside a framework and reported afterwards. You get a /context view showing every item what it is, its token cost, whether it’s going to the model, and why not , a state machine you can step through one transition at a time /step , and an append-only event log. The agent is not the boss. You are. Why It’s Different | most runtimes | nachalnik | |---|---| | Context = list of strings | Context = data structure id, kind, source, label, content, size, state, note, metadata | | “Agent decided this is relevant” | You see every item, its cost, and the reason it’s excluded/elided | | Turn = content + tool calls flattened | Turn preserves production order: reasoning → text → call → reasoning → call… | | Approve command? | /step stops at Ready — calls decided, none run . Read, prune, drop, or continue. | | Session = chat history | Session = snapshot items, states, pins, notes, call IDs + append-only event log | | Budget = estimate | Budget = Calibrating counter that learns from what providers actually charge | | Tools = fixed at startup | Registry is live: /tools drop shell stops offering it next request | | Model manages context? | --introspect hands the model amend elide/exclude/revise/note/undo — same API the UI calls | Five transcripts at https://ljedrz.github.io/nachalnik/ https://ljedrz.github.io/nachalnik/ :