Skip to content
Pyrana

Pyrana Harness

Runtime, orchestration, fan-out, approval lanes.

The Pyrana Harness is the agent runtime and the orchestration layer: native tool calling, planning, subagents, checkpoints, and resume, on durable workflows that fan out, wait, retry, and finish, scheduled or on demand. Every child call re-enters the gate. Every lane produces one execution record.

Exec read 3 min Full read 9 min

one governed loop
admit → plan → act → observe → validate → publish
  1. Admit01

    identity resolved, idempotency claimed, audit written

  2. Plan02

    explicit steps, written through tools, not hidden state

  3. Act03

    tools, subagents, extensions with delegated tokens

  4. Observe04

    checkpoint; suspend for a person or an external result

    paused · awaiting approval
  5. Validate05

    declared finish conditions: required artifacts, packet schemas

  6. Publish06

    receipts, effects, versioned resources, one causal trace

Lanesdirectagentworkflowbatchevent

01Why a runtime

One runtime, fit for purpose.

Each agent in an App is configured for one job: a system prompt scoped to the use case, the tools for its data, and a library of files it discovers progressively. A model is assigned per agent through provider adapters and is not switched mid-run. For data shaping, the runtime provides a code interpreter environment that runs deterministic scripts the agent calls, so the same input yields the same output. The Harness owns the loop discipline: explicit plans, tools with declared effects, checkpoints that survive a restart, and finish conditions the model cannot bypass.

AdaptersAzure OpenAIOpenAIAnthropicFireworksGoogle Geminiothers
Statusmodel per agentcode interpretersize-tier routing for platform jobs

02Execution lanes

Five lanes, one gate.

The gate is common. Execution semantics are not forced to be. The App routes each target to the lane that fits; deterministic work never touches a model.

LaneWhenWhy
DirectDeterministic work: no model, no harness, no workflow engine.Lowest latency and cost. Smallest attack surface.
AgentAdaptive work with native tool calling, subagents, suspension for human input, checkpoint and resume.Every child tool call re-enters the gate. No ambient tool access.
WorkflowDurable graphs on Temporal, including graphs authored at runtime; fan-out per entity and per group.Suspend, checkpoint, and resume after any interruption.
BatchOne target run across many entities at once.Per-entity identity, status, and result under the same gate.
EventSchedules, webhooks, and system events trigger direct or agentic work.Continuation is explicit: NEW, JOIN, or NONE. An invalid join fails closed.

03Fan-out

One workflow, per entity and per group, in parallel.

One workflow dispatches specialized agents per entity and per group. Pyrana Capital, a synthetic portfolio, has nine operating companies in three groups under one holding company. For each operating company the monthly workflow runs three agents, revenue, materials, and labor, each scoped to its entity, its period, and the tools for its data: the agent passes the entity and the period, the tool holds the query. No agent writes a free-form query.

Outputs publish back to the App as versioned resources and roll up: operating company to group, group to holding company. Each agent reads what siblings and prior runs published, so the June analysis can reference May's. Every child execution passes the gate and leaves its own record under the parent.

Statusworkflow fan-outscoped tool bindingsversioned resources
monthly_analysis · 2026-06
9 opcos · 3 groups · 1 holdco
  1. HoldCo×1One holding-company summary reads the three group roll-ups.
  2. Groups×3Each group roll-up reads its operating companies' analyses and the prior month's roll-up.
  3. OpCos×9Three specialized agents per operating company: revenue, materials, labor. Each scoped to its entity, its period, and the tools for its data.
revenue-analyst
billing and receivables views · entity + period · reads prior run
materials-analyst
purchasing and inventory views · entity + period · reads prior run · revenue output
labor-analyst
payroll and scheduling views · entity + period · reads prior run · revenue output

one June run · 45 agent executions · 36 published references

NoteIllustrative. Pyrana Capital is a synthetic portfolio.
For engineers and architects4 min

04Approval as policy

Policy over typed arguments, bound to a frozen proposal.

A tool approval policy inspects amounts, membership, existence, and compound rules. Above threshold, the invocation, its arguments, scope, and evidence freeze into a durable proposal the waiting agent cannot alter. Each named approval lane receives an independent obligation. Reviewer eligibility is checked at decision time. The frozen invocation is revalidated before it dispatches exactly once, and an ambiguous provider outcome goes to reconciliation rather than a blind retry.

Policies compose restrictively: a platform floor cannot be loosened by an App or an agent setting. A queued request is visibly different from a posted entry.

Go deeperApproval is a policy, not a boolean7 min
approval as policy · exec_01J9Q4M7Z3

policy over typed argumentsbuilt

tool
ledger.journal.post
args
amount=41,800.00 USD · cost_center=4410 · invoice_ref=INV-2026-07731
policy
{ approval.journal.amount }@v7 · amount >= 25,000 USD
evaluates
true → approval required
  1. Arguments are typed at the operation boundary, so the policy reads a number, not a string inside a prompt.
  2. The policy is versioned with the App. v7 is what the audit record will name.
  3. Below threshold, the same invocation dispatches immediately and writes the same record shape.
Statusconditional tool approvalfrozen invocationsapproval lanesidempotent effects
durable execution
Temporal workers
  1. Mon 14:06run started · plan written · 3 tool calls
  2. Mon 14:07ledger.journal.post frozen · lane=controller-approval
  3. Mon 14:07checkpoint · run suspended
  4. Thu 09:12j.alvarez approved · revalidate ok
  5. Thu 09:12resumed from checkpoint · dispatch once · JE-88213
Worker poolsagent runsdata fetchingfile extractioncode interpreter

05Durable execution

A process that waits three days for a signature does not start over.

Workflows are directed graphs of tasks with declared dependencies, retries, timeouts, and budgets, hosted on Temporal workers. The scheduler is deterministic and durable: it tracks node and item state, preserves partial results, and resumes after a worker or process interruption. The idempotency key claimed at the gate means a verified replay rejoins the prior result instead of starting duplicate work.

The platform is hosted as SaaS on a dedicated private tenant, or deployed into the client's own infrastructure for large enterprises. Workers scale horizontally, and separate worker pools handle data fetching, file extraction, and the code interpreter, so a large extraction does not compete with an interactive run.

Statusdurable executionclient Kubernetes deployment

06One causal trace

Every call, every lane, one record.

Gate decision, model calls, tool calls, subagents, approvals, effects, context use, and outputs are correlated under one execution identity. Traces, tokens, and tool errors are available as JSON for every run. The same evidence supports evaluation of an execution, an agent, a workflow, or an App version; deterministic checks (token growth, tool error rates) come first, and an LLM-as-judge stage in Agent Studio is in development.

Recorded asexecution recordaudit eventeffect receiptsretrieved ⊇ injected ⊇ cited
One execution record per call: built, enabled per installationEval pipeline: in development

07Questions

Frequently asked

Which models does the Harness run?
A model is assigned per agent through provider adapters: Azure OpenAI, OpenAI, Anthropic, Fireworks, Google Gemini, and others. Models are not switched mid-run. The client brings its own keys, and client data never trains external models. Small, medium, and large routing for platform jobs such as summarization is designed, not yet built.
How are runs evaluated?
Every run's traces, tokens, and tool errors are captured and available as JSON. The eval pipeline in development runs deterministic checks first (token growth, tool error rates), then an LLM-as-judge stage in Agent Studio.
How does the Harness scale?
The platform is hosted as SaaS on a dedicated private tenant, or deployed into the client's own infrastructure for large enterprises. Temporal workers provide durability and horizontal scaling. Separate worker pools handle data fetching, file extraction, and the code interpreter, so a large extraction does not compete with an interactive run.
When should something not be an agent?
Whenever the work is deterministic. The direct lane runs bounded operations with no model, lower latency, and a smaller attack surface. The agent lane is for adaptive work, the workflow lane for long-running work, batch for many entities, event for triggers.
What happens if a workflow waits three days for a signature?
It suspends, checkpointed, and resumes from where it stopped when the approval arrives. Nothing starts over. The idempotency key claimed at the gate means a retry reuses the receipt.
Is human approval enabled everywhere?
Tool approval policies are built and enabled per App. A platform-level floor cannot be loosened by an App or an agent setting; an App can only tighten it.

See a workflow fan out, wait for a person, and finish.

Admit, plan, act, observe, validate, publish. On the client's systems, under the client's rules.