OLO Platform ============ OLO Platform refers to the web application where you sign in, connect to robots, and access shared organization data (maps, navigation configs, cloud rosbags). In SDK v2, ``client.platform`` reads that data. Robot commands use the Appliance on a separate channel. The sections below explain both paths and when you need Portal authentication. Two channels ------------ SDK v2 uses two channels: * **Robot channel** — controls the robot through the Appliance. It powers ``client.core``, ``client.spatial``, ``client.kinematics``, ``client.locomotion``, ``client.navigation``, ``client.archive``, ``client.ai``, and ``client.robot(...)``. You do not need Portal authentication for this channel. * **Platform channel** — reads organization catalogs from the Portal. It powers ``client.platform.*``. You must authenticate with a personal access token. Archive artifacts use both channels. ``client.platform.archive.listBags()`` lists cloud catalog entries. ``client.archive`` controls local recording and playback on the Appliance (images, videos, and rosbags). .. important:: The Appliance listener uses ``127.0.0.1:50151`` by default. Do not assume you can reach it from another machine. Do not expose it to an untrusted network without a security boundary. Platform authentication ----------------------- Create a personal access token in the Portal. Go to **Settings → Developer** (``/developer``). The token is for your active organization. For scripts that run outside the Appliance, set these values: * ``OLO_SDK_PLATFORM_URL`` — Portal address (for example ``https://app.example.com``). * ``OLO_SDK_PLATFORM_TOKEN`` — your ``olo_pat_…`` token. * ``OLO_SDK_ROBOT_ID`` — robot UUID for navigation deployment calls. You can also read it as ``client.platform.robot_id`` (``client.platform.robotId`` in TypeScript). If platform settings are missing, ``client.platform`` raises ``OloPlatformNotConfigured``. For namespace rules on multi-robot appliances, see :doc:`namespaces`. How scripts run --------------- When you run code in the SDK Playground or through the Appliance, the Appliance sets platform credentials for you. You can use ``Client()`` in Python or ``connect()`` in TypeScript without manual platform setup. When you run a script on your own machine, you must set the platform environment variables above.