Pricing

Two meters — robot-hours and environment-hours — visible in every quote and every result. Metered per minute.

Everything you buy from Roborama reduces to two meters: robot-hours (occupancy of an embodiment) and environment-hours (occupancy of a scene). A queue priority — burst | standard | soak — multiplies both. There are no credits, no seats, no platform fee. Every quote and every result shows both meters, so the bill is an arithmetic exercise, never a surprise.

MeteredMost teams start here
from $7/robot-hour

+ environment meter from $12/env-hour

Two meters, per minute. No credits, no seats, no platform fee.

Everything on the rate card:

  • All ten catalogue embodiments, firmware-pinned
  • Four environment classes, bare cell to instrumented replica
  • Queue priority ×0.6–×1.5 on both meters
  • episodes="auto(ci, moe)" run sizing
  • max_budget_usd hard stop, metered live
  • MCAP + video + ground truth on every episode
Threshold contract
Your cap/month

monthly_cap_usd — a hard stop you set

Buy the verified outcome — iterate cheap, escalate automatically.

Metered under the cap, plus:

  • Soak-tier iteration on commodity pods (nori-a3, $7/robot-hour)
  • Automatic escalation to verification-tier hardware on crossing
  • on_verified webhook gates your release
  • Partial results kept — n and CI survive any stop
Suite run
$9,500/suite run

flat — a small discount to the metered equivalent

The rbr-manip-core@v3 benchmark, scheduled as one block.

One block, one report:

  • 5 tasks × 300 episodes
  • g1-edu-pro@fw2.3, firmware-pinned
  • Suite attestation (rbr:att: id)
  • Verification report included
CompareMeteredThreshold contractSuite run
Rates & billing
Robot meter$7–$176 /robot-hoursoak rates, then verify-tierincluded
Environment meter$12–$85 /env-hourmetered under your capincluded
Queue priorityburst ×1.5 · standard ×1.0 · soak ×0.6soak ×0.6 until escalationscheduled as one block
Billing granularityper minuteper minute, cappedflat
Hardware
Embodimentsall ten, firmware-pinnednori-a3 pods → g1-edu-prog1-edu-pro@fw2.3
Environmentsfour classes, versioned scenescatalogue scenessuite scenes, pinned
Teleop fallback adder+$18 /robot-hour+$18 /robot-hour—
Statistics
n + Wilson 95% CI on every result✓✓✓
Auto-sized episodes✓drives escalation300 per task
Failure clusters✓✓✓
Controls
Hard budget stopmax_budget_usd per runmonthly_cap_usdflat price
QuotesPOST /v1/quote, 7-day expirycap set in the contractfixed
Webhooksall five eventson_verifiedrun.completed
Partial results kept on stop✓✓✓
Deliverables
MCAP + video + ground truth✓✓✓
Verification reporton verification-tier runson threshold crossingincluded
Suite attestation——✓

The rate card

The comparison above is arithmetic over one public rate card — a JSON file, /fixtures/pricing.json, the same one the quote endpoint prices from.

Meter 1 — robot-hours (occupancy of an embodiment)
RobotClassTierRateNotes
nori-a3arm-podsoak$7 / robot-hourCommodity soak pods, 24 cells. Iterate here; escalate when the numbers hold.
so-101arm-podsoak$9 / robot-hourHobby-class 5-DoF pods, 16 cells. The cheapest smoke test for a policy.
stretch3mobile-manipulatorverify$34 / robot-hourMobile manipulation, firmware-pinned.
fr3-benchfixed-armverify$38 / robot-hourTorque-controlled 7-DoF industrial arm on a fixed bench.
aloha-bimanualbimanualverify$52 / robot-hourBimanual teleop-grade rig.
tiago-promobile-manipulatorverify$61 / robot-hourPremium mobile manipulator; torso lift and force-torque wrists.
aloha2-probimanualverify$74 / robot-hourSecond-generation bimanual rig, gravity-compensated, higher payload.
spot-armquadruped-manipverify$89 / robot-hourQuadruped with a 6-DoF arm; uneven-floor manipulation cells.
g1-edu-prohumanoidverify$148 / robot-hour37-DoF humanoid with dex3-1 hands; the verification-tier default.
g1-edu-plushumanoidverify$176 / robot-hour43-DoF humanoid; limited cells.
Meter 2 — environment-hours (occupancy of a scene)
Environment classExampleRateNotes
barecell-a@v1.0$12 / env-hourBare bench cell, overhead camera.
standardwarehouse-std@v2.0$24 / env-hourStandard catalogue scene with mocap.
replicakitchen-std@v1.2$39 / env-hourFull replica scene, mocap + force-torque.
instrumented-replicasurgical-replica@v3$85 / env-hourHigh-instrumentation replica, high-speed capture.
Queue priority (multiplies both meters)
PriorityMultiplierNotes
burst×1.5Expedited queue: next available cell, both meters at 1.5×.
standard×1.0Default queue.
soak×0.6Off-peak, interruptible scheduling at 0.6×.
Adders
AdderRateNotes
teleop-fallback$18 / robot-hourHuman takeover on policy halt (Policy.endpoint fallback).
extra-instrumentation$12 / env-hourAdditional mocap or high-speed capture beyond the environment's base kit.
Packaged units
PackagePriceIncludes
rbr-manip-core@v3 suite run$9,5005 tasks × 300 episodes on g1-edu-pro@fw2.3; suite attestation (rbr:att: id) and the verification report.
Outcome contract — threshold()monthly_cap_usd you setSoak-tier iteration (e.g. nori-a3 pods) with automatic escalation to verification-tier hardware on threshold crossing; on_verified webhook; hard monthly cap.

Metered per minute, displayed per hour. Hours in results are rounded to 0.1 h; billing uses exact minutes. A max_budget_usd on any run is a hard stop, metered live.

A worked quote: 600 humanoid episodes

What does it cost to run 600 episodes on g1-edu-pro in the kitchen-std@v1.2 replica at standard priority?

episodes            600
est. minutes/ep     2.0   (task time + scripted reset)
robot-hours         600 × 2.0 min = 20.0 h
environment-hours   600 × 2.0 min = 20.0 h

robot meter         20.0 h × $148/robot-hour  = $2,960
environment meter   20.0 h × $39/env-hour     = $780
                                        total = $3,740   queue ETA ~6h

That is exactly what the quote endpoint returns — the same shape ships in /fixtures/quote.json and in the POST /v1/quote examples:

roborama.quote()
import roborama  # reads ROBORAMA_API_KEY from the environment

quote = roborama.quote(
    robot="g1-edu-pro",
    environment="kitchen-std",
    episodes=600,
)
print(quote)
# {robot_hours: 20.0, env_hours: 20.0, usd: 3740, queue_eta: "6h"}

For comparison, the canonical run on the product page was auto-sized (episodes="auto(ci=0.95, moe=0.03)") and stopped at n=612 with realized robot_hours=20.4, environment_hours=20.4, cost_usd=3,812 — billing uses exact minutes; displayed hours are rounded to 0.1.

Outcome pricing: the threshold contract

If what you actually want to buy is "iterate until verified at a 0.99 success rate (95% CI) on bin_pick@v1", buy that. A threshold() contract iterates your checkpoint stream on soak-tier commodity pods (e.g. nori-a3, single-digit dollars per robot-hour) and escalates to verification-tier hardware like g1-edu-pro@fw2.3 only when the target is crossed. You set the monthly_cap_usd; the on_verified webhook gates your release.

the soak-to-verify contract
import roborama  # reads ROBORAMA_API_KEY from the environment

contract = roborama.threshold(
    policy_stream=roborama.PolicyStream(webhook="https://acme.ai/ckpt"),
    target={"success_rate": 0.99, "ci": 0.95, "task": "bin_pick@v1"},
    iterate_on="soak",               # commodity tier, e.g. nori-a3 pods
    escalate_to="g1-edu-pro@fw2.3",  # verification tier on crossing
    monthly_cap_usd=12_000,
)

contract.on_verified(webhook="https://acme.ai/release-gate")
print(contract.id, contract.status)

Budgets are hard stops

Every run accepts max_budget_usd, metered live: the run stops at the cap and keeps its partial result (with n and CI — partial data is still data). Account budgets work the same way via roborama.budgets.set(monthly_usd=25_000, hard=True). See billing & budgets.

FAQ

What exactly am I billed for?

Two meters, per minute: robot-minutes while your policy occupies an embodiment (from first motor enable to final reset) and environment-minutes while it occupies a scene. Priority multiplies both (burst ×1.5, standard ×1.0, soak ×0.6). Adders apply only where listed on the rate card.

What do 600 humanoid episodes cost?

At standard priority, 600 episodes of g1-edu-pro in kitchen-std@v1.2 quote at 20.0 robot-hours × $148 plus 20.0 environment-hours × $39 = $3,740, with a queue ETA around 6 hours. Get a live number from POST /v1/quote — the quote shows both meters and expires after seven days.

What happens when a run hits max_budget_usd?

The hard stop fires mid-run: the run stops, you get a budget_exceeded error with the run id, and the partial result is kept — n, success rate, and the confidence interval for the episodes that did run.

Do I pay for failed episodes?

Yes — the meters measure occupancy, and failures occupy hardware too. Failed episodes ship the same artifacts (video, MCAP, replay spec) plus a failure cluster label, which is usually the most valuable data in the run. Whether we may train on your failures is your call: data.train_on_failures defaults to false.

What happens when your hardware fails mid-run?

You pay for physics, not for our hardware. Episodes invalidated by a facility fault — a cell_fault: hardware failure, calibration drift, a jammed reset fixture, power or network loss — are never billed, are excluded from your statistics, and are automatically requeued at no charge (or credited if the run's window closes first). Ambiguous cases are adjudicated from the episode's own MCAP within two business days, and defaults go in your favor. The full taxonomy is on Facility incidents & credits.

Is there a way to iterate cheaply before paying verification-tier rates?

Use the embodiment ladder. Iterate on soak-tier pods (nori-a3 at $7/robot-hour, or soak priority at ×0.6 on any robot) and reserve g1-edu-pro at $148/robot-hour for the runs that produce your verification report — or let a threshold contract manage the ladder automatically.

Do suite runs cost the same as ad-hoc runs?

The rbr-manip-core@v3 package (5 tasks × 300 episodes on g1-edu-pro@fw2.3, attestation and verification report included) is a flat $9,500 — priced at a small discount to the metered equivalent, in exchange for being scheduled as one block.

The bill is arithmetic.

Get a quote