kiff is the
air traffic control
protocol for AI agents.
Agents can fly. KIFF provides shared clearance before anything touches production. The agent can say no. The system says when, where, and on whose authority.
by design
default
& auditable
production

- clearance tower issues clearance
- taxi route policy-driven routing
- gate check validates intent
- takeoff execute with confidence

One tower.
Shared clearance.
Safe outcomes.
KIFF acts as the coordination layer for all agent actions: resolving intent, enforcing policy, and keeping a verifiable record of what happened and why.
The agent can say no. The system says when, where, and on whose authority.
Clearance authority
Signed approvals from the right humans and policies.
Timing & sequencing
Prevent collisions with ordering, locks, rate caps.
Routing & resolution
Deterministic path from intent to safe action.
Context & state
Real-time state, history, dependencies in one place.
Reconstruction
Tamper-evident audit. Replayable months later.
Separation
Isolated runtimes prevent cross-impact.
A protocol for safe movement.
Every action follows the same six-phase clearance path. Same vocabulary across humans, agents, services.

- 01EVENTSomething happens.
Source. Actor. Time.
- 02STATECurrent state read.
What is true now.
- 03DECISIONPolicy evaluates.
Permissions, contracts, risk.
- 04ACTIONChange is prepared.
Validated. Not executed yet.
- 05APPROVALAuthority signs.
High-risk waits for human.
- 06AUDITLogged, replayable.
Append-only chain.
- 01 event something happens
- 02 state current state read
- 03 decision policy evaluates
- 04 action change prepared
- 05 approval authority signs
- 06 audit logged for replay
The team that keeps agents safe and efficient.
Each role plays a part in moving requests from intent to impact. KIFF gives every actor the same protocol — humans, agents, services, integrations.

- agent declares intent
- approver signs clearance
- adapter moves the workload
- runtime executes
- policy rules & routing
- audit records
No clearance, no movement.
A plane and a truck on the same runway is how you crash. Two actors on the same state is how you corrupt it. KIFF holds every action at the gate until policy, authority, and timing all clear.
The gate is the same for every actor. The record is the same for every gate.

- 01 Validate intent — request complete & well-formed
- 02 Evaluate policy — rules, guardrails, organization constraints
- 03 Assess impact — state, conflicts, risk, safety
- 04 Grant clearance — signed approval with conditions and TTL
- 05 Execute & record — append to the immutable log
Watch a domain take shape.
Studio grows the same domain in four stages — from a bare entity to a complete, scaffold-ready plan. Blocks on the left, the live kiff.yaml on the right. Click a stage to see it fill in.
OrderentityREFUND_ORDERactionOrderentityCREATED → PAID → REFUNDED3 statesMARK_PAIDin CREATEDREFUND_ORDERin PAID3 states · 3 eventsstateMARK_PAIDlowAUTO_REFUNDmediumREFUND_ORDERhigh · approval3 states · 3 eventsstateREFUND_ORDERhigh · approval# Stage 1 — minimum viable domain.
# One entity. One action. Enough to start.
domain: refund-agno
entity: Order
actions:
- name: REFUND_ORDER
executor: refund.issue_refund
# missing: states → 2 · rules → 3 · audit → 4# Stage 2 — state machine added.
# Events and transitions give it a spine.
domain: refund-agno
entity: Order
events: [ORDER_PLACED, ORDER_PAID, ORDER_REFUNDED]
states: [CREATED, PAID, REFUNDED]
transitions:
- on: ORDER_PLACED to: CREATED
- on: ORDER_PAID from: CREATED to: PAID
- on: ORDER_REFUNDED from: PAID to: REFUNDED
actions:
- name: MARK_PAID
allowed_states: [CREATED]
- name: REFUND_ORDER
allowed_states: [PAID]# Stage 3 — full action contracts.
# Risk, approval, permissions made explicit.
actions:
- name: AUTO_REFUND
allowed_states: [PAID]
required_parameters: [amount, reason]
required_permissions: [orders.refund]
risk: medium
approval: never
- name: REFUND_ORDER
allowed_states: [PAID]
required_parameters: [amount, reason]
required_permissions: [orders.refund]
risk: high
approval: required
permissions:
roles:
ops_agent: [orders.mark_paid, orders.refund]
admin: [orders.refund, orders.approve]
# proposer ≠ approver — the trust boundary holds.# Stage 4 — complete domain.
# Audit + adapter close the loop. Scaffold-ready.
actions:
- name: REFUND_ORDER
risk: high
approval: required
executor: refund.issue_refund
audit:
store: in-memory
trace_propagation: true
adapters:
- name: stripe-webhook
source: stripe
kind: webhook
# kiff scaffold → domain.go · actions.go
# policy.go · domain_test.go