agi.diy

Documentation / Concepts / Glossary

Every word, once.

The vocabulary the API, the docs and the dashboard all use. One source — web/lib/vocab.ts — also serves it as data at glossary.json, and every term below is the target of the links on the other pages. The explanation of how the pieces fit together is on how it works.

termmeansin the API
held-out episodesRecorded demonstrations kept OUT of training and used only for scoring. Every figure we publish is measured on the same held-out episodes of one dataset, so the numbers compare with each other and say nothing about a scene the dataset does not contain.eval.dataset
artefactOne concrete conversion of a trained checkpoint — the directory a server actually loads. The same training run can produce more than one (the pipeline a runner serves, the conversion a downloader gets), and they can score differently, which is why a figure names the artefact it was measured on.
stock checkpointA third-party checkpoint we did not train, served under its own stock-* id so a lease of ours never silently lands on it. The "vs stock" column compares our checkpoint with the one the same slot used to serve.stock-*
seedThe number that fixes a stochastic sampler so a measurement can be repeated. A diffusion policy without one returns a different chunk — and a different score — every run, so a published figure names its seed or it cannot be checked.eval.gates.ours.seed
spreadHow far a figure moves when something harmless changes — another seed, another run. Two numbers closer together than the spread are not ranked, they are level; our deterministic policies have no spread and the preview model does.across_seed_spread
policyA trained model that maps what the robot sees and feels to what it should do next. agi.diy serves its own three for the SO-101 — an ACT, a SmolVLA and a world foundation model in preview — plus the stock third-party checkpoints under their own ids.
modelA policy family bound to one robot, named family/robot. Canonical ids are ours: agi-act/so101, agi-smolvla/so101, agi-wfm/so101; the first-day ids act/so101, smolvla/so101 are aliases of them and still lease. The id you pass to POST /v1/sessions; the Session comes back with the canonical one.
aliasAn older model id that resolves to a canonical row: act/so101 → agi-act/so101. Leasing an alias never fails; Session.model is the canonical id.aliases
checkpointThe exact trained weights behind a model, pinned by Hub repo and revision. Task-specific: each was trained for one kind of task in one kind of scene.
VLAVision-language-action policy: images, joint state and a task sentence in, actions out. SmolVLA is one. It was fine-tuned for one task, so a task sentence is not general instruction following.
world foundation modelA model that predicts how a scene will evolve. agi-wfm/so101 (post-trained from nvidia/Cosmos3-Edge) is served as the flagship tier in preview, with its held-out numbers beside it; 32 actions at 15 Hz.WFM
observationOne snapshot sent by the client: six joint values, two camera images and, for SmolVLA, the task text.
featureOne named field of an observation, with a fixed shape and dtype, advertised in the lease.observation.state, observation.images.<camera>
camera nameThe short name of an image feature. ACT expects top + wrist; SmolVLA expects front + wrist; each 640×480 RGB.top · front · wrist
actionOne returned time step: six target joint values for one tick of the control loop. The billable unit.
chunkThe sequence of actions one call returns: n rows × 6 joints, float32. The robot plays it back at the model's fps.action chunk
open loopPlaying actions without new observations reaching the policy: what the arm does with the rest of its queue when the link drops (at most one chunk).
starvation graceHow long LeRobot holds the arm on an empty queue before it ends the run: 3 s with agi rollout, 1 s by LeRobot's default.--inference.action_starvation_grace_s
rename mapLeRobot's mapping from your camera names to the model's (observation.images.<yours> → observation.images.<model's>). agi rollout builds it; check the cameras: line it prints.--rename_map
horizonRows per chunk: ACT 100, SmolVLA 50. Fixed at lease time.action_horizon
fpsThe rate the chunk is meant to be executed at: 30 actions per second, so 100 rows ≈ 3.3 s of motion and 50 ≈ 1.7 s. Not a request rate.
callOne observation sent, one chunk returned.
sessionOne lease on one warm policy process: groups calls, carries the bill and the trace.ses_…
leaseWhat POST /v1/sessions does: reserves a ready slot for you until the session ends.
slotOne warm policy process on a runner. A model is Ready when it has a free slot, Busy when all are leased.
runnerA GPU machine that hosts slots and reports them every second. Several run at once; GET /v1/health names them with a role, demo or production, and the Session says which one served you.
deployment nameThe private address of your slot, handed out in the lease and retired when the session ends.d_…
custom checkpointA checkpoint of your own on the Hugging Face Hub, leased by passing it as the model. The hf: prefix marks it as yours; act, smolvla or diffusion, safetensors only, at most 3 GB. Validated before anything is charged, and the commit is pinned.hf:<org>/<repo>[@<revision>]
dynamic deploymentThe slot a custom checkpoint gets: brought up for your session rather than kept warm in the pool, which is why it starts warming and why there is a per-account limit on live ones.
tierWhich capacity a model is served from: default (agi-act/so101, agi-smolvla/so101 — our checkpoints), flagship (agi-wfm/so101, a preview listed with its held-out numbers) or custom (your own hf: checkpoint). The stock third-party checkpoints are their own stock-* rows (tier third-party), leased by name — a lease of ours never lands on them. It describes where the slot comes from, not how good the policy is.tier
tokenBilling unit. 1 token = 1 returned action = $0.0001. Not an LLM text token.
usage creditYour token balance shown in dollars: 200,000 tokens = $20, granted once to new accounts. Not cash, not withdrawable. A price may be written "$0.01 credit equivalent" (accepted, used in docs and dashboard).
normalized unitsLeRobot's default joint scale: arm joints −100…100 over the calibrated range, gripper 0…100. Every hosted checkpoint uses it, whatever the session label says. On a real arm this means LeRobot use_degrees=false (its current default is true).
semanticsThe units label carried in the lease. Two values are live: so101-normalized-v1 on agi-* rows and their leases, the legacy so101-degrees-gripper-percent-v1 on stock-* rows. The data is normalized under either; read units, never branch on this string.so101-degrees-gripper-percent-v1
policy timeHow long the model's forward pass took for one call.trace server_ms.policy
time on the runnerFrom the observation reaching the runner to the chunk leaving it: policy time plus decoding and post-processing. Excludes your network. The trace's rtt_ms is this number.trace rtt_ms
round tripTime from sending an observation to holding the chunk, as your client measures it: time on the runner plus the network both ways. Not recorded in the trace.
traceThe recording of a session: every observation (state, task, camera frames) and every returned chunk, with timing.
playbackViewing a recorded trace. Free; nothing runs.
run inference againFeeds a trace's recorded observations to a policy in a new session. Billed like any session; no robot moves; output may differ.POST /v1/sessions/:id/replay
public relayHow the runner's Zenoh endpoint reaches the public internet. The lease carries zenoh.endpoints, a list in preference order — measured 2026-10-26: our own TLS router first (tls/zenoh.api.agi.diy:7447, public CA, nothing to configure), the bore tunnel second. Walk the list and use the first that connects; entries are added and removed without an SDK release, so never hard-code one.
browser wireThe WebSocket data plane a page uses instead of Zenoh: signed URL from GET /v1/sessions/:id/wire, JPEG observations in, chunks out, billed identically. Open within 120 s, 8 MB a message, an observation at least every 120 s.agi-wire/1
simulationThe browser SO-101 at /play: MuJoCo physics, rendered camera images, real policy calls. Simulated inputs, live policy output.
test callOne billed call with synthetic inputs (black images, synthetic state). Tests the connection and inference, not task success.agi run <model> --probe -n 1

Where you meet these words

Every term above is printed somewhere in the product. This is where to look, so a definition can be checked against the thing itself rather than taken on faith.

The wordWhere it is on screenWhat to compare
token, credit/dashboard — the spend figuresthe account total against GET /v1/usage
call, chunk/dashboard → a session → its traceone act event per call, its rows the chunk
actionthe same trace, inside a chunk50 or 100 rows of 6 numbers, one row per action
normalized unitsthe trace's state and action rowsarm values inside -100…100, gripper 0…100
observation, camerathe trace's obs eventsyour two frames and state[6], as the policy got them
session, end reason/dashboard/sessionsthe state and end_reason of every run
latency, rtta session's own readoutround trip against server_ms.policy
model, checkpoint/modelsthe pinned Hub revision and licence
slot, pool/statusfree slots now, per model
simulation/playthe arm and cameras rendered in your browser

Say this, not that

Today the build refuses 12 phrasings outright; the other 39 are review rules — a row with a context names the one place the word is wrong, because elsewhere it is fine ("no robot moves" is not a billing unit).

not thissay thiswhen it matters
AI agentpolicyalways — kept by review, not yet by the build
brainpolicyalways — kept by review, not yet by the build
buildartefactalways — kept by review, not yet by the build
input packetobservationalways — kept by review, not yet by the build
one jointactionalways — kept by review, not yet by the build
our serverspublic relayalways — kept by review, not yet by the build
re-run for freerun inference againalways — kept by review, not yet by the build
streaming APIbrowser wirealways — kept by review, not yet by the build
trajectorychunkalways — kept by review, not yet by the build
try the robottest callalways — kept by review, not yet by the build
websocket APIbrowser wirealways — kept by review, not yet by the build
autonomousopen loopfor this
balanceusage creditwhen it means alone, without tokens
baselinestock checkpointwhen it means a baseline here is a trivial strategy like repeating the last action
batchchunkfor a chunk
benchmarkheld-out episodeswhen it means it is one dataset, not a benchmark suite
containerdynamic deploymentfor a dynamic deployment
credittokenfor one token
degreesnormalized unitsfor these checkpoints
demosimulationfor /play
demotest callfor a billed test call
error barspreadwhen it means it is a measured range of draws, not a confidence interval
frameobservationfor the whole snapshot
inference runcallfor one call
instancedynamic deploymentfor a dynamic deployment
latencyround tripwhen it stands unqualified
moveactionfor one action
plantierfor a tier
real camerasimulationfor /play's rendered images
replayrun inference againin UI copy, unqualified
requestcallin billing copy
round triptime on the runnerfor trace rtt_ms
stepactionwhen it stands alone
subscriptiontierwhen it means there is none — you pay per action
test setheld-out episodeswhen it means we do not hold a separate test split
uploadcustom checkpointwhen it means nothing is uploaded — we read the Hub
versionartefactwhen it means a revision pins the weights, not the conversion
your modelcustom checkpointfor one of ours
zenoh.api.agi.diypublic relayas the endpoint to connect to — the lease names a tcp/ relay

Retired words

These appeared in earlier versions of the docs or the API. They are listed so a reader who met them elsewhere can find what replaced them.

wassay instead
free tokensusage credit
free moneyusage credit
robot movement per token1 token = 1 returned action
tokens per joint1 token = 1 returned action (six joint values)
steps per secondactions per second
free creditusage credit
ms round tripms on the runner (trace rtt_ms is runner-side; only your client measures a round trip)
round trip as the clienttime on the runner (trace rtt_ms)
Replay inferenceRun inference again
hosted brainrobot policies, served over an API
open-weight VLA policiesACT and SmolVLA policies (ACT is not a VLA)
Round trip is measured by the clienttime on the runner (the loop shows trace rtt_ms; no client round trip is recorded)