NC

nibor1896/crow

开发工具
30 stars 0 forks 质量 45 趋势 45

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/.

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.

View this README on GitHub

安装

This server does not publish a one-line install command.

Open the repository installation guide