The README makes claims. This file backs them up with code paths, caveats, and honest gaps.
The system provides a closed-loop audit-and-remediation pipeline: sensors probe infrastructure, signals are routed via zero-copy protocols, and the orchestrator executes playbooks to fix or alert.
How it works: Kea-Mandible’s kea-beak crate uses walkdir + Tokio async streams to traverse
filesystems at 10,000+ files/second, hashing each file with BLAKE3 (fast) and SHA-256 (interop),
then emitting structured Finding records. These are serialised via Cap’n Proto (Kea-Call) with
zero-copy on the wire. Kea-Bivouac receives triggers and dispatches TOML-defined playbooks through
its PlaybookExecutor. The entry point is bivouac/src/main.rs → Commands::Trigger →
PlaybookExecutor::run(). Kea-Wit holds WIT IDL files that formally specify the component model
interfaces so that Mandible and Bivouac can evolve independently.
Honest caveat: The end-to-end wire path (Mandible → Call → Bivouac) is not yet connected in a
single integration test. Each subsystem has its own tests; the closed loop is demonstrated through
justfile recipes rather than an automated CI pipeline. The ABI (Idris2) and FFI (Zig) layers are
planned, not present.
Kea-Beak (filesystem/network auditor at 10k files/sec)
How it works: mandible/crates/kea-beak/src/lib.rs drives parallel async auditing.
walkdir::WalkDir feeds directory entries into a futures::stream::StreamExt concurrent buffer,
and each entry is processed by a Tokio task that calls blake3::Hasher (streaming, incremental)
and sha2::Sha256. The #[forbid(unsafe_code)] attribute is present at crate root — the
throughput comes from lock-free concurrency, not raw unsafe access. Slop-Gate sits downstream and
filters findings by heuristic rules before they reach Bivouac.
Honest caveat: The 10k/sec figure is an architectural target, not a published benchmark. No
benchmark suite currently lives in the repo; the fuzz/ directory contains ClusterFuzzLite targets
but not throughput tests.
| Repo | How Kea is used | Status |
|---|---|---|
|
Kea-Mandible planned as sensor backend for server health scanning |
Planned |
|
Kea sensors as MCP cartridge data sources (Phase 3 roadmap) |
Planned |
|
|
Active |
No downstream consumer yet has Kea wired in at runtime — the account dependency is forward-looking.
| Path | What’s There |
|---|---|
|
CLI entry point: |
|
|
|
Playbook TOML deserialisation and action execution types |
|
Example TOML playbook definitions (integrity-violation, failover, etc.) |
|
ClusterFuzzLite fuzz targets for playbook parsing |
|
Core async filesystem auditor: |
|
CLI wrapper around kea-beak; exposes |
|
WordPress-specific auditor: core file integrity, plugin inventory, multisite |
|
Bloat/noise filter: heuristic rules to suppress low-signal findings |
|
Cap’n Proto schema files + generated Rust bindings for zero-copy inter-component messaging |
|
WebAssembly Interface Types (WIT) definitions; validates component model contracts |
|
Top-level integration tests (per-component; no full end-to-end pipeline test yet) |
|
Top-level build recipes: |
|
Architecture map with per-component completion dashboard and MVP roadmap |
|
17 RSR-standard CI workflows (CodeQL, Hypatia, Scorecard, TruffleHog, etc.) |
|
MPL-2.0.txt (primary) + MPL-2.0.txt (tooling compat fallback; see NOTICE) |
|
A2ML machine-readable state, ecosystem, and meta artefacts |
Open an issue or reach out to Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>.