-
Notifications
You must be signed in to change notification settings - Fork 4
Contributing and Extending
Issues and pull requests are welcome, especially new assess workflows. Please run make test before opening a PR.
git clone https://github.com/praetorian-inc/caeruleus
cd caeruleus
make build # -> ./caeruleus
make test # unit tests + shell testsThe assess subcommand is built on shared primitives — BLE session management, the findings schema, secret detection, and structured output — so a new check is small and inherits JSON output and agent-drivability for free.
Each assessment is a self-contained Go file that follows the same pattern:
- Open a session to the target, do your probing.
- Build
findings[], each withseverity(info/low/medium/high/critical),handle,uuid,evidence,detail. - Return
{address, test, summary, findings[]}.
Then wire it in: one Go file plus one line in assess.go, and everyone gets the new check in the next build, with -o json/jsonl and the shared findings shape included. When your team keeps repeating a manual check, this is the way to make it repeatable for everyone.
Keep new checks:
-
Non-destructive by default. If a check can reset or crash the target, gate the destructive part behind an explicit flag (as
assess dfu --probe-entryandassess wwrdo) and document it. - Consistent with the schema. Reuse the existing findings fields and severity scale so results correlate with the other assessments.
-
Secret-aware where relevant. Read values can be run through the Titus rule set for automatic secret escalation, the same as
check-authandrecon.
Caeruleus is deliberately opinionated: it makes the most common facets of BLE interaction fast, scriptable, and agent-friendly, as the central only. Out of scope by design: traffic sniffing of other devices, active MITM, and peripheral cloning. Contributions that fit the central-side, structured-output philosophy are the best fit.