crow-cli
A Python coding agent over the ACP protocol: it reads and edits code, keeps every session in SQL and searches them.
- 64 ★ on the repository
- Last commit
- MIT
Broad access
Why this level
- The agent reads and edits files, runs shell commands and reaches the network with your model provider's key.
- Full texts of all sessions, including command output, are stored in the database and available to other agents.
Install
In your terminal, with SkillFoxx CLI
npx skillfoxx add cli/crow-cliDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- The agent reads and edits files, runs shell commands and reaches the network with your model provider's key.
- Full texts of all sessions, including command output, are stored in the database and available to other agents.
This is third-party code. Review the repository files before installing.
What it does
crow-cli is a coding agent with a streaming ReAct loop that reads and edits code, runs shell commands, searches the web and understands images. It speaks the Agent Client Protocol: an editor or terminal client launches `crow-cli acp` and gets an agent. Sessions live in a SQL database, SQLite by default in `~/.agents/crow/crow.db`, with PostgreSQL available to share across machines. All messages have full-text search. Agents read each other's past conversations and hand work to one another through that store, with no separate agent-to-agent protocol. Sessions have memorable names you can resume or fork. The agent carries no tools of its own. Whichever MCP servers the client passes when creating a session are the tools that session gets.
Who it is for. Developers who want their own coding agent with shared session memory across machines and clients, from terminal to browser.
Good fit when
- One agent must read another's conversation and continue its work.
- Sessions need full-text search across all past conversations.
- One session database must serve several machines, which PostgreSQL covers.
- An ACP-capable editor needs a coding agent not tied to one model provider.
- You need event-by-event JSONL output for scripts and analysis: `crow-cli run -j`.
Not a fit when
- You want a ready cloud subscription with no key of your own: crow-cli works with an OpenAI-compatible provider key.
- Docker is unavailable: web search rests on the SearXNG service started in Docker.
- You need Python older than 3.13: the agent requires 3.13 or newer.
Example request
crow-cli run "explain what this repo does"Limitations
Python 3.13 or newer with the uv manager, Docker for SearXNG and a key from an OpenAI-compatible provider such as OpenRouter are required. The clients, meaning the terminal, IDE and browser, live in a separate `crow-cli/crow` repository, and the IDE build works only on Linux so far. The `crow-cli init` wizard writes secrets to `~/.agents/crow/.env` and clones sources, and in a session the agent gets only the tools the client passed. The `crow-cli` skill installs globally to `~/.agents/skills/crow-cli`.
How to disable. Run `uv tool uninstall crow-cli` and stop the containers with `docker compose down` in `~/.agents/crow`. Delete the `~/.agents/crow` directory with the session database and secrets by hand.
FAQ
How do I install crow-cli?
Run `uv tool install crow-cli --python 3.13`, then `crow-cli init`: the wizard asks for a provider and model and writes configuration to `~/.agents/crow`. Then start SearXNG with `docker compose up -d` in the same folder.
How do I run it from an editor?
An ACP-capable editor or client launches `crow-cli acp` over stdio. ACP v2 has `crow-cli acp2`, and `crow-cli acp2 --http` keeps one server for the IDE, browser and other clients at `ws://127.0.0.1:2771/acp`.
Where are sessions stored?
In a SQL database: SQLite at `~/.agents/crow/crow.db` by default or PostgreSQL for a shared one. Images sit as files alongside and are mixed into a model request only when sent.
Where do the agent's tools come from?
From the client. The agent carries no tools itself: the client passes MCP servers when creating a session. crow's own clients pass crow's own MCP server, so a fresh install works at once.
How do I get output for a script?
Run `crow-cli run -j "task" > run.jsonl`. Each line is one event: session, thinking, message, tool call, usage or error. The `-s <id>` flag continues a session.
Discussion
No questions or reviews yet.
Related
CLI toolsacpx drives coding agents over ACP from the command line: repository sessions and one command shape for 30 agents
A CLI agent that works with project files and shell commands, lets you choose a model provider and connects external MCP tools.
A local Python coding agent that writes every step to a log you can analyze, replay and resume.
One runtime for Claude Code, Codex, OpenCode and more: a run counts as done only when checks the agent did not write pass
A bridge between local CLI agents: Codex, Cursor or Claude Code delegate work to Antigravity, Grok, Kimi and seven more.
PaiCLI Python is a terminal AI agent with ReAct and planning, an MCP client, memory, pre-edit snapshots and a Runtime API.
README in short
Two ideas hold the project together: persistence of storage and the principle that the client supplies the tools. The repository holds only the agent, while clients for terminal, IDE and browser are developed separately.