The agent for the models
that do not have one
Claude has Claude Code. OpenAI has Codex. The models you can actually run — Qwen, DeepSeek, GLM, Llama, Mistral — have none. OpenCLI is theirs.
Version · other platforms on the download page
What it is
The same agent in three shapes: a terminal program, a desktop app, and a local web UI. All three run on your machine and talk to whichever model you point them at.
Ollama, LM Studio, vLLM, llama.cpp, or any hosted endpoint that speaks the OpenAI API. Declare it in one config file and it appears in the picker.
No built-in gateway, no telemetry account, no key baked into the binary. What it talks to is what you configured.
Commands and file writes are shown before they run, with a sandbox underneath. You choose how much it may do unattended.
A department is a directory with standing instructions. A bot is a chat inside one, with a job. A duty comes round on its own and asks you when it is stuck.
It is not only for code
The agent reads files, runs commands and edits things. That is as true of a folder of invoices as it is of a repository — and most of the work people actually have is the first kind. Nine departments ship with sample data, so each of these can be tried before it is set up.
| Department | What ships with it |
|---|---|
| Finance | Reconcile a ledger against a statement; draft one chasing email per overdue customer |
| Support | Answer what came in; group the questions by what they are really about |
| Operations | List every order still unshipped, with how long it has waited |
| Legal | Compare their draft against our terms, clause by clause, quoting both |
| People & admin | Read applicants against a role; pull decisions and owners out of meeting notes |
| Marketing, Research, Clinical records, Engineering | Posts from notes; where studies conflict and why; what a clinician should look at, quoted; what in a service would give a wrong answer |
Six more workflows ship as skills and work in any directory: reviewing a file of rows against its rules, reporting what changed over a week, triaging an inbox, comparing two drafts, turning a transcript into decisions and owners, and reading a set of records for what is worth checking.
Which models actually work
The question nobody else answers. Calling tools is what separates a model that can do this from one that can only talk about it, and the model card never says.
One fixed task: a six-row invoice file with three planted problems — an amount over the limit with no purchase order, a blank amount, and a date with a month of 13 — and a file stating the three rules. A pass means all three found, each quoted against the rule it breaks, with the row number.
| Model | Runtime | Calls tools | Found 3/3 |
|---|---|---|---|
huihui-qwen3.8-27b |
Ollama, local | yes | yes |
This table is short because it only holds what has been run. Adding a row is the most useful contribution you can make, and it takes about five minutes. Negative results are worth as much as positive ones and are harder to come by — nobody posts about the model that did not work.
What it cannot do
Said here rather than discovered later.
-
General open models reach for
grepwhen they have a file tool. A model not trained towards agentic work will shell out even when given a structured way to read a file. That is a gap in the models, and no interface closes it. What this project can change is reach, not intelligence. - The desktop builds are not signed with an Apple or Microsoft certificate. Your operating system will warn you, and it is right to — it cannot tell who built them. The download page says what to do.
- Scheduled tasks run only while OpenCLI is open. This is a local agent, not a server. Anything that must fire while the machine sleeps belongs in the operating system's scheduler.
- Token counts are estimated, never counted. The tokenizer belongs to the model, and this runs models it has never seen.
- A background run may write anything inside the directory it runs in. The sandbox's writable root is that directory. Runs outside a department's directory are held until you allow the place by name.
How it compares
Not a scorecard. These are different tools, and the row that matters is the first one.
| OpenCLI | Claude Code · Codex · Gemini CLI | Ollama · LM Studio | |
|---|---|---|---|
| Which models | Any OpenAI-compatible endpoint | Their own vendor's | Any local one — but as a runtime, not an agent |
| Reads and edits your files | Yes | Yes | No — it is a chat window |
| Runs commands, unattended if you allow it | Yes | Yes | No |
| Where your files go | The endpoint you configured, and nowhere else | The vendor | Nowhere |
| Works offline | Yes, with a local model | No | Yes |
| Cost | Free; you pay for inference, or nothing if it is local | Per seat or per token | Free |
One thing worth saying plainly: a small local model is not as good at this as a frontier one. The interface is the same; the reasoning is not. OpenCLI is built so that choice is yours to make per task, not made for you — and if the frontier model is the right answer today, point it there. It speaks the same API.
The CLI
One binary. macOS and Linux:
curl -fsSL https://opencli.ai/install.sh | sh
Then point it at a model. A local Ollama, for example, needs nothing but this in
~/.opencli/config.toml:
[model_providers.ollama] name = "Ollama" base_url = "http://localhost:11434/v1" wire_api = "chat" [[models]] slug = "qwen3-coder" model = "qwen3-coder:30b" provider = "ollama" context_window = 32768