Skip to content

doer

DOER.

stdin → agent → stdout
A Unix citizen that thinks.
In text, images, audio, and video.

PyPI License Python


60-second taste

~/projects — do
$ pipx install doer-cli installed package doer-cli 0.3.0, installed using Python 3.13 · do (short form) · doer (long form) $ do "find files larger than 100MB" ./video.mp4 412M ./archive.tar.gz 168M ./model.bin 124M $ cat error.log | do "what broke" redis connection timeout at 14:22 — likely the REDIS_URL env var is stale. $ do --img screenshot.png "what's in this UI?" login form, 3 fields, submit button disabled. a password validator is throwing — check password_regex.py:22 $ do --train 200 && DOER_PROVIDER=mlx DOER_ADAPTER=~/.doer_adapter do "reply terse" loading 127 turns... training LoRA (rank 8, 200 iters)... ✓ saved → ~/.doer_adapter ok. $

why doer

Not a chatbot. Not a wrapper. grep with a brain.

  • Pipes > GUIs

    stdin in, stdout out. Chain it. Cron it. Ship it.

  • No state

    Every call is pure. The filesystem is the memory.

  • Small is kind

    ~730 lines of Python. Core is one dep. Auditable in an afternoon. Closes its own training loop (text + VLM).

  • Transparent

    Own source in its system prompt. Ask it how it works.

the arrow

┌─────┐ ┌──────┐ ┌──────┐ │stdin│ ───▶ │ do │ ───▶ │stdout│ └─────┘ └──────┘ └──────┘

Install → See the Cookbook →