Package Exports
- krow-cli
Readme
krow
krow is a host-agnostic agent harness for coding work.
It packages three things:
- a lean execution contract
- a runtime-agnostic state and signal model
- host wrappers that expose explicit
krowentrypoints without polluting the core prompts
Install
From npm:
npx krow-cli initThe published package name is krow-cli. The installed command remains krow.
That installs:
- Codex
$krow - Codex
$work - Claude Code
/krow - Gemini CLI
/krow
The generated wrappers call a local bootstrap launcher that executes a runtime copy installed under the user's home directory. After init, host-driven runs no longer depend on npm cache state or package-name resolution.
Core stance
- model capability is already good enough for many engineering tasks
- quality comes from orchestration, not prompt bloat
- do not guess; gather evidence first
- when clarification is needed, ask for the full current bundle at once
- one worker owns one task with one clear output boundary
- use the filesystem for baton passing, resume, and durable state
Layout
AGENTS.md: always-loaded execution contractdocs/: non-runtime design docs and repo-local workflow skillsdocs/HARNESS.md: full system blueprintdocs/FOUNDATIONS.md: philosophy and design lineagedocs/skills/: reusable workflow surfacesprompts/: narrow role promptsschemas/: payload, signal, and state schemasinstall/: host wrapper installer
Usage
- In Codex, invoke
$krow ... - In Claude Code, invoke
/krow ... - In Gemini CLI, invoke
/krow ...
The installed wrappers are thin host adapters over the same local control surface:
route: classify a message as chat or work without creating workflow stateintake: extract anchors, missing evidence, bundled clarification questions, and a proposed unit graphstart: create workflow state, carve ready units when strong split signals exist, and emit the first control signalstatus,next,resume: inspect or continue persisted workflow statesubmit-phase,submit-decisions,stop: advance or terminate local workflow state
Runtime signals are explicit:
run: execute one bounded phase for one workflow unitgate: stop for bundled external input onlydone: terminal completed, blocked, or stopped statefault: recoverable or unrecoverable runtime problem
The wrappers use intake --intent work first so agents gather evidence, bundled questions, and a proposed unit graph before a workflow starts. After start, the runtime advances each unit through clarify -> execute -> verify -> capture, schedules the next ready unit from the dependency graph, and persists:
- workflow state under
.krow/state/workflows/<workflowId>.json - task packets under
.krow/tasks/<workflowId>/ - relay and baton files under
.krow/relays/<workflowId>/
When a phase or decision payload contains apostrophes, do not pass it as a single shell-quoted argument. submit-phase and submit-decisions accept - to read JSON from stdin, so prefer a heredoc:
krow submit-phase <workflowId> clarify - <<'KROW_JSON'
<JSON>
KROW_JSONThe current contract is still host-assisted. krow does not spawn teammates itself, but it now gives the host richer scheduling metadata, durable task packets, and stricter clarify/verify payload contracts so parallel-capable hosts can behave more predictably.