Platform / Deployment
04 · Deployment & Real-Time Inference

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.

Read the guides
One API, three topologies

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.

Best for · real-time 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.

Best for · process isolation
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(...).

Best for · hosted, no local GPU
The control loop

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.

control_loop.py
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])
Production-grade

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.

Get Started

Put a trained policy on your robot.