Pick one extreme and you lose. A harness balances the two — interleaved moment to moment.
Python drives the control flow you want fixed.
The LLM reasons only when you ask it to.
“The more constraints one imposes, the more one frees oneself.”
— Igor Stravinsky, Poetics of Music

Python drives control flow; the LLM reasons only when asked.
Native macOS / Linux / Windows — terminal, browser, or chat. No WSL, no Docker.
A shared DAG threads context into every call. Multi-agent ready.
API key, or the CLI subscription you already pay for — Claude / Codex / Gemini.
The agent builds, runs, and improves its own workflows and tools.
~/.openprogram — terminal and browser share sessions live.
pip install openprogram
openprogram setup
The wizard adopts any CLI you're logged into, or prompts for a key.
openprogram # TUI
openprogram web # browser
Web on :18100, API on :18109. One backend behind both.
"create an @agentic_
function that …"
Ask in chat — the skill handles decorator, smoke test, validation.
openprogram programs
install research
Clones in, pip-installs deps, auto-registers on restart.
Any third-party harness plugs in the same way — no symlinks, identical on Windows.
Observe → plan → click → verify by vision. Drives desktop apps & OSWorld VMs across macOS / Windows / Linux.
OSWorld Multi-Apps 79.8%Literature survey → idea → experiments → paper draft → cross-model review.
Topic → submission draftIngests notes / docs / chats into an Obsidian-compatible vault with [[wikilinks]].
Obsidian vault outputThe web UI draws a live mini-DAG of the session — branch / merge / attach on any node, multi-agent rows tagged by producer, drag-and-drop attachments.

Open-source agentic harness — install with one pip command, bring any LLM, and let your workflows evolve themselves.