Free software

donk

The model reads only what it needs.

A terminal coding agent that decides, by construction, how much of each result the model gets to read, and shows the math on what it saved.

In development

Install See the code on GitLab

Terminal on GNOME with donk replaying a sample session: the conversation, the edits made and the test output summarised.

A hundred test lines become twenty

Each tool's full output is stored once. The model reads one cut of it, and the screen shows another: for a 124-line test run, the model gets 20 and a count of the rest.

Terminal replaying a donk session: the test output cut to 20 lines, with the count of the lines left out.

See how much each call saved

donk stats shows, per tool, the raw output, what went to the model and what appeared on screen, and estimates the time saved against the time to review.

Output of donk stats with the tokens of each tool, the reduction obtained in each and an estimate of the time saved.

Check what the model was given

donk log lists every call in the session with its arguments and checks what the model read against the full stored output, instead of trusting its summary.

Output of donk log with each tool call of the session, its arguments and the content the model received.

More features

Undo

Every file a tool writes in the repository is copied first, and /undo puts it back as it was.

Asks only what cannot be undone

Writing in the repository asks nothing, paths outside it are denied and commands marked irreversible are asked about at once, in a single plan.

Your choice of model

Any endpoint compatible with the OpenAI API, Anthropic or a server of your own, registered in a configuration file, with no bundled model or key.

About the project

donk is a coding agent for the terminal: it reads, searches and edits the files of your repository and runs commands in it, as the model asks. The conversation is drawn in the terminal itself, with the prompt and the status in a footer.

The core idea is simple. When a tool runs, say a test suite, its full output is stored once and never goes whole to the model. Two trimmed versions are made from it: one for the model and one for the screen. The full output stays stored and can be inspected later, instead of trusting the model's summary of it.

It leaves out a bundled model, a free tier and any switch that turns off the confirmations or the undo. There is no sandbox yet.

Technologies

Rust, in a single static binary, with SQLite and TLS built in.

License: MIT

Install donk

To build, you need Rust 1.98 or newer and a C compiler. ripgrep is optional.

From a release

A static binary for x86_64 Linux, with nothing to install first.

curl -LO https://gitlab.com/alteronauta/donk/-/releases/26.10.0/downloads/donk-26.10.0-linux-amd64.tar.gz
curl -LO https://gitlab.com/alteronauta/donk/-/releases/26.10.0/downloads/SHA256SUMS
sha256sum --check --ignore-missing SHA256SUMS
tar xzf donk-26.10.0-linux-amd64.tar.gz
install -D donk-26.10.0-linux-amd64/donk ~/.local/bin/donk

From source

SQLite and TLS are built into the binary, so no system library is needed.

git clone https://gitlab.com/alteronauta/donk.git && cd donk
cargo install --locked --path crates/donk-cli

donk ships with no model and no key: register yours in models.toml, next to config.toml, as the README shows.

Tell us what you need to solve.

adriano@ars.tec.br

@adriano@ars.tec.br