FreeBSD/Linux Cross-platform Go control plane core for AI agents https://clawdie.si
  • Go 50.6%
  • Rust 20.9%
  • Shell 12.6%
  • Python 11.4%
  • TypeScript 2.5%
  • Other 1.9%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Clawdie AI Assistant 7ad83bd94e
Some checks failed
CI / packaging (push) Has been cancelled
CI / python-tests (push) Has been cancelled
CI / mcp-cross-language (push) Has been cancelled
CI / go (push) Has been cancelled
CI / markdown (push) Has been cancelled
leak-guard / guard (push) Successful in 5s
Merge pull request 'docs(vault): consolidate 0.15.1 custody, poudriere plan, and firstboot choreography' (#242) from docs/vault-tarsnap-headscale-0.15.1 into main
Reviewed-on: #242
2026-10-31 20:57:36 +00:00
.agent/skills chore(skills): retire the codex-subscription-auth operator skill 2026-09-28 13:01:40 +02:00
.codex chore(codex): configure migration evidence agents 2026-09-28 06:36:07 +00:00
.forgejo/workflows feat(soul): add deterministic import-queue scan and self-test 2026-10-31 20:51:13 +01:00
astro/wiki fix(wiki): wire up Croatian route handlers and exclude README from static paths 2026-10-07 14:00:34 +02:00
bootstrap fix(doas): drop inert persist and correct the inline-comment claim 2026-10-16 07:02:53 +02:00
cmd refactor(memory): rename HostHeadroom to HostLiveState 2026-10-29 20:44:23 +01:00
crates refactor(rust): retire 7 legacy crates and bump colibri to 0.15.1 2026-10-31 14:21:50 +01:00
docs docs(vault): consolidate 0.15.1 custody, poudriere plan, and firstboot choreography 2026-10-31 21:55:54 +01:00
internal refactor(memory): rename HostHeadroom to HostLiveState 2026-10-29 20:44:23 +01:00
manifests refactor: rename smoke→test across provider contracts and docs 2026-06-27 11:54:30 +02:00
packaging docs(vault): consolidate 0.15.1 custody, poudriere plan, and firstboot choreography 2026-10-31 21:55:54 +01:00
pkg feat: separate screening role from provider names 2026-10-29 16:02:54 +01:00
repo-tokens refactor(memory): rename HostHeadroom to HostLiveState 2026-10-29 20:44:23 +01:00
scripts Merge pull request 'feat(soul): add deterministic import-queue scan and self-test' (#240) from feat/soul-import-scan into main 2026-10-31 19:55:50 +00:00
src build: migrate workspace to Rust 2024 edition 2026-09-02 18:59:38 +00:00
testdata/contracts refactor(rust): retire 7 legacy crates and bump colibri to 0.15.1 2026-10-31 14:21:50 +01:00
tests feat(lisica): implement verify-lisica-ceremony.py and advance baseline ratchet to present 2026-10-24 17:05:52 +02:00
tools/command-inventory fix(step2c): scrub runner output secrets, enforce strict effect_intent keys, and kill process groups on timeout 2026-10-27 16:06:27 +01:00
.env.example Auto-load .env for the DeepSeek probe; gitignore .env (Sam & Claude) 2026-05-26 14:27:41 +02:00
.gitignore chore: pin prettier via package.json, fix check-format.sh, add python3 for tests 2026-07-19 12:29:52 +02:00
.prettierignore style: exclude vendor/ from markdown tooling (future-proofing) 2026-08-23 13:03:47 +02:00
.prettierrc chore: adopt markdown formatting gate + one-shot prettier sweep (Sam & Claude) 2026-06-04 20:13:47 +02:00
AGENTS.md refactor(rust): retire 7 legacy crates and bump colibri to 0.15.1 2026-10-31 14:21:50 +01:00
Cargo.lock refactor(rust): retire 7 legacy crates and bump colibri to 0.15.1 2026-10-31 14:21:50 +01:00
Cargo.toml refactor(rust): retire 7 legacy crates and bump colibri to 0.15.1 2026-10-31 14:21:50 +01:00
go.mod chore(go): clear GO-2026-6809 with Go 1.26.10 2026-10-22 23:54:24 +02:00
go.sum chore(go): move to the patched Go 1.26 toolchain and refresh deps 2026-10-17 16:38:31 +02:00
LICENSE chore: switch license from MIT to BSD-3-Clause 2026-06-30 13:37:53 +02:00
NOTICE chore: switch license from MIT to BSD-3-Clause 2026-06-30 13:37:53 +02:00
package.json chore(format): pin the devDependency exactly and correct the workflow comment 2026-09-29 21:30:21 +02:00
README.md refactor(memory): rename HostHeadroom to HostLiveState 2026-10-29 20:44:23 +01:00
rust-toolchain.toml Scaffold Colibri Phase 1: colibri-probe DeepSeek cache smoke (Sam & Claude) 2026-05-26 10:08:23 +02:00

okf
source_of_truth last_verified verified_by review_scope platform_notes
Cargo.toml 2026-10-28 agy@debby Product wording and links; no new runtime acceptance. FreeBSD: rc.d service; Linux: systemd

Colibri

Go tokens 156k Go tokens · 78% of context window

Colibri is the Clawdie control plane: a cross-platform Rust daemon that coordinates AI-agent tasks, observes lifecycle state, tracks cost, and exposes a Unix-socket API plus MCP integration. It runs as the colibri service on FreeBSD and as a standalone daemon on Linux.

Role in Clawdie

From a bootable USB drive to your autonomous AI workstation. That is the Clawdie product direction. Colibri supplies the coordination layer between the agent harness, terminal sessions and system policy. The Clawdie image repository owns boot media and installation; this repository owns the control plane. Full workstation acceptance and the complete Jev/shared-memory integration remain separate development gates.

Colibri owns orchestration; bherdr owns terminal and session connectivity:

zot / pi  ←→  bherdr (`herdr` process, panes, PTYs, sessions)
                         │ newline-JSON socket API
                         ▼
                 Colibri control plane
           tasks, lifecycle, MCP, ledger, policy
                         │ Jev System One (first-line classifier)
                         │ deterministic policy floor remains authoritative
                         ▼
             allow / require grant / block

Colibri consumes bherdr as a process over its documented socket boundary. It does not import bherdr, share Rust/Go types with it, or call Oxigraph directly from agents.

Policy & decision gate (Jev, typed responder)

Colibri's provisional development design separates three decision roles:

  • System 0 — deterministic policy floor: Colibri and OS controls enforce identity, capability, hard constraints, and authorization for every tool execution.
  • System 1 — Jev typed decision model: Makes bounded semantic route decisions (block, operator_review, or proceed_to_next_stage) from typed questions and grounded state. For fully resolved closed-schema tasks it may select a registered routine without calling System 2; confidence is not proof of correctness.
  • System 2 — reasoning LLM: Handles open-ended planning, synthesis, code authoring, and dialogue. The harness coordinates roles and execution; it is not System 2.

These System 0/1/2 names are provisional development labels, not a claim that all decisions are serial. “Split-brain” describes the wider separation of cognitive roles and state/ownership boundaries; it is not an alias for the numbered roles.

untrusted prompt → Jev / Boundary 1 ── block ───────────────→ stop
                                    ├─ operator_review ───→ operator
                                    ├─ needs reasoning ───┐
                                    │                      ▼
                                    │                  System 2 LLM ─┐
                                    └─ closed task ─► registered routine ┘
                                                                    │
                                                              proposed action
                                                                    ▼
proposed tool action → Jev / Boundary 2 ── block ─────────────→ stop
                                           ├─ operator_review → operator
                                           └─ pass_to_authorizer
                                                ↓
System 0 deterministic authorization → allow / deny → execution

Jev decides its bounded semantic route, but has no direct access and no tool-execution authority. A sufficiently confident proceed advances automatically under the configured policy; a proposed tool action still passes through Boundary 2 and System 0 authorization:

  • block: Stop this route.
  • operator_review: Hold for operator decision.
  • proceed: Advance to the next stage; at Boundary 2 this means the deterministic authorizer, not execution.

See the Jev decision gate plan, architecture wiki, and gatekeeper record for details.

Memory architecture

Colibri has not implemented a memory API or integration. The planned logical memory contract is remember, recall, forget, and improve; the planned backend split is:

system-of-record memory
                 │ asynchronous extraction
       ┌─────────┴─────────┐
       ▼                   ▼
OpenViking             Oxigraph
fuzzy recall           exact facts + relationships
       └─────────┬─────────┘
                 ▼
       colibri-daemon → colibri-mcp → agents

OpenViking is intended for semantic/fuzzy recall; Oxigraph (informally, Oxy) is intended for exact facts and relationships. They are planned as rebuildable, provenance-bearing projections behind a future Colibri memory contract—not as the agent-facing API or established systems of record. The canonical store's representation remains unselected. Every derived fact must carry at least source_ref, derived_at, and derivation_method. Extraction should be asynchronous and idempotent. These are planning constraints, not shipped functionality; see the canonical planning baseline for past proposals, superseded decisions, and remaining questions.

Current workspace

The workspace contains the daemon and typed client, MCP bridge, agent lifecycle state machine, SQLite ledger, skills catalog, runtime inventory, jail/deployment helpers, and the ratatui dashboard. The colibri-mcp bridge remains Rust. The glasspane dashboard is retained until bherdr integration, zot/pi verification, and attention parity are proven.

Build and test

cargo build --release --workspace
cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings

Target FreeBSD builds use x86_64-unknown-freebsd and rustls; Linux remains a validation leg. For the full merge gate, run ./scripts/ci-checks.sh.

Learn more

Colibri's own code is BSD-3-Clause. See AGENTS.md for development and cross-platform rules.