Open Source · Rust · AGPL-3.0

orno

The agent loop can't step outside the box.

A runtime contract for LLM agents in CI. You declare the ceiling in YAML — iterations, tools, effects, resources — and orno stops the agent the moment it tries to cross it.

5
Strictness axes
1
Binary, no server
AGPL
3.0 licensed
01 — The problem

An unbounded agent loop in CI is a liability.

One bad prompt and the loop burns a weekend of tokens, reaches endpoints it had no business touching, and leaves you nothing to audit afterwards. orno wraps the loop in a contract and enforces it at runtime — nothing to wire up in code, no place to quietly disable the limits.

02 — The contract

Five axes. All enforced at runtime.

Scroll — the field highlights each axis in turn.

01

Bounded iteration

Caps the agent-loop turns so it can never spin forever.

max_iterations
02

Bounded tool surface

Declares exactly which tools, MCP calls, and subagents the model may reach.

allowed_tools
03

Bounded effects

Gates mutating operations, network access, and which domains are in reach.

mutations · network
04

Bounded resources

Hard ceilings on total tokens, total tool calls, and subagent depth.

tokens · calls · depth
05

Bounded non-determinism

Every LLM call is recorded — replay is exact, byte for byte.

record · replay
03 — How enforcement works

Declare it once. orno holds the line.

step 01

Declare in YAML

Set the contract — iterations, tool surface, effects, resources — in one file.

step 02

Enforce at runtime

Every agent node checks all five axes live. No policy library to keep in sync.

step 03

Breach → stop

Cross a limit and the node terminates with the matching event on the log.

04 — Why teams reach for it

One binary, one file

No server, no database, no scheduler to babysit. Drop it on a runner and call it.

Two streams, no parser

NDJSON events on stdout, tracing on stderr. Pipe straight into jq, Splunk, or Datadog.

A pinned GitHub Action

Pin DoctorMozg/orno@v0 in the workflow and the run stays reproducible.

Auditable by design

Guardrails you can read.

Open source under AGPL-3.0. The contract is right there in the YAML — no hidden policy, no place to switch the limits off.

View on GitHub
AGPL-3.0 · Rust · orno