Platform · 01 · sessions
Identity that survives the machine.
A session is the agent's durable name. It outlives the process, the host, the context window, and the model that happened to be answering when it started.
01 / the problem
Most agents are a process pretending to be a worker.
In a normal harness, the agent is whatever is currently in memory. Kill the process and the worker is gone: the task, the filesystem, the half-finished migration, the knowledge of what it already tried. Restart it and you have a new stranger with the same prompt.
That is survivable in a demo and unacceptable for work that takes three hours, waits on a human overnight, or spans a model deprecation. A workforce needs workers with names.
8h+
single session length
Long-running jobs, not request/response.
0
state lost on crash
Filesystem and cursor restored on resume.
02 / what a session holds
- Identity
- A stable principal — agent:claims-bot — plus the human or service it acts on behalf of. Both travel with every call the agent makes.
- Delegation chain
- When an agent spawns a child, the child gets its own principal with the parent recorded. Authority can narrow down the chain, never widen.
- Execution state
- Filesystem, working directory, environment, installed packages, and open handles, captured as a resumable snapshot.
- Policy binding
- The ring and the policy version in force. A session cannot silently gain privilege mid-run; a change is a new, recorded decision.
- Evidence cursor
- The position in the hash chain, so the record continues across a resume instead of starting a second, unlinked story.
- Budget
- Tokens, wall-clock time, spend, and tool-call counts consumed so far, enforced as hard ceilings.
03 / model swaps
The brain is replaceable. The worker is not.
Swap Claude for GPT mid-session and nothing else moves. The identity, the policy, the filesystem, and the evidence chain are all properties of the session, not of the model.
# the session outlives the model it started on
session = velone.sessions.resume("session/7f3a")
session.model = "claude-opus-4" # started here
session.model = "gpt-5.2" # deprecation, same worker
session.model = "llama-4-70b-local" # cost cut, same worker
session.identity # agent:claims-bot (unchanged)
session.ring # 2 (unchanged)
session.evidence.at # 4,812 (continues)04 / questions
Is a session just a thread of conversation?
No. A conversation is one thing a session may contain. The session is the execution identity: the box, the credentials it can request, the ring it runs at, and the record it writes. You can run a session with no conversation at all.
How long can a session live?
Indefinitely. Sessions idle to a snapshot and cost nothing while suspended; resume rehydrates the filesystem. Long waits on human approval are the normal case, not an edge case.
What happens when the host dies?
The session is rescheduled onto another host from its last snapshot. Work since the snapshot is replayed from the evidence log where it is safe to do so, and flagged where it is not.
Can two agents share a session?
No, and deliberately so. Shared identity destroys attribution. Use a parent session with child sessions instead — you keep one story with separate, provable actors.
keep reading
Ring 0
Give your agents names that outlive the process.
Sessions are the first thing we turn on with a design partner, because everything else hangs off them.