Build one auditable robot Cell.
CenterOS gives you one versioned object model across heterogeneous hardware, teleoperation, recording and evaluation. This page describes what the preview packages do today.
Not on PyPI yet · configuration-specific
Overview
One control and evidence contract, not one fake robot abstraction. CenterOS unifies identity, sessions, clocks, recording and evaluation. Vendor-specific kinematics, force modes, tactile layouts and safety states stay inside each device's adapter.
Packages
| Package | Version | Provides |
|---|---|---|
centeros-cli | 0.2.0 | centeros command and the centeros Python SDK |
centeros-mcp | 0.1.0 | centeros-mcp MCP server |
centeros-robotics | 0.1.0 | centeros-robot command and BaseTeleopAgent |
All three need Python 3.10 or newer and are MIT-licensed.
Install
The packages are not on PyPI yet. Preview participants receive them directly and install from the package path.
$ pip install ./centeros-cli
$ pip install ./centeros-mcp # optional: AI agents
$ pip install ./centeros-robotics # optional: robot agentsAuthentication
Sign in once with the CLI. The token is saved to ~/.centeros/config.json and the Python SDK reuses it. Give the MCP server its token through CENTEROS_TOKEN.
$ centeros login # browser sign-in (Google, GitHub or email)
$ centeros login --device # device code, for headless hosts
$ centeros whoami
$ centeros pat --help # personal access tokens for CIEnvironment variables
| Variable | Purpose |
|---|---|
CENTEROS_TOKEN | Token for the MCP server (a login token or a personal access token) |
CENTEROS_API_URL | Override the platform API URL (rarely needed) |
CLI
Run centeros --help for every command group. The common ones:
$ centeros hardware list # hardware catalog
$ centeros hardware specs wuji-hand
$ centeros teleop sessions # recent teleop sessions
$ centeros teleop monitor <id> # live event stream
$ centeros datasets list
$ centeros eval run --help # start an evaluation run
$ centeros safety active # active e-stops
$ centeros safety estop --helpAll command groups
- Identity:
login,logout,whoami,register,pat - Hardware and robots:
hardware,robot,fleet,safety,ota - Sessions:
teleop,sim,slam,mission - Data:
datasets,dataset,share,sharing,cloud-import - Models:
eval,training,models,vla - Platform:
health,stats,actions,skill
MCP server
Add centeros-mcp to any MCP client and pass your token.
{
"mcpServers": {
"centeros": {
"command": "centeros-mcp",
"env": { "CENTEROS_TOKEN": "<your token>" }
}
}
}Tool groups
- Hardware:
list_hardware_catalog,get_hardware_entry - Robots and fleet:
list_robots,get_robot_twin,fleet_overview,list_fleet_alerts - Teleop:
list_teleop_sessions,get_teleop_session,send_robot_command - Safety:
get_safety_profile,list_active_estops,emergency_stop - Simulation, SLAM, missions:
start_rc_sim,list_slam_sessions,list_missions - Data and docs:
browse_datasets,search_wiki - Platform actions:
list_available_actions,centeros_action
Motion gating
Commands are checked against the safety profile for that robot kind, velocity is clamped to profile limits (the agent is told), and commands are refused while an e-stop is active.
Python SDK
The SDK ships inside centeros-cli. It wraps the platform API with one client object.
from centeros import CenterOSClient
client = CenterOSClient() # or CenterOSClient(token="...")
status = client.health.get()
datasets = client.datasets.list(limit=20)
robots = client.fleet.robots()
models = client.models.list()Resources on the client
datasets, training, models, fleet, annotations, stats, health, actions, orgs, sharing, review, feedback and more. API errors raise centeros.APIError; sign-in problems raise centeros.AuthError.
Robot agents
Write an adapter for your own robot by subclassing BaseTeleopAgent. The bundled PiPER, OpenArm and ALOHA agents are interfaces that run with --mock; hardware drivers are not included in the package.
$ centeros-robot list-robots
$ centeros-robot run piper --mock
$ centeros-robot run openarm --mock --recordCell Runtime
On the edge host, a Cell manifest pins every component, and a session gate decides what may move.
Object model
| Record | What it is |
|---|---|
| Asset | One physical device: serial number, model, firmware, driver version |
| Capability manifest | The device's support level, action and observation contract, and safety features |
| Cell manifest | Versioned set of components plus environment, calibration and data-contract versions |
| Session | Mode, local operator, state and command lease for one run |
| Evaluation run | Acceptance criteria and a verdict: pass, fail or inconclusive |
Session modes
| Mode | Purpose |
|---|---|
calibration | Calibrate the Cell |
teleop_capture | Human-operated demonstrations with recording |
shadow | Policy outputs observed, not applied to actuators |
canary_autonomous | Restricted physical validation after a release gate |
autonomous | Defined in the runtime; not offered in the preview |
Session states
created → active → halted or estopped → closed. Commands carry a lease (250 ms by default) and are rejected after it expires.
Support levels
Every device in the runtime catalog carries exactly one level.
| Level | Meaning |
|---|---|
| Catalog | Model is known. No CenterOS driver; no control claim. |
| Observe only | Telemetry may be read, never commanded. |
| Experimental control | An adapter exists behind the local session gate. Not production-validated. |
| Certified control | Defined in the runtime. No device holds it today. |
Safety boundary
Control access is ours. Functional-safety certification is not.
| CenterOS owns | Your native safety layer owns |
|---|---|
| Session orchestration and authorization | Hardware emergency stop |
| Adapter contracts and command leases | Safety PLC and certified interlocks |
| Recording, provenance and evaluation | Real-time torque and motion protection |
| Software e-stop requests | Site-specific risk assessment |