opencli
The field guide

Everything in the tool belt.

The model can reach for any of 25 tools, streamed and schema-validated, and run in parallel when read-only. Here is the full catalogue, plus how it reasons, the commands worth knowing, and the security model.

Files

Read and edit with stale-file guards that refuse a write when a file changed since it was last read.

read_filewrite_fileedit_filemulti_editlist_dir

Search

Regex search, glob, and language-aware code intelligence without setup.

grepgloblsp

Shell

Run commands with a destructive-command guard, plus background shells you can poll and kill.

run_shellbash_outputkill_shell

Web

Fetch and search the web behind an SSRF guard with a response-size cap.

web_fetchweb_search

Flow

Track todos with dependencies, hold an active goal, wait, and move in and out of plan mode.

todo_writegoal_updateenter_plan_modeexit_plan_modewait

Agents

Dispatch sub-agents, ask the user, invoke skills, and disclose tools progressively.

dispatch_agentask_user_questionskilltool_search

Git worktrees

Branch the session into a throwaway worktree and clean it up safely.

enter_worktreeexit_worktree

Notebooks

Edit Jupyter notebook cells with the same stale-file guard as files.

notebook_edit

Stale-file guards refuse a write when a file changed since the model last read it. Destructive shell commands are flagged for confirmation, and incomplete streamed tool calls are dropped rather than executed with half-finished arguments.

Reasoning effort, dialled in

Choose how hard the model thinks, for the session or a single turn. The newest Claude models use adaptive extended thinking; OpenAI maps the same levels to its reasoning effort.

lowmediumhighxhigh

Set it with opencli config --set-reasoning high, or /thinking inside the session.

Slash commands worth knowing

Spend and context

/usage
Live provider quota and rate-limit snapshot.
/cost
Per-model token tally and estimated dollars, cache-aware.
/context
Context-window usage and where the tokens are going.

Source control

/diff
Show the current git diff.
/commit
Stage and commit with a Conventional-Commit message.
/commit-push-pr
Commit, push the branch, and open a PR with gh.

Session

/model
Switch the active model mid-session.
/resume
Pick a previous session and continue it.
/plan
Enter read-only plan mode before acting.

Workspace

/worktree
Create or exit an isolated git worktree.
/init
Create a CLAUDE.md for the project.
/buddy
Hatch the pixel companion, or reset and hide it.

Composer prefixes

Three characters you type at the start of a line, matching Claude Code and Codex muscle memory.

@path
Attach a file or directory listing with a gitignore-aware typeahead.
!command
Run a shell command immediately, no model turn. Output feeds the next message.
#note
Append a note to the project CLAUDE.md and re-apply memory to the live session.

The security model, stated plainly

run_shell executes directly on your machine. There is no sandbox yet, so review destructive prompts. Here is what opencli does guard.

Destructive commands are flagged

run_shell executes directly on your machine. There is no sandbox yet, so opencli flags obvious destructive commands like rm -rf on home or system paths, curl piped to a shell, mkfs, and force-pushes, and refuses them until you explicitly override.

Secrets stay out of the shell

Environment variables that look like secrets, with names containing TOKEN, SECRET, KEY, OPENAI, AWS, or GITHUB, are stripped from the child process so the model cannot read them back.

Writes are guarded

Stale-file guards refuse a write when a file changed since the model last read it. auto_approve_write is false by default, and sub-agents inherit the parent approval policy.

Credentials are owner-only

OAuth uses PKCE and refreshes automatically. Tokens are written with owner-only permissions on Unix. Project permission allow-lists reject symlinked paths so an allow decision cannot be redirected.

Questions

Is it really a drop-in for Claude Code?

It is built to match the muscle memory: a terminal UI, slash commands, plan mode, composer prefixes, and inherited AGENTS.md and CLAUDE.md memory. The difference is that it is a single Rust binary and it is provider-agnostic.

Do I need an API key?

No. You can sign in with a ChatGPT or Claude subscription over OAuth. API keys also work and unlock the full model catalogue. Environment keys are picked up automatically.

Which providers and models are supported?

The OpenAI GPT-5 family, the Anthropic Claude 4 family, and any OpenAI-compatible endpoint you configure, including local ones. See the Models page for the current catalogue.

Is my code sent anywhere, and is it sandboxed?

Your prompts and the files the agent reads go to the provider you choose, the same as any coding assistant. run_shell runs directly on your machine with no sandbox yet, so review destructive commands. opencli flags the obvious ones.

What platforms run it?

Prebuilt binaries cover Linux x86-64, macOS on Intel and Apple Silicon, and Windows x86-64. You can also build from source with stable Rust.

What is the pixel companion?

A small pixel-art creature that hatches from an egg and sits in the corner of the terminal UI. Its species is rarity-weighted and seeded from your account, so it is stable for you and only re-rolls when you switch accounts.

Put it in your terminal

One binary, then sign in. The full agent in under a minute.