OpenCLI
New — the documentation, in ten languages

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.

00 — Reach

One protocol, not a list of integrations. Anything answering /v1/chat/completions the way OpenAI does can be pointed at — these were each asked for their model list, without a key, before they went on this page.

The whole list, with what each one is — including which of them give something away for free.

50 endpoints, each asked for its model list without a key
10 interface languages, and any other is one file
9 departments, every one with sample data in it
24 documentation pages, in every one of those languages
01 — Shapes

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.

Bring your own model

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.

Nothing phones home

No built-in gateway, no telemetry account, no key baked into the binary. What it talks to is what you configured.

It asks before it acts

Commands and file writes are shown before they run, with a sandbox underneath. You choose how much it may do unattended.

Organised like an office

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.

02 — Departments

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 every one of these can be tried before it is set up.

Finance

Reconcile ledger.csv against statement.csv; chase what is overdue

Support

Answer what came in; group questions by what they are really about

Operations

List every order still unshipped, and how long it has waited

Marketing

Turn notes into a week of posts; group contacts by what they bought

People & admin

Read applicants against a role; pull decisions and owners out of notes

Legal

Compare their draft against our terms, clause by clause, quoting both

Research

Where studies agree, where they conflict, and why

Clinical records

What is recorded, and what a clinician should look at, quoted

Engineering

Read a service and report what would give a wrong answer

02b — Handoff

They hand work to each other

A bot can pass what it did, and the files it produced, to another bot by name. Three refusals keep that from running away — and they are the substance of it.

Depth a chain stops at eight hops Repetition no bot more than three times in one chain Direction only a department that has been allowed to

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.

03 — Models

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.

04 — Limits

What it cannot do

Said here rather than discovered later.

Open models reach for grep

Given a structured way to read a file, a model not trained towards agentic work will shell out anyway. That is a gap in the models, and no interface closes it.

The builds are not signed

No 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 work needs the app 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

The tokenizer belongs to the model, and this runs models it has never seen. Everything downstream of the count is approximate.

A run may write anywhere inside its directory

The sandbox's writable root is that directory — which is why a conversation opens in a workspace rather than your home folder, and why runs outside a department's directory are held until you allow the place by name.

05 — Compared

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.

06 — Install

One binary, one line

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

Bring the model. It brings the office.