How it works
Describe, plan, apply, govern.
People set goals, policy and budgets, then answer the rare exception. Agents do the rest through the same API, and every change is planned and priced before it runs.
Four steps
01
Describe the fleet
Write a short manifest, or let an agent write it: which harness to run, the goal, the schedule, which tools it may use and the budget.
02
Plan and quote
Every change is a plan first. The plan shows the diff, the effect classes involved, which approvals it needs and a price quote, before anything runs.
03
Apply
Apply the plan. Heighliner starts a sandbox per agent, mounts short-lived credentials and routes model and tool calls through the gateway, which spends from the budget.
04
Govern
Risky actions wait for you in Slack, ChatGPT, Claude or the console. Everything else runs within policy. Read the receipt when the run ends.
The manifest
Budget, permissions and escalation are fields, not afterthoughts.
A fleet is described in one short file: the harness, the goal, the triggers, which tools it may use and which need approval, and the budget. Your model key is a reference to a secret, never the value.
hl plan shows the diff, the approvals it needs and a quote. hl apply runs exactly the plan you saw; if anything changed in between, you get a fresh plan instead.
fleet: seo-weekly
runtime: claude-code # or codex, hermes, opencode
goal: "Find and fix SEO issues on example.com"
model: { provider: openrouter, key: secret://OPENROUTER_KEY }
triggers:
- schedule: "0 6 * * 1" # Mondays 06:00
- slack: "#growth"
tools:
github: { allow: [pulls.create], require_approval: [pulls.merge] }
budget: { monthly_usd: 30, per_run_usd: 0.50 }
$ hl plan fleet.yaml
+ fleet seo-weekly runtime claude-code
~ budget $30.00/mo, $0.50/run
! approval pulls.merge
quote ~$0.31/run + your tokens
plan pln_7f2c expires in 15 min
$ hl apply pln_7f2c
applied pln_7f2c fleet seo-weekly is scheduled
One run, end to end
Cheap to pause, safe to crash, hard to overspend.
queued
A schedule, Slack message, webhook, API call or chat starts a run. The budget is checked before anything starts.
running
The agent runs in its own sandbox. Model and tool calls go through the gateway, which attaches your key outside the sandbox and spends from a budget lease.
awaiting approval
An irreversible action is held in escrow. The agent waits without burning compute until someone approves or rejects it.
completed
Escrowed effects are released on commit, and the run ends with a receipt: agent, model, policy version, checks and the trace.
If the budget runs out mid-run, no new lease is granted and the call returns budget_exhausted with a fix. Read more about budget leases, effect classes and escrow.
Early access
Give your agents a budget, a sandbox and a supervisor.
Heighliner is in early access. Join the waitlist and we will reach out as places open.