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 episodesdrives 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.

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