---
title: "Concepts"
description: "The eight primitives o8 is built on — runtime, agent, session, packet, lane, mission, review, approval — and how they fit together."
canonical_url: https://o8.run/docs/concepts
md_url: https://o8.run/docs/concepts.md
last_updated: 2026-06-25
version: "0.1.431"
stability: stable
---

# Concepts

> The eight primitives o8 is built on — runtime, agent, session, packet, lane, mission, review, approval — and how they fit together.

o8 is built on eight primitives. They have different lifetimes and different jobs, so it's worth holding them apart — these names show up everywhere in the app.

## The mental model

You describe an outcome. The **orchestrator** breaks it into **packets** — units of planned work — and groups the active batch into a **mission**, ordered as a dependency graph so independent packets run at the same time. To execute a packet, o8 opens a **lane**: a durable record binding the packet to an isolated git **worktree** and to a **session** running inside a **runtime** (the adapter for a CLI coding tool). The live process doing the work is an **agent**. When its diff is ready, **review** renders a verdict, and **approval** gates the actions that need a permission check.

Plan and execution stay separate on purpose: a failed attempt is retried as a fresh lane without losing the plan.

## The eight primitives

| Primitive | What it is |
|---|---|
| **Runtime** | The adapter for a CLI coding agent — a normalized interface the control plane talks to, not a running process. |
| **Agent** | A live runtime process: one CLI invocation, in one isolated worktree. |
| **Session** | A conversation thread inside a runtime. One runtime can carry many sessions. |
| **Packet** | The orchestrator's unit of *planned* work — a brief plus its result, with a runtime target and a dependency list. |
| **Lane** | The durable *execution* record — the row binding a session to a worktree to a packet, with a lifecycle from idle to merged. |
| **Mission** | The current batch of packets in flight toward one goal. There is exactly one active mission at a time. |
| **Review** | The diff verdict: accept, reject, or request changes. Per packet. |
| **Approval** | A permission gate on a tool call or lane action. Per call — not the same as review. |

## Four distinctions worth keeping

- **Runtime ≠ agent ≠ session** — the adapter, the process, and the thread inside the process.
- **Packet ≠ lane** — the *plan* versus the *execution*. One packet can spawn several lanes; each retry is a new lane.
- **Mission ≠ packet** — a mission is the active batch; a packet is one item in it.
- **Review ≠ approval** — a per-packet diff verdict versus a per-call permission gate.
