Skip to main content

all systems normal · status.trellisagents.example v2.3.0 · tokens pass through at $0 margin

trellis Agents

product

One runtime, four modules, one trace model.

Everything below works on the same run. Orchestration executes it, guardrails constrain it, evals score it, and observability prices it. There are no integrations between our own features; it is one system.

01 / 04

Orchestration

Durable runs that survive restarts, retries, and people

An agent run is a long, failure-prone conversation between a model and your systems. Trellis makes each run durable. Every step is checkpointed, retries follow a policy with exponential backoff, and a run can pause for hours waiting on a human approval without holding a connection open. Then it resumes exactly where it stopped.

  • Checkpointed steps
  • Retry policies, not retry loops
  • Human-approval steps
  • Fan-out and joins
Explore orchestration →
trellis runs show 01J8ZD2M --events
09:14:02 step 3/6 · model plan · ✓ checkpointed (c3)
09:14:03 step 4/6 · tool inventory.sync · ✗ ETIMEDOUT (attempt 1/3)
09:14:11 step 4/6 · retry, backoff 8s · ✓ checkpointed (c4)
09:14:11 worker-7 lost heartbeat → run migrated to worker-12
09:14:12 step 5/6 · resumed from c4 · no replayed side effects
09:14:12 approval discount > 15% · parked, waiting on @lena ($0 while parked)
11:41:53 approval granted by lena@ · resuming
11:41:55 step 6/6 · tool orders.update · ✓ done · run resolved
fig. 01: a durable run (checkpoint, crash, resume, approval, done)

02 / 04

Guardrails

Policy checks at run and call boundaries, enforced by the runtime

Guardrails are policy checks that sit outside the model. They validate tool arguments against a schema, limit which tools an agent may touch, screen inputs and outputs for PII, and put hard caps on tokens and spend. Each policy runs in observe, dry-run, or enforce mode, so you can watch what it would block before you let it block.

  • Tool allowlists and argument schemas
  • Input and output screens
  • Budget caps that actually stop runs
  • Observe, then dry-run, then enforce
Explore guardrails →
policies/refund.policy.yaml · enforce
policy: refund.policy # v7 · mode: enforce
applies_to: [refunds.create]
rules:
- amount_usd: { max: 500 }
- currency: { in: [USD, CAD] }
- schema: RefundArgs # reject out-of-schema writes
- screen: [pii, injection]
on_block: escalate_to_human # never fail silent
 
── enforcement log ────────────────────────────
14:22:31 BLOCK refunds.create · amount_usd=1,240 > 500 → escalated (run 01J8…)
14:22:31 case auto-added to eval set refund-edge-cases
fig. 02: a policy in enforce mode blocking an out-of-schema write

03 / 04

Evals

Regression gates for behavior, wired into CI

Prompts, models, and tools change every week. Without evals, every change is a bet placed on production. Trellis turns real traces into eval datasets, runs graders (exact-match, rubric, and LLM-as-judge with calibration), and gates your CI. A candidate that regresses on the golden set never ships.

  • Traces become test cases
  • Three grader families
  • CI gates
  • Side-by-side diffs
Explore evals →
trellis eval --gate --candidate frontier-v9
suite baseline candidate Δ gate
citation-accuracy 99.2% 95.9% -3.3pp ✗ FAIL (min 99.0)
dosage-extraction 98.8% 97.1% -1.7pp ✗ FAIL (min 98.5)
tone-rubric 4.4/5 4.6/5 +0.2 ✓
retrieval-recall 91.0% 92.4% +1.4pp ✓
latency-p95 8.1s 5.7s -2.4s ✓
cost-per-run $0.31 $0.19 -39% ✓
 
gate: FAIL · 2 of 13 suites below threshold · deploy blocked
cheaper and faster is not better if it invents citations. exit code 1.
fig. 03: an eval gate failing a candidate model upgrade

04 / 04

Observability

Every run a trace; every span priced

Each run produces a full trace: a tree of spans for model calls, tool calls, guardrail checks, and approvals, with token counts, cost, and latency on every node. Filter your fleet by outcome, cost, or policy hits. Replay any run step by step. Export everything over OpenTelemetry to the tools you already use.

  • Span-level cost accounting
  • Step-through replay
  • Fleet views and alerting
  • OpenTelemetry out
Explore observability →
console · trace waterfall · run 01J9F8QK
input.screen ▎ 41ms · $0.00008
plan ██████▏ 620ms · 1,842→214 tok · $0.00041
orders.lookup ██ 180ms · tool
draft_response ████████▍ 840ms · 2,104→388 tok · $0.00055
refund.policy ▎ 38ms · pass · $0.00008
refunds.create ███ 310ms · tool · $42.00 refunded
summarize █████▎ 530ms · 1,610→196 tok · $0.00036
output.screen ▎ 44ms · pass · $0.00008
 
run total: 4.21s wall · 12,916 tokens · $0.00404 · outcome: resolved
fig. 04: a traced support run, span by span, with per-node cost

plays well with your stack

Bring your models, keep your tools.

Any model provider

Bring your own API keys or use our metered pass-through. The trace and the math look the same either way. Swap providers per agent, per step, or per eval candidate.

OpenTelemetry native

Spans export with GenAI semantic conventions to Datadog, Grafana, Honeycomb, or your own collector. Trellis is a source of truth, not a silo.

CI you already run

trellis eval --gate is a normal exit-code step that works in any CI system. There is no new deploy tool to adopt.

Questions about fit, data, or rollout? The FAQ answers the ones engineers ask first.

$ trellis estimate --honest

See the four modules on your own workload.

Price the stack first in the configurator, then bring a real workflow to a 30-minute demo. We'll trace it live.

Fictional sample site by SearchPod