Safety Spec in.
Safety Pack out.
Your Safety Spec (saykai-policy.yml) is how you write down what "safe enough" means. The Safety Pack is the proof of what happened. Saykai enforces the Spec in CI and emits a signed Pack on every run.
- > Safety Specs live in your repo next to your Nav2 config.
- > Packs are generated in CI.
- > Together they turn every pull request into a safety decision.
Two artifacts, one gate.
Saykai is built around a simple idea: you write down what "safe enough" means in a Safety Spec, and Saykai turns that into a repeatable gate on every change.
Safety Spec
A versioned configuration file in your repo that defines:
- Which Nav2 rules and behavioral scenarios must pass
- The approved hard limits for your robot class (max speed, acceleration, safety buffer)
- Which findings block a PR, and which only warn
Safety Pack
A signed JSON artifact emitted on every CI run that captures:
- Which Safety Spec version was used (via checksum)
- Every finding from the audit, with severity and evidence
- The final pass or block decision, cryptographically signed
Your Safety Spec: what "safe enough" means.
Your Safety Spec (saykai-policy.yml) is the single source of truth for what you consider safe enough for one robot class. It is written as YAML, stored in git, and reviewed like any other change.
What goes into a Safety SpecRobot Class
Which class of robot this Spec applies to (for example, class_b, a mid-size AMR).
Hard Limits
The approved max speed, acceleration, and minimum safety buffer for that robot class.
Rules
Which Nav2 parameter checks and behavioral scenarios are enabled, and how severe each one is.
Actions
Whether a violated rule blocks the PR, warns, or goes to manual review.
/repo/saykai-policy.yml
Example Safety Spec
This is a simplified example for a warehouse AMR fleet.
> LOGIC EXPLAINED
- max_speed and the other hard limits are approved values, not suggestions — here, 0.45 m/s for this robot class.
- Any Nav2 config that exceeds an approved hard limit blocks the PR (action: block).
- Lower-severity issues can be set to review or warn instead of block, per rule.
Safety Pack Result
What actually happened on this change.
How Safety Specs and Safety Packs fit into CI.
Once you have a Safety Spec and Saykai wired into CI, every pull request gets the same treatment.
Engineer opens a change.
The pull request includes code, plus any Safety Spec changes if the safety bar needs to move.
CI runs Saykai.
Saykai audits the Nav2 config, runs behavioral scenarios, scans for secrets, and compares findings to your Safety Spec's approved limits.
Gate returns pass or block.
If it passes, the Safety Pack is attached to the run. If it fails, the build is blocked with a clear reason based on Safety Spec rules.
Why Safety Specs and Safety Packs beat ad hoc checks.
Repeatable
The same rules and hard limits run on every change, not just big releases.
Versioned
When incidents or requirements change, you update the Safety Spec through a pull request and the new bar applies to every future change.
Shareable
You can share a Safety Pack with risk or leadership without giving them raw system access.
"Here is the Safety Pack for Release v4.2"
Start defining your first Safety Spec.
We usually start with one robot class. We define the hard limits and rules that matter most, and turn that into your Safety Spec (saykai-policy.yml).
Talk about your Safety Spec