Deploy in one line and close the loop.
One Policy abstraction, three interchangeable backends. Feed a SynchronizedPoint in, get an action chunk out, the same structure you collected with.
Run inference wherever the loop needs it.
The same Policy contract, predict(), set_checkpoint(), disconnect(), across all three. The local server code path is exactly what the managed cloud VM runs, so local and cloud inference are identical.
nc.policy(...)Direct (in-process)
The model loads in your Python process, no server, no network. The explicitly lowest-latency path for real-time on-robot control.
nc.policy_local_server(...)Local server
A managed local FastAPI subprocess with health-gated startup and clean signal-based lifecycle. Launch via neuracore launch-server.
nc.policy_remote_server(name)Cloud endpoint
A managed GPU VM the backend proxies predict calls to, so clients never touch the VM. Deploy with nc.deploy_model(...).
Predict a chunk, replay it, repeat.
A policy returns a horizon of future actions per call, replayed step-by-step to amortize inference across many control steps. predict() polls with retry until enough synchronized data has accumulated rather than failing immediately.
set_checkpoint(epoch=-1) hot-swaps to the latest weights without a restart.
policy = nc.policy(train_run_name="cube-handover-run")
for step in range(episode_len):
nc.log_joint_positions(positions=obs.qpos)
nc.log_rgb("wrist_cam", obs.rgb)
if step % horizon == 0: # action chunking
pred = policy.predict(timeout=5)
chunk = to_action(
pred[DataType.JOINT_TARGET_POSITIONS])
obs = env.step(chunk[step % horizon])Real-time, closed-loop, and safe by default.
Fuse live telemetry from multiple nodes, drive robots at their own control rate, and let managed endpoints tear themselves down before they cost you.
Live observation fusion over WebRTC
Inference input can be fused from live robot telemetry streamed from multiple remote nodes, cameras on one machine, arms on another, gated on all expected nodes being connected.
Multi-rate sensor ingestion
Sensors logged at different rates (joints @ 40 Hz, cameras @ 10 Hz) feed a single policy running its own control-rate loop; insufficient-data steps are skipped gracefully.
Managed endpoints with cost safety
TTL auto-expiry, VM shutdown on exit, a periodic manager that tears down non-running endpoints, per-hour metering, and live /ping health checks.
ROS 2 & simulator integrations
A reference ROS 2 control node publishes joint states + images and runs policy.predict() in a control timer; MuJoCo/VX300s and BigYM examples included.