CROW - Your AI Agent. MCPs, OpenRouter, Any Model or local. It's your choice.
概览
A local model at 200k context with 25 tools and MCP, persistent memory, its own skills, a browser panel, eyes, and subagents it can send out while it keeps working. Runs on this machine, or on a provider you choose. MoE 512 experts, 10 active 200k context, one slot 73.45 GiB model on disk 30,984 MiB VRAM in use 41.76 tok/s decode 727.65 tok/s prefill yes vision Decode and prefill: 2026-09-01 (#182), driver 616.56, one 33,494-token cold turn per boot, three rounds interleaved against the previous placement (539.98 / 35.74); decode range 40.34–42.76. VRAM settled after load. Conditions in full, and the Linux line: operating points . Preflight, download, per-file sha256 against the release manifest, then the start lines with paths resolved. No elevation, nothing in Program Files, the registry or PATH. Five steps, a per-file sha256 manifest it re-reads on the next run, idempotent.
README
Install
Windows
irm https://raw.githubusercontent.com/nibor1896/Crow/main/install.ps1 | iex
Preflight, download, per-file sha256 against the release manifest, then the start lines with
paths resolved. No elevation, nothing in Program Files, the registry or PATH.
Linux
curl -fsSL https://raw.githubusercontent.com/nibor1896/Crow/main/install.sh | bash
Five steps, a per-file sha256 manifest it re-reads on the next run, idempotent. No root — the GTK and WebKit bindings come from your distribution, so the installer prints that line instead of running it.
Neither one downloads the model. That is a separate command:
hf download unsloth/Qwen3.8-Flash-Next-GGUF --include "*UD-Q2_K_XL*" --local-dir $env:LOCALAPPDATA\Crow\models\qwen-next-gguf
hf download unsloth/Qwen3.8-Flash-Next-GGUF mmproj-F16.gguf --local-dir $env:LOCALAPPDATA\Crow\models\qwen-next-gguf
hf download unsloth/Qwen3.8-Flash-Next-GGUF --include "*UD-Q2_K_XL*" --local-dir ~/Projects/models/qwen3.8-flash-next
hf download unsloth/Qwen3.8-Flash-Next-GGUF mmproj-F16.gguf --local-dir ~/Projects/models/qwen3.8-flash-next
Three shards, 73.45 GiB, plus 904,004,000 B for the vision projector. The second line of each
pair is that projector and the glob of the first walks past it — it sits in the repository root,
above the quant folder. Without it the server starts as a text model and read_image refuses.
Requirements, both operating systems, updating, and where everything lands: Install guide.
Start
Two terminals: the server first (it loads for about a minute), then the window.
Linux
python3 ~/.local/share/crow/tools/start-server.py flash-next-q2-k-xl
crow
Windows
python $env:LOCALAPPDATA\Crow\cli\crow.py --serve flash-next-q2-k-xl
python $env:LOCALAPPDATA\Crow\cli\crow_gui.py
The window is the client. It reads the port off the running server, and the model menu can
switch and reboot it from there. The by-hand llama-server lines, flag for flag, live in
operating points.
How to use Crow
Everything below is in the screenshot at the top of this page.
| Chats sidebar | chats grouped by project, archive at the foot, fold state remembered. A delegated subtask hangs under its chat as a ⑂ row. → window |
| Composer | type, or /tools for what the model can call. Seventeen slash commands, the same words in both surfaces. → window |
| Context meter | 6.1k / 200k at the left of the composer. Past 0.9 of the window the conversation rolls over: the leg is archived whole and the new one opens with a digest. → window |
| Model chip | Qwen3.8-Flash-Next · high (default) — the model that is up and this chat’s reasoning level, in one chip. Click it to switch models or providers. → reasoning levels · remote models |
| Approvals | the auto chip. auto asks nothing, allowedit asks before executing, manual before writing and executing. git_commit, git_push and any path outside the working directory ask at every level. → tools |
| Working directory | the chip beside the approvals one — crow in the shot, no folder when there is none. Pick a folder there, or right-click the rail and make a project: a project is a working directory. It is the boundary every writer is held to, the repository the git panel reads, and where this chat’s memory and goal live. → memory · settings |
| Dropping files | drop a file and its path lands in the composer for the model to read_file; drop an image and it becomes a chip that rides the next line. → window |
| Trace | one line per round, folded. Open it to see what the model actually did. Thought is its own fold, labelled with the share of the turn it took. → window |
| CODE panel | on the right: every tool call with its arguments and its result, and under them the source write_file and edit_file produced, by path, with a copy per block. → window |
| Goal panel | the plan the model wrote for itself: 3/3 steps, wall clock, tokens, delegated tokens. It outlives a rollover and a restart. → goals and subagents |
| Subagents | delegate hands a task to a second model and returns at once; the turn keeps streaming. collect fetches the results. Never on this machine’s slot. → goals and subagents |
| Browser panel | the globe in the title bar. Tabs, an address bar, per-tab history — a real window, not an iframe, so claude.ai and github.com load. → browser |
| Voice | the microphone beside the arrow. Recorded and transcribed locally; nothing reaches the disk. → window |
| Themes | dark, light and crow. Help → Settings → Appearance. → settings |
| Images | paste a screenshot (Ctrl+V) or /image . They ride the next line, stay in the transcript and survive a restart; the model opens one itself with read_image. → tools |
Features
| Tools | 25 built in, plus every MCP server you add |
| Memory | two plain-text stores, per project and per person, written only after you approve |
| Skills | procedures the model keeps and rewrites; name and description in the prompt, body on request |
| Goals | a plan in the pinned head, the state in a file — it survives a rollover and a restart |
| Subagents | delegate / subtasks / collect, up to 16 at once, on a remote spot |
| Browser panel | tabs and an address bar in the window, and render_page for the model |
| Vision | read_image — the model looks at a screenshot, a render or a diagram |
| Session search | SQLite FTS5 over every archived conversation; the real messages, not a summary |
| MCP | stdio and Streamable HTTP, with OAuth, elicitation and per-tool classes |
| Remote models | OpenRouter, Anthropic, OpenAI — key or sign-in. The default is always this machine |
| Voice | dictation into the composer, faster-whisper locally, nothing written to disk |
| Secrets | a file with an ACL instead of an environment variable every child process inherits |
Tools
25 built in. /tools lists them in either surface; the full reference is
docs/reference/tools.md.
| group | |
|---|---|
| Files | read_file a file or a line range · write_file (an existing file must have been read first) · edit_file one exact occurrence · list_dir · find_files by glob · search_text by regex |
| Shell | run_command — named shell, timeout, and a path outside the working directory asks first |
| Git | git_status · git_diff · git_log · git_commit (stages exactly the paths given) · git_push · github_connect over the OAuth device flow |
| Web | web_search — answer from what you read, a list of links is not an answer · fetch_url one page as readable text |
| Browser | render_page opens a page in a browser Crow owns and brings back a screenshot plus the console |
| Vision | read_image — check your own work when a step says it has to look right |
| Memory | memory add, replace, remove · skill read, save, remove · session_search over months of archives |
| Goals | goal_set writes the plan · goal_step moves one step, and costs no prefill |
| Subagents | delegate hands a task out · subtasks where they stand · collect waits and returns |
Every MCP tool joins the same list as mcp__, with its own class.
Operating points
| model | decode | port | engine | |
|---|---|---|---|---|
| Default, Windows | Qwen3.8-Flash-Next-UD-Q2_K_XL |
41.76 tok/s | 8083 | llama.cpp, local build |
| Default, Linux | Qwen3.8-Flash-Next-UD-Q2_K_XL |
41.8 tok/s | 8083 | llama.cpp, built here |
| Second | Qwen3.8-27B-UD-Q4_K_XL |
123.05 / 133.18 tok/s | 8082 | llama.cpp, packaged |
| Third (Rust) | CNQ4.5-M NVFP4 container |
45.1 tok/s (Windows) · 36.8 tok/s at 16k context (Linux) | 8099 | crow-nest v0.3.0, Windows and Linux |
Placements, conditions, the engine patches and the by-hand server lines:
operating points. Source of truth:
manifests/operating-point.json, held against every written
copy by tools/check_operating_point.py.
Documentation
Everything is under docs/.
| User guide | Install · Window · Linux · Memory · Skills · Goals and subagents · Browser · Session search · MCP servers · MCP over HTTP · Remote models |
| Reference | Tools · Server flags · Client flags · Reasoning levels · Settings · mcp.json |
| Operating points | The four lines · Measurements · Placement sweep · MCP cost |
| Developer guide | Architecture · Testing · Repo · Not built |
| Plans | Crow on Linux |
| Earlier READMEs | v0.5.1, Qwen-first · v0.5.1, the one before it |
Licence
MIT. See LICENSE.
Model: Qwen (Apache-2.0). Quantisation by Unsloth. Engine: llama.cpp. The optional third model, Qwen3.8-Flash-Next, is licensed qwen-community-1.0 — read it before redistributing; Crow does not ship the weights.
安装
This server does not publish a one-line install command.
Open the repository installation guide