Durable, fail-closed supervision for coding workers in isolated Git worktrees.
comis-dev-crew is the Go companion service for
Comis. Comis owns identity, conversations,
policy, capabilities, approvals, and terminal confinement. This project owns
development tasks, worktrees, worker adapters, evidence, validation, delivery
safety, and cleanup.
Pre-release: the project is under active E0 development. There is no supported production deployment or stability guarantee. Review the implementation status before using it with important repositories, hosts, or credentials.
- Isolated work: every task runs in a dedicated Git worktree.
- Durable state: SQLite records task transitions through a single service writer.
- Replay-safe operations: stable operation IDs prevent duplicate logical effects across retries and restarts.
- Evidence-based transitions: incomplete or contradictory evidence becomes
unknown; it never becomes success or cleanup authority. - Narrow interfaces: the CLI and MCP adapter use the same owner-only local JSON-RPC API instead of writing state directly.
Supported release targets are macOS and Linux on AMD64 and ARM64.
Review the installer script, then install the latest published release:
curl -fsSL https://raw.githubusercontent.com/comisai/comis-dev-crew/main/docs/install.sh | shThe installer verifies the archive against the release checksums.txt, installs
all four executables in ~/.comis-dev-crew/bin, and links them into a directory
on PATH. To install a specific release or change the destination:
curl -fsSL https://raw.githubusercontent.com/comisai/comis-dev-crew/main/docs/install.sh \
| DEVCREW_VERSION=v0.4.0 \
DEVCREW_INSTALL_DIR="$HOME/.comis-dev-crew/bin" \
DEVCREW_LINK_DIR="$HOME/.local/bin" shReplace v0.4.0 with the required tag. The installer exits without changing the
system if it cannot find a release or verify its checksum.
The current published pre-release is v0.4.0.
Use the exact Go toolchain declared in go.mod:
git clone https://github.com/comisai/comis-dev-crew.git
cd comis-dev-crew
go build -trimpath -o bin/ ./cmd/...This creates the four executables in bin/. Alternatively, go install ./cmd/... installs them into GOBIN.
Start the service with private, canonical state and socket paths:
devcrew-service \
--database /absolute/private/state/devcrew.db \
--socket /absolute/private/run/devcrew.sockIn another terminal, inspect service and task state:
devcrew --socket /absolute/private/run/devcrew.sock service status
devcrew --socket /absolute/private/run/devcrew.sock tasks list --format json
devcrew --socket /absolute/private/run/devcrew.sock task explain TASK --format jsonTask detail and explanation JSON include content-free evidence and authority references, allowing candidate, report, validation, delivery, and cleanup state to be reconciled without reading SQLite or worker output.
Without explicit path flags, the service and CLI derive matching locations from the operating system's user configuration directory. For the full Comis and coding-worker configuration, see Running comis-dev-crew.
| Command | Purpose |
|---|---|
devcrew-service |
Long-lived service and sole production writer of durable state |
devcrew |
Human and script-friendly operator CLI |
devcrew-mcp |
Stateless MCP adapter over the canonical local API |
devcrew-report |
Restricted, task-scoped worker reporter |
Every command supports --help and --version.
Published release artifacts report their exact tag from --version; untagged
source builds report dev.
Production dependencies point inward:
cmd/* -> adapters -> internal/application -> internal/domain
The domain contains pure types and invariants. Application packages define commands, queries, reducers, and consumer-owned interfaces. Adapters provide SQLite, local API, Git, forge, worker, reporter, and Comis integration. The four commands are composition roots only.
The complete engineering and security contract is in AGENTS.md.
Read AGENTS.md and CONTRIBUTING.md, then enable the repository hooks:
git config core.hooksPath .githooksRun the required verification gate before handing off a change:
make verifyUse make verify-full before a push or production-readiness claim. The protected
make test-live campaign is separate: it runs only on the dedicated Linux host,
requires a real human Telegram sender plus an owner-private manifest, and fails
when any external prerequisite or promised evidence row is unavailable. After a
completed campaign, make live-recovery proves clean release installation,
prior-release upgrade, backup, isolated restore, and previous-binary rollback
before make live-closeout reruns the same bounded evidence collector.
Additional references:
Report suspected vulnerabilities privately as described in SECURITY.md. Do not disclose them in a public issue.