Getting Started

Welcome to Xyrom OS

Xyrom OS is the operating system and cloud platform for embodied robot autonomy. This guide gets you from zero to your first robot task in under 15 minutes.

â„šī¸ Xyrom OS requires Python 3.10+ and a supported robot or the Mock Adapter for simulation.

Installation

# Install the Xyrom OS SDK
pip install xyrom-os-sdk

# For mock/simulation (no hardware needed)
pip install xyrom-os-sdk[mock]

# Verify installation
python3 -c "import xyrom_os_sdk; print(xyrom_os_sdk.__version__)"

Quick Start

Create your first task in 3 lines of Python:

from xyrom_os_sdk import XyromClient

# Connect to your Xyrom OS instance
client = XyromClient(api_url="https://api.xyromos.com", api_key="your-key")

# Submit a task
task = client.tasks.create(
    skill_id="navigate_to",
    robot_id="tron1-001",
    params={"destination": "main-hall", "speed": 0.5}
)

print(f"Task created: {task.task_id}")
print(f"Status: {task.state}")

Core Concepts

🤖 Robots

Physical robots managed by Xyrom OS. Each has an adapter, state, and telemetry stream.

⚡ Skills

Typed action contracts. Define preconditions, parameters, and expected outcomes.

📋 Tasks

Instructions to run a skill on a robot. Tracked through full lifecycle with traces.

Next Steps

Architecture

System Architecture

Xyrom OS is organized into five layers: Hardware, Safety Runtime, Agent Runtime, Cloud Control, and Developer Platform.

┌─────────────────────────────────────────────────────┐
│         Developer Platform / SDK / Docs             │
├─────────────────────────────────────────────────────┤
│     Cloud Control Plane / Fleet / Evals / Telemetry │
├─────────────────────────────────────────────────────┤
│  Agent Runtime / Planner / Memory / World Model     │
├─────────────────────────────────────────────────────┤
│  Robot Runtime / Safety / Skills / HAL / State      │
├─────────────────────────────────────────────────────┤
│  OEM Hardware / Sensors / Actuators / Controllers   │
└─────────────────────────────────────────────────────┘

Zone A — Robot Edge (always-on)

Hardware adapter, safety runtime, emergency stop. Runs on robot compute. Real-time safe.

Zone B — Edge Agent

Skill executor, local planner, world model, trace buffer. Operates without cloud connectivity.

Zone C — Cloud

LLM planner, fleet management, telemetry aggregation, operator console. Cloud services.

API Reference

REST API v0

The Xyrom OS REST API provides programmatic access to all platform features. Base URL: https://api.xyromos.com/v0

Loading API endpoints...
Python SDK

Python SDK

The official Python SDK for Xyrom OS. Supports Python 3.10+.

Installation

pip install xyrom-os-sdk

Authentication

from xyrom_os_sdk import XyromClient

client = XyromClient(
    api_url="https://api.xyromos.com",
    api_key="xos_your_api_key_here"
)

Task Management

# Create a task
task = client.tasks.create(
    skill_id="patrol_area",
    robot_id="tron1-001",
    params={"zone": "main-floor", "duration_sec": 300}
)

# Poll for completion
import time
while task.state not in ("completed", "failed"):
    time.sleep(2)
    task = client.tasks.get(task.task_id)
    print(f"  State: {task.state}")

print(f"Final state: {task.state}")

Skill Registration

from xyrom_os_sdk.skills import SkillContract, SkillParameter

# Define a skill
skill = SkillContract(
    skill_id="my_custom_skill",
    version="1.0.0",
    description="My custom robot skill",
    parameters=[
        SkillParameter(name="target", type="string", required=True),
        SkillParameter(name="speed", type="float", default=0.5),
    ],
    preconditions=["robot.battery_pct > 20", "robot.status == 'active'"],
    timeout_sec=120
)

# Register it
client.skills.register(skill)

Telemetry Streaming

for event in client.telemetry.stream("tron1-001"):
    print(f"[{event.timestamp}] {event.metric}: {event.value}")
Adapters

Building OEM Adapters

Adapters (`.aoa` packages) connect robot hardware to Xyrom OS. They implement the Hardware Abstraction Layer (HAL).

Adapter Package Structure

my_robot_adapter/
├── manifest.yaml          # Adapter metadata and capabilities
├── adapter.py             # Main HAL implementation
├── sensors.py             # Sensor bridge
├── actuators.py           # Actuator wrappers
├── safety_hooks.py        # Safety policy hooks
└── tests/
    └── test_adapter.py

manifest.yaml

id: com.example.my-robot
name: My Robot Adapter
version: 1.0.0
platform: my-robot-v2
xyrom_api: ">=0.5.0"
capabilities:
  - navigation
  - manipulation
  - camera
  - lidar
safety_class: B2

adapter.py

from xyrom_os_sdk.hal import BaseAdapter, SensorData, ActuatorCommand

class MyRobotAdapter(BaseAdapter):
    def connect(self, config: dict) -> bool:
        # Initialize hardware connection
        return True

    def get_sensor_data(self) -> SensorData:
        # Read from hardware
        return SensorData(...)

    def send_command(self, cmd: ActuatorCommand) -> bool:
        # Send to hardware
        return True

    def emergency_stop(self) -> bool:
        # Implement E-STOP
        return True
Skills

Skill Contracts

Skills are typed behavioral contracts. They define what a robot can do, under what conditions, and with what parameters.

Skill YAML Contract

skill_id: navigate_to
version: 1.0.0
description: Navigate robot to a named location
category: navigation
author: Xyrom OS Core Team

parameters:
  destination:
    type: string
    required: true
    description: Named location from site map
  speed:
    type: float
    default: 0.5
    min: 0.1
    max: 1.0
    description: Navigation speed (m/s)

preconditions:
  - robot.battery_pct > 15
  - robot.status == "active"
  - site.location_exists(params.destination)

outcomes:
  success:
    - robot.location == params.destination
  failure:
    - code: OBSTACLE_BLOCKED
    - code: LOCATION_NOT_FOUND
    - code: LOW_BATTERY

timeout_sec: 120
safety_class: B1
requires_approval: false

Implementing a Skill

from xyrom_os_sdk.skills import SkillExecutor, SkillContext, SkillResult

class NavigateToSkill(SkillExecutor):
    skill_id = "navigate_to"

    async def execute(self, ctx: SkillContext) -> SkillResult:
        dest = ctx.params["destination"]
        speed = ctx.params.get("speed", 0.5)

        ctx.log(f"Navigating to {dest} at speed {speed}")

        # Execute navigation
        result = await ctx.robot.navigate(
            location=dest,
            speed=speed,
            on_progress=ctx.report_progress
        )

        if result.success:
            return SkillResult.success({"arrived_at": dest})
        else:
            return SkillResult.failure(result.error_code)
Tutorials

Tutorials

Beginner

🚀 Your First Task

Submit your first task to a mock robot and see it through to completion.

Read Tutorial →
Intermediate

🔌 Build an Adapter

Connect a new robot model to Xyrom OS by implementing the HAL adapter interface.

Read Tutorial →
Intermediate

đŸ› ī¸ Write a Custom Skill

Define a typed skill contract and implement the executor class.

Read Tutorial →
Advanced

â˜ī¸ Deploy to Production

Configure your Xyrom OS cloud instance, set up RBAC, and deploy a multi-robot fleet.

Read Tutorial →
Community

Community

đŸ’Ŧ

Discord

Join 2,400+ developers. Get help, share projects, discuss robotics.

Join Discord
🐙

GitHub

Star the repo, file issues, contribute adapters and skills.

View GitHub
đŸ—Ŗī¸

Forum

Long-form discussions, architecture questions, integration help.

Visit Forum