{ "title": "Viam Documentation", "path": "https://docs.viam.com/", "description": "Viam integrates with hardware and software on any device. Use AI, machine learning, and more to make any machine smarter — for one machine to thousands.", "children": [{ "title": "What is Viam?", "path": "https://docs.viam.com/what-is-viam/", "description": "Viam is a software platform for building, deploying, and managing robotics applications." },{ "title": "Try", "redirect": "https://docs.viam.com/try/overview/", "description": "Hands-on guided tutorials to experience Viam end-to-end.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/try/overview/", "description": "Pick a hands-on way to try Viam. Most pathways need no hardware to get started." },{ "title": "Quality Inspection", "path": "https://docs.viam.com/try/quality-inspection/", "description": "Build a complete quality inspection system with Viam, from camera setup to customer-facing product.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/try/quality-inspection/overview/", "description": "Build a complete quality inspection system with Viam — from camera setup to customer-facing product." },{ "title": "Gazebo Simulation Setup", "path": "https://docs.viam.com/try/quality-inspection/gazebo-setup/", "description": "Set up the Gazebo simulation environment for the inspection tutorial." },{ "title": "Part 1: Vision Pipeline", "path": "https://docs.viam.com/try/quality-inspection/part-1/", "description": "Set up a camera, ML model, and vision service to detect defects." },{ "title": "Part 2: Data Capture", "path": "https://docs.viam.com/try/quality-inspection/part-2/", "description": "Configure automatic image capture and cloud sync for your inspection system." },{ "title": "Part 3: Control Logic", "path": "https://docs.viam.com/try/quality-inspection/part-3/", "description": "Write inspection logic that detects defective cans." },{ "title": "Part 4: Deploy a Module", "path": "https://docs.viam.com/try/quality-inspection/part-4/", "description": "Deploy your inspector module and configure queryable detection data capture." },{ "title": "Part 5: Productize", "path": "https://docs.viam.com/try/quality-inspection/part-5/", "description": "Build a monitoring dashboard for your inspection system using Viam's Teleop interface." }] },{ "title": "Viam Rover", "path": "https://docs.viam.com/try/viam-rover/", "description": "Rent a Viam Rover in our robotics lab or set up your own, and use it to learn Viam.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/try/viam-rover/overview/", "description": "Rent a Viam Rover in our robotics lab or set up your own, and use it to learn Viam." },{ "title": "Rent a Viam Rover", "path": "https://docs.viam.com/try/viam-rover/rent-a-rover/", "description": "Try Viam by reserving a Viam Rover in our robotics lab — no hardware required." },{ "title": "Unbox and set up your Viam Rover 2", "path": "https://docs.viam.com/try/viam-rover/setup/", "description": "A list of the contents of the Viam Rover 2 kit, instructions for wiring your rover, and links for additional hardware." },{ "title": "Set up your Rover 2 with a Jetson", "path": "https://docs.viam.com/try/viam-rover/jetson-setup/", "description": "Instructions for setting up a Viam Rover 2 with a Jetson Nano or Jetson Orin Nano." },{ "title": "Configure your Viam Rover", "path": "https://docs.viam.com/try/viam-rover/fragments/", "description": "Configure your rover by adding the Viam-provided configuration fragment to your rover." },{ "title": "Drive your rover", "path": "https://docs.viam.com/try/viam-rover/drive-rover/", "description": "Use a Viam SDK to program a rover to move in a square." },{ "title": "Unbox and set up your Viam Rover 1", "path": "https://docs.viam.com/try/viam-rover/rover-1-setup/", "description": "A list of the contents of the Viam Rover 1 kit, instructions for wiring your rover, and links for additional hardware." }] }] },{ "title": "Set up a machine", "redirect": "https://docs.viam.com/set-up-a-machine/first-machine/", "description": "Create a machine in the Viam app and install Viam on your compute machine.", "children": [{ "title": "Set up your first machine", "path": "https://docs.viam.com/set-up-a-machine/first-machine/", "description": "Create a machine in the Viam app and install Viam on your compute device." },{ "title": "Set up machines with the CLI", "path": "https://docs.viam.com/set-up-a-machine/with-cli/", "description": "Create and connect machines from the command line." },{ "title": "viam-agent and viam-server", "path": "https://docs.viam.com/set-up-a-machine/viam-agent-and-server/", "description": "The two programs that run on every Viam machine: what each does, how they relate, and how they run modules." }] },{ "title": "Configure hardware", "redirect": "https://docs.viam.com/hardware/configure-hardware/", "description": "Understand how Viam represents hardware, add components to your machine, and configure them.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/hardware/configure-hardware/", "description": "Understand how Viam represents hardware, add components to your machine, and configure them." },{ "title": "Machine configuration", "path": "https://docs.viam.com/hardware/machine-configuration/", "description": "Understand the JSON configuration that defines your machine's components, and how to edit it." },{ "title": "AI assistant", "path": "https://docs.viam.com/hardware/ai-assistant/", "description": "Configure components, services, and modules by describing the change to the AI assistant, then review and save each staged edit." },{ "title": "Fragments", "path": "https://docs.viam.com/hardware/fragments/", "description": "Capture working hardware configurations and keep them consistent across your fleet." },{ "title": "Multi-machine setups", "redirect": "https://docs.viam.com/hardware/multi-machine/overview/", "description": "Connect multiple computers so one machine can access another's components and services.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/hardware/multi-machine/overview/", "description": "Connect multiple computers so one machine can access another's components and services." },{ "title": "Add a sub-part", "path": "https://docs.viam.com/hardware/multi-machine/add-a-sub-part/", "description": "Attach a second computer to your existing machine as a sub-part so the main part can access its components." },{ "title": "Add a remote part", "path": "https://docs.viam.com/hardware/multi-machine/add-a-remote-part/", "description": "Connect to another machine's resources by adding it as a remote part with an address and API key." },{ "title": "Frames across machines", "path": "https://docs.viam.com/hardware/multi-machine/cross-machine-frames/", "description": "Attach a remote part's components into your machine's frame tree with the correct spatial offset." }] },{ "title": "Add a component", "path": "https://docs.viam.com/hardware/common-components/", "description": "Every component type Viam supports, with step-by-step guides for adding each one to your machine.", "children": [{ "title": "Arm", "path": "https://docs.viam.com/hardware/common-components/add-an-arm/", "description": "Add and configure a robotic arm, verify joint motion, and test end-effector positioning." },{ "title": "Base", "path": "https://docs.viam.com/hardware/common-components/add-a-base/", "description": "Add and configure a base to drive a mobile robot with movement commands." },{ "title": "Board", "path": "https://docs.viam.com/hardware/common-components/add-a-board/", "description": "Add and configure a board component to expose GPIO pins, analog readers, and digital interrupts." },{ "title": "Button", "path": "https://docs.viam.com/hardware/common-components/add-a-button/", "description": "Add and configure a button component to detect presses from a physical button." },{ "title": "Camera", "path": "https://docs.viam.com/hardware/common-components/add-a-camera/", "description": "Add and configure a camera component, verify the feed, and capture an image programmatically." },{ "title": "Encoder", "path": "https://docs.viam.com/hardware/common-components/add-an-encoder/", "description": "Add and configure an encoder to track motor position and direction." },{ "title": "Gantry", "path": "https://docs.viam.com/hardware/common-components/add-a-gantry/", "description": "Add and configure a gantry component for precise linear positioning along one or more axes." },{ "title": "Generic", "path": "https://docs.viam.com/hardware/common-components/add-a-generic/", "description": "Add and configure a generic component for hardware that doesn't fit any other component type." },{ "title": "Gripper", "path": "https://docs.viam.com/hardware/common-components/add-a-gripper/", "description": "Add and configure a gripper component to open, close, and grasp objects." },{ "title": "Input controller", "path": "https://docs.viam.com/hardware/common-components/add-an-input-controller/", "description": "Add and configure a gamepad, joystick, or other input device for manual machine control." },{ "title": "Motor", "path": "https://docs.viam.com/hardware/common-components/add-a-motor/", "description": "Add and configure a motor component and test it from the Viam app." },{ "title": "Movement sensor", "path": "https://docs.viam.com/hardware/common-components/add-a-movement-sensor/", "description": "Add and configure a movement sensor like a GPS, IMU, or odometry source." },{ "title": "Power sensor", "path": "https://docs.viam.com/hardware/common-components/add-a-power-sensor/", "description": "Add and configure a power sensor to monitor voltage, current, and power consumption." },{ "title": "Sensor", "path": "https://docs.viam.com/hardware/common-components/add-a-sensor/", "description": "Add and configure a sensor to read environmental data like temperature, humidity, or distance." },{ "title": "Servo", "path": "https://docs.viam.com/hardware/common-components/add-a-servo/", "description": "Add and configure a hobby servo controlled by a GPIO PWM pin." },{ "title": "Switch", "path": "https://docs.viam.com/hardware/common-components/add-a-switch/", "description": "Add and configure a switch component to read and set the position of a multi-position switch." }] }] },{ "title": "Viam CLI", "redirect": "https://docs.viam.com/cli/overview/", "description": "The Viam CLI gives you command-line access to every operation in the Viam platform, from machine configuration to data export to fleet management.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/cli/overview/", "description": "The Viam CLI gives you command-line access to every operation in the Viam platform, from machine configuration to data export to fleet management." },{ "title": "Configure machines", "path": "https://docs.viam.com/cli/configure-machines/", "description": "Create machines, add components and services, and manage fragments from the command line." },{ "title": "Drive a machine", "path": "https://docs.viam.com/cli/drive-a-machine/", "description": "Discover, observe, and operate any Viam machine with the CLI alone: list its resources, read its cameras and sensors, plan motion, and stop it, with one key and no SDK code." },{ "title": "Manage data", "path": "https://docs.viam.com/cli/manage-data/", "description": "Export, tag, delete, and query your machine data from the command line." },{ "title": "Datasets and training", "path": "https://docs.viam.com/cli/datasets-and-training/", "description": "Create datasets, manage training data, and submit ML training jobs from the command line." },{ "title": "Data pipelines", "path": "https://docs.viam.com/cli/data-pipelines/", "description": "Create and manage scheduled data pipelines from the command line." },{ "title": "Build and deploy modules", "path": "https://docs.viam.com/cli/build-and-deploy-modules/", "description": "Scaffold, build, upload, and version modules from the command line." },{ "title": "Manage your fleet", "path": "https://docs.viam.com/cli/manage-your-fleet/", "description": "Monitor machines, view logs, access remote shells, and deploy software from the command line." },{ "title": "Administer your organization", "path": "https://docs.viam.com/cli/administer-your-organization/", "description": "Manage API keys, OAuth, billing, and organization settings from the command line." },{ "title": "Automate with scripts", "path": "https://docs.viam.com/cli/automate-with-scripts/", "description": "Use the Viam CLI in shell scripts, CI/CD pipelines, and provisioning workflows." },{ "title": "CLI reference", "path": "https://docs.viam.com/cli/reference/", "description": "Complete command reference for the Viam CLI: every command, subcommand, flag, and alias." }] },{ "title": "Manage data", "redirect": "https://docs.viam.com/data/overview/", "description": "Record sensor data on your robot, sync it to the cloud, and query, export, or use it for ML training.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/data/overview/", "description": "Record sensor data on your robot, sync it to the cloud, and query, export, or use it for ML training." },{ "title": "Tutorial", "path": "https://docs.viam.com/data/data-management-tutorial/", "description": "Capture sensor data, sync it to the cloud, view it in the Data tab, and query it from code." },{ "title": "Capture and sync", "redirect": "https://docs.viam.com/data/capture-sync/capture-and-sync-data/", "description": "Capture data from your machines and sync it to the cloud.", "children": [{ "title": "Start data capture", "path": "https://docs.viam.com/data/capture-sync/capture-and-sync-data/", "description": "Capture data from any resource and sync it to the cloud." },{ "title": "Stop data capture", "path": "https://docs.viam.com/data/capture-sync/stop-data-capture/", "description": "Stop capturing data for specific resources, all resources, or disable cloud sync." },{ "title": "Conditional sync", "path": "https://docs.viam.com/data/capture-sync/conditional-sync/", "description": "Control when captured data syncs to the cloud using a sensor that decides whether to sync." },{ "title": "Multi-part capture", "path": "https://docs.viam.com/data/capture-sync/remote-parts-capture/", "description": "Capture and sync data from components on sub-parts and remote parts of a multi-part machine." },{ "title": "Upload external data", "path": "https://docs.viam.com/data/capture-sync/upload-other-data/", "description": "Upload data to Viam from your local computer or mobile device using the data client API or the Viam mobile app." }] },{ "title": "Captured data schema", "path": "https://docs.viam.com/data/schema/", "description": "Structure of captured tabular data: document format, column reference, the data column, and common per-component data structures." },{ "title": "Query in the app", "path": "https://docs.viam.com/data/query-data/", "description": "Write SQL and MQL queries against captured data in the Viam app or programmatically." },{ "title": "Query from code", "path": "https://docs.viam.com/data/query-data-from-code/", "description": "Query captured data programmatically using the Viam Python or Go SDK." },{ "title": "Tag data", "path": "https://docs.viam.com/data/tag-data/", "description": "Apply tags to captured binary data so you can filter it, build datasets, or scope a delete operation." },{ "title": "Delete data", "path": "https://docs.viam.com/data/delete-data/", "description": "Delete captured tabular and binary data through the Viam app, the CLI, or the SDK." },{ "title": "Data pipelines", "redirect": "https://docs.viam.com/data/pipelines/overview/", "description": "Scheduled data transformations that automatically aggregate and summarize captured data.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/data/pipelines/overview/", "description": "How data pipelines work: scheduled MQL aggregations that transform raw captured data into precomputed summaries." },{ "title": "Create a pipeline", "path": "https://docs.viam.com/data/pipelines/create-a-pipeline/", "description": "Create a scheduled MQL pipeline that automatically aggregates captured data." },{ "title": "Query results", "path": "https://docs.viam.com/data/pipelines/query-results/", "description": "Query the output of a data pipeline from the Viam app, Python, Go, or TypeScript." },{ "title": "Manage pipelines", "path": "https://docs.viam.com/data/pipelines/manage-pipelines/", "description": "List, monitor, enable, disable, rename, and delete data pipelines." },{ "title": "Examples and tips", "path": "https://docs.viam.com/data/pipelines/examples/", "description": "MQL patterns for common robotics use cases and tips for writing effective pipeline queries." },{ "title": "Pipeline reference", "path": "https://docs.viam.com/data/pipelines/reference/", "description": "Configuration fields, run statuses, cron schedule syntax, data source types, and execution limits." }] },{ "title": "Filter at the edge", "path": "https://docs.viam.com/data/filter-at-the-edge/", "description": "Reduce data volume, bandwidth, and storage costs by filtering data on the machine before syncing to the cloud." },{ "title": "Hot data store", "path": "https://docs.viam.com/data/hot-data-store/", "description": "Store a rolling window of recent data for fast queries while continuing to write all data to blob storage." },{ "title": "Export data", "path": "https://docs.viam.com/data/export-data/", "description": "Download data from Viam using the data client API or the CLI." },{ "title": "Sync to your database", "path": "https://docs.viam.com/data/sync-data-to-your-database/", "description": "Use Viam as an ingestion layer and sync captured data to your own MongoDB database." },{ "title": "Visualize data", "path": "https://docs.viam.com/data/visualize-data/", "description": "Build dashboards with Teleop, Grafana, or programmatic charts to visualize captured data." },{ "title": "Trigger on events", "path": "https://docs.viam.com/data/trigger-on-data/", "description": "Use triggers to send email, webhook, or push notifications when data from the machine is synced." },{ "title": "Data reference", "path": "https://docs.viam.com/data/reference/", "description": "Data schema, query operators, configuration fields, supported resources, and storage behavior." }] },{ "title": "Train ML models", "redirect": "https://docs.viam.com/train/overview/", "description": "Create datasets and train ML models from captured data.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/train/overview/", "description": "Create datasets from captured images and train ML models for classification or object detection." },{ "title": "Create a dataset", "path": "https://docs.viam.com/train/create-a-dataset/", "description": "Create a dataset of images for training an ML model." },{ "title": "Annotate images", "path": "https://docs.viam.com/train/annotate-images/", "description": "Label images with tags or bounding boxes for training an ML model." },{ "title": "Automate annotation", "path": "https://docs.viam.com/train/automate-annotation/", "description": "Use ML models to auto-label images and programmatically build annotated datasets." },{ "title": "Train a model", "path": "https://docs.viam.com/train/train-a-model/", "description": "Train a classification or object detection model from a labeled dataset." },{ "title": "Deploy a model", "path": "https://docs.viam.com/train/deploy-a-model/", "description": "Add an ML model service and vision service to run a trained model on your machine." },{ "title": "Custom training scripts", "path": "https://docs.viam.com/train/custom-training-scripts/", "description": "Use or write custom training scripts to train ML models on the Viam platform with any framework or logic." }] },{ "title": "Computer vision", "redirect": "https://docs.viam.com/vision/overview/", "description": "Run detection, classification, and 3D segmentation on camera feeds with Viam's vision service. Use ML models, heuristic color detection, or point cloud segmenters, and close the loop with retraining.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/vision/overview/", "description": "Run detection, classification, and 3D segmentation on camera feeds with Viam's vision service. Use ML models, heuristic color detection, or point cloud segmenters, and close the loop with retraining." },{ "title": "How a vision service works", "path": "https://docs.viam.com/vision/how-it-works/", "description": "Why Viam splits ML inference into two services, what each one does, and how they compose to produce detections, classifications, and point cloud objects." },{ "title": "Configure a vision pipeline", "path": "https://docs.viam.com/vision/configure/", "description": "Wire up an ML model service and a vision service so your machine's camera can produce detections, classifications, or 3D point cloud objects." },{ "title": "Classify images", "path": "https://docs.viam.com/vision/classify/", "description": "Use a vision service to classify images by label and confidence, make decisions based on classification, and monitor scenes continuously." },{ "title": "Object detection", "path": "https://docs.viam.com/vision/object-detection/", "description": "Get 2D bounding-box detections from a camera feed using ML or color heuristics, track objects across frames, and act on or alert on results.", "children": [{ "title": "Detect objects", "path": "https://docs.viam.com/vision/object-detection/detect/", "description": "Retrieve 2D bounding-box detections from a vision service, filter by confidence and class, and run detections in a loop." },{ "title": "Detect by color", "path": "https://docs.viam.com/vision/object-detection/detect-by-color/", "description": "Configure the color_detector vision service to find regions of a specific hue. No ML model, no training data, runs anywhere." },{ "title": "Tune detection quality", "path": "https://docs.viam.com/vision/object-detection/tune/", "description": "Match a detection quality symptom to the mlmodel vision service attribute that fixes it. Covers bounding box order, input normalization, per-label thresholds, and tensor remapping." },{ "title": "Track objects", "path": "https://docs.viam.com/vision/object-detection/track/", "description": "Track detected objects across consecutive video frames with persistent IDs using the object-tracker module." },{ "title": "Act on detections", "path": "https://docs.viam.com/vision/object-detection/act-on-detections/", "description": "Build a module that uses vision service results to control machine behavior." },{ "title": "Alert on detections", "path": "https://docs.viam.com/vision/object-detection/alert-on-detections/", "description": "Send email, webhook, or push notification alerts when your vision service detects specific objects or classifications." }] },{ "title": "3D vision", "path": "https://docs.viam.com/vision/3d-vision/", "description": "Project 2D detections into 3D point cloud objects, and read depth data from a depth camera to measure distance to detected objects.", "children": [{ "title": "Segment 3D objects", "path": "https://docs.viam.com/vision/3d-vision/segment-3d/", "description": "Use the vision service's GetObjectPointClouds method to find and label objects in 3D space, combining a 2D detector with a depth camera's point cloud." },{ "title": "Measure depth", "path": "https://docs.viam.com/vision/3d-vision/measure-depth/", "description": "Retrieve point clouds and depth images from a depth camera, read depth at specific pixels, and measure distance to detected objects." }] },{ "title": "Deploy and maintain models", "path": "https://docs.viam.com/vision/deploy-and-maintain/", "description": "Deploy a pre-trained or custom ML model to a machine, retrain when accuracy drops, roll out new versions to a fleet, and run batch inference against stored images.", "children": [{ "title": "What's in the registry", "path": "https://docs.viam.com/vision/deploy-and-maintain/available-models/", "description": "Three kinds of registry entries feed a vision pipeline: ML model service implementations, vision service models, and public ML models. How to pick among them." },{ "title": "Deploy a model from the registry", "path": "https://docs.viam.com/vision/deploy-and-maintain/deploy-from-registry/", "description": "Pick a pre-trained ML model from the Viam registry, deploy it to your machine, and wire it through an ML model service so a vision service can use it." },{ "title": "Deploy a custom model", "path": "https://docs.viam.com/vision/deploy-and-maintain/deploy-custom-model/", "description": "Deploy a model you trained outside Viam (or trained yourself on Viam data) through an ML model service and use it with the vision service." },{ "title": "Retrain a model", "path": "https://docs.viam.com/vision/deploy-and-maintain/retrain/", "description": "Close the loop when a vision model's accuracy drops in production: capture the failing images, label them, retrain, and redeploy a new model version to one or many machines." },{ "title": "Roll out to a fleet", "path": "https://docs.viam.com/vision/deploy-and-maintain/roll-out-to-fleet/", "description": "Update a vision model across many machines at once using fragments and model version pinning. Short guide with links to the full fleet and deployment docs." },{ "title": "Run batch inference", "path": "https://docs.viam.com/vision/deploy-and-maintain/batch-inference/", "description": "Use the viam infer CLI command to run a deployed ML model against images already captured to the Viam Cloud. Useful for labeling assistance, dataset validation, and running large or GPU-only models." }] }] },{ "title": "Build and deploy modules", "redirect": "https://docs.viam.com/build-modules/overview/", "description": "Understand the two kinds of modules, then write, test, and deploy your own.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/build-modules/overview/", "description": "Understand the two kinds of modules and how to extend your machine with custom hardware drivers and application logic." },{ "title": "Check the registry first", "path": "https://docs.viam.com/build-modules/use-registry-modules/", "description": "Before writing a module, check whether one already exists. The registry has more than hardware drivers." },{ "title": "Anatomy of a module", "path": "https://docs.viam.com/build-modules/module-anatomy/", "description": "Understand the directory structure and key files that make up a Viam module." },{ "title": "Write an inline module", "path": "https://docs.viam.com/build-modules/write-an-inline-module/", "description": "Write and deploy a custom module directly in the browser using Viam's inline module editor." },{ "title": "Write a driver module", "path": "https://docs.viam.com/build-modules/write-a-driver-module/", "description": "Build a module that implements a resource API and runs as a separate process." },{ "title": "Write a logic module", "path": "https://docs.viam.com/build-modules/write-a-logic-module/", "description": "Build a module that monitors sensors, coordinates components, or runs automation logic." },{ "title": "Deploy a module", "path": "https://docs.viam.com/build-modules/deploy-a-module/", "description": "Pick a deployment path for your module: hot-reload onto one machine, or release a versioned package through the registry." },{ "title": "Update and manage modules", "path": "https://docs.viam.com/build-modules/manage-modules/", "description": "Update, deprecate, or delete your existing modules, or change their privacy settings." },{ "title": "Use platform APIs", "path": "https://docs.viam.com/build-modules/platform-apis/", "description": "Write your validate function and constructor to handle dependencies in your custom modular resource." },{ "title": "Module dependencies", "path": "https://docs.viam.com/build-modules/dependencies/", "description": "From within a modular resource, you can access other machine resources using dependencies." },{ "title": "Advanced patterns", "path": "https://docs.viam.com/build-modules/advanced-patterns/", "description": "Define new resource APIs, deploy custom components as remote parts, and package modules with Docker." },{ "title": "Module reference", "path": "https://docs.viam.com/build-modules/module-reference/", "description": "Reference for module developers: lifecycle, interfaces, meta.json schema, CLI commands, environment variables, and registry rules." }] },{ "title": "Build apps", "redirect": "https://docs.viam.com/build-apps/overview/", "description": "Build client apps that talk to your Viam machines and the Viam cloud.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/build-apps/overview/", "description": "Build software that uses a Viam SDK to talk to your machines and the Viam cloud, from web dashboards to long-running backend services." },{ "title": "Use Viam from an AI agent", "path": "https://docs.viam.com/build-apps/use-viam-from-an-agent/", "description": "What an AI agent needs to know to discover, observe, and operate a Viam machine safely: the model, the ways in, and the rules that keep a robot safe when the agent is driving." },{ "title": "Concepts", "redirect": "https://docs.viam.com/build-apps/concepts/how-apps-connect/", "description": "Mental models for building Viam client apps: how connections work and how authentication works.", "children": [{ "title": "Connection model", "path": "https://docs.viam.com/build-apps/concepts/how-apps-connect/", "description": "The transport paths the SDK uses, the session safety mechanism, and what the SDK reconnects automatically." },{ "title": "Authentication", "path": "https://docs.viam.com/build-apps/concepts/authentication/", "description": "The credential types a Viam client app uses and when to use each. Covers API keys, access tokens, and hosted-app credential injection." }] },{ "title": "App scaffolding", "redirect": "https://docs.viam.com/build-apps/setup/overview/", "description": "Scaffold a Viam app project in any supported language: create a project, install the SDK, configure credentials, and verify the connection.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/build-apps/setup/overview/", "description": "The pattern every Viam app project follows: create a project, install the SDK, configure credentials, and verify the connection." },{ "title": "TypeScript setup", "path": "https://docs.viam.com/build-apps/setup/typescript/", "description": "Set up a project for building a Viam web app with TypeScript: a custom dashboard, an operator interface, or any other browser-based app that talks to a Viam machine." },{ "title": "Node.js setup", "path": "https://docs.viam.com/build-apps/setup/node/", "description": "Set up a project for running Viam SDK code from a Node.js process: a backend service, a CLI tool, or another Node app that talks to a Viam machine." },{ "title": "Flutter setup", "path": "https://docs.viam.com/build-apps/setup/flutter/", "description": "Set up a project for building a Viam app that runs across iOS, Android, and desktop platforms from a single codebase." },{ "title": "React Native setup", "path": "https://docs.viam.com/build-apps/setup/react-native/", "description": "Set up a project for building a Viam mobile app using React Native specifically. For new cross-platform apps, prefer Flutter." },{ "title": "Python setup", "path": "https://docs.viam.com/build-apps/setup/python/", "description": "Set up a project for writing a Viam app in Python: a control script, a backend service, a data pipeline, or any other Python program that talks to a Viam machine." },{ "title": "Go setup", "path": "https://docs.viam.com/build-apps/setup/go/", "description": "Set up a project for writing a Viam app in Go: a backend service, a fleet orchestrator, a CLI tool, or any other Go program that talks to a Viam machine." },{ "title": "C++ setup", "path": "https://docs.viam.com/build-apps/setup/cpp/", "description": "Set up a project for writing a Viam app in C++: an embedded application, a high-performance service, or any other C++ program that talks to a Viam machine." }] },{ "title": "Common tasks", "redirect": "https://docs.viam.com/build-apps/tasks/connect-to-machine/", "description": "Connect to machines, stream video, query data, handle disconnections, and test locally.", "children": [{ "title": "Connect to a machine", "path": "https://docs.viam.com/build-apps/tasks/connect-to-machine/", "description": "Open a connection to a single Viam machine from your app, structure the connection code correctly, and close the connection when your app is done with it." },{ "title": "Connect to the Viam cloud", "path": "https://docs.viam.com/build-apps/tasks/connect-to-cloud/", "description": "Open a connection to the Viam cloud to access the fleet, data, ML training, billing, and provisioning APIs, and to enumerate and connect to multiple machines." },{ "title": "Handle disconnection and reconnection", "path": "https://docs.viam.com/build-apps/tasks/handle-connection-state/", "description": "Show a connection status indicator, react to reconnection, and rebuild your app's UI state after the SDK reconnects to a machine." },{ "title": "Control components", "path": "https://docs.viam.com/build-apps/tasks/control-components/", "description": "Read from sensors and control motors, arms, and other actuators from your app using the SDK component clients." },{ "title": "Stream video", "path": "https://docs.viam.com/build-apps/tasks/stream-video/", "description": "Display live camera feeds in a client app. Covers single-camera and multi-camera streaming, resolution tradeoffs, and bandwidth considerations." },{ "title": "Query captured data", "path": "https://docs.viam.com/build-apps/tasks/query-data/", "description": "Query sensor and binary data from a client app using SQL and MQL through DataClient." },{ "title": "Test against a local machine", "path": "https://docs.viam.com/build-apps/tasks/test-locally/", "description": "Develop a Viam client app against a real machine without deploying. Covers direct local-network connections and the viam module local-app-testing CLI." }] },{ "title": "App tutorials", "redirect": "https://docs.viam.com/build-apps/app-tutorials/overview/", "description": "Guided projects that walk through building a Viam app from start to finish.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/build-apps/app-tutorials/overview/", "description": "Guided end-to-end projects that build a working Viam app you can run. Pick by UI shape, machine scope, and language." },{ "title": "Tutorial: single-machine dashboard", "path": "https://docs.viam.com/build-apps/app-tutorials/tutorial-dashboard/", "description": "Build a TypeScript web dashboard for a single Viam machine. Displays a camera feed, a live sensor reading, and a motor control button, with a connection status indicator." },{ "title": "Tutorial: Flutter app with widgets", "path": "https://docs.viam.com/build-apps/app-tutorials/tutorial-flutter-app/", "description": "Build a cross-platform Flutter app for a single Viam machine. Uses prebuilt widgets for the camera feed, sensor display, and motor control." },{ "title": "Tutorial: Python monitoring service", "path": "https://docs.viam.com/build-apps/app-tutorials/tutorial-monitoring-service/", "description": "Build a Python service that connects to a Viam machine, monitors a sensor, controls a motor based on sensor readings, and shuts down cleanly." },{ "title": "Tutorial: multi-machine fleet dashboard", "path": "https://docs.viam.com/build-apps/app-tutorials/tutorial-fleet/", "description": "Build a TypeScript web dashboard that connects to the Viam cloud, enumerates machines across an organization, and displays aggregated sensor data from a fleet." }] },{ "title": "Viam hosting", "redirect": "https://docs.viam.com/build-apps/hosting/overview/", "description": "Deploy and host a web app on Viam Applications with built-in authentication and credential injection.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/build-apps/hosting/overview/", "description": "Host a browser-based Viam app on Viam Applications with built-in authentication, credential injection, and a dedicated URL." },{ "title": "Deploy a Viam application", "path": "https://docs.viam.com/build-apps/hosting/deploy/", "description": "Package your app with meta.json and upload it to Viam Applications for hosting with built-in authentication and credential injection." },{ "title": "meta.json schema", "path": "https://docs.viam.com/build-apps/hosting/meta-json-reference/", "description": "Reference for the applications array in meta.json, which declares one or more Viam Applications for hosted deployment." },{ "title": "Hosting reference", "path": "https://docs.viam.com/build-apps/hosting/hosting-reference/", "description": "URL patterns, cookie structure, caching behavior, and limits for the Viam Applications hosting platform." }] }] },{ "title": "Motion planning", "path": "https://docs.viam.com/motion-planning/", "description": "Plan and execute collision-free movements for robot arms and gantries.", "children": [{ "title": "Quickstarts", "path": "https://docs.viam.com/motion-planning/quickstarts/", "description": "Short end-to-end motion tutorials that run on fake components, so you need no hardware.", "children": [{ "title": "Move your first arm", "path": "https://docs.viam.com/motion-planning/quickstarts/first-arm/", "description": "From zero to an arm moving under motion service control, using a fake arm that runs on any machine." },{ "title": "Configure a frame system", "path": "https://docs.viam.com/motion-planning/quickstarts/frame-system/", "description": "Set up a table-mounted arm with a gripper and a wrist camera, and verify the frame configuration with TransformPose." }] },{ "title": "Frame system", "redirect": "https://docs.viam.com/motion-planning/frame-system/overview/", "description": "Build a unified coordinate tree so all components agree on where things are in physical space.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/motion-planning/frame-system/overview/", "description": "Build a unified coordinate tree so all components agree on where things are in physical space." },{ "title": "Arm and end effector frames", "path": "https://docs.viam.com/motion-planning/frame-system/end-effector-frames/", "description": "How Move places a named frame at a target pose, and how the frame attribute and WorldState transforms set which point on the robot a frame represents." },{ "title": "Arm with gripper and wrist camera", "path": "https://docs.viam.com/motion-planning/frame-system/arm-gripper-camera/", "description": "Configure frames for a table-mounted arm with an attached gripper and wrist-mounted camera." },{ "title": "Arm with a fixed external camera", "path": "https://docs.viam.com/motion-planning/frame-system/arm-fixed-camera/", "description": "Configure frames for a table-mounted arm with a camera mounted separately, such as overhead or on a tripod." },{ "title": "Mobile base with sensors", "path": "https://docs.viam.com/motion-planning/frame-system/mobile-base-sensors/", "description": "Configure frames for a mobile base with mounted cameras and lidar sensors." },{ "title": "Mobile base with arm", "path": "https://docs.viam.com/motion-planning/frame-system/mobile-base-arm/", "description": "Configure frames for a mobile base with a mounted arm, gripper, and sensors." },{ "title": "Camera calibration", "path": "https://docs.viam.com/motion-planning/frame-system/camera-calibration/", "description": "Compute camera intrinsic and distortion parameters for accurate 2D-to-3D projection." }] },{ "title": "Obstacles", "redirect": "https://docs.viam.com/motion-planning/obstacles/overview/", "description": "Define collision geometry so the motion planner computes collision-free paths.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/motion-planning/obstacles/overview/", "description": "Define collision geometry so the motion planner computes safe, collision-free paths." },{ "title": "Configure workspace obstacles", "path": "https://docs.viam.com/motion-planning/obstacles/configure-workspace-obstacles/", "description": "Configure the static collision geometry for your workspace through the Viam app so the motion planner routes around tables, walls, fixtures, and work-cell boundaries." },{ "title": "Avoid obstacles", "path": "https://docs.viam.com/motion-planning/obstacles/avoid-obstacles/", "description": "Configure obstacles and plan motion paths that avoid collisions." },{ "title": "Verify obstacles", "path": "https://docs.viam.com/motion-planning/obstacles/verify-obstacles/", "description": "Visualize and adjust obstacle geometry so the motion planner routes around physical objects." },{ "title": "Attach and detach geometries", "path": "https://docs.viam.com/motion-planning/obstacles/attach-detach-geometries/", "description": "Make the motion planner aware of an object the robot has grasped by attaching the object's geometry to the gripper frame for subsequent Move calls." },{ "title": "Allow frame collisions", "path": "https://docs.viam.com/motion-planning/obstacles/allow-frame-collisions/", "description": "Permit specific pairs of frames to collide so the motion planner stops flagging expected contact as a collision failure." }] },{ "title": "Move an arm", "redirect": "https://docs.viam.com/motion-planning/move-an-arm/overview/", "description": "Command an arm to a target pose, along a constrained path, or directly in joint space. Build pick-and-place flows from those primitives.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/motion-planning/move-an-arm/overview/", "description": "Command an arm to a target pose, along a constrained path, or directly in joint space. Build pick-and-place flows from those primitives." },{ "title": "Move an arm to a pose", "path": "https://docs.viam.com/motion-planning/move-an-arm/move-to-pose/", "description": "Use the motion service to move a robot arm to a target pose (position and orientation) in 3D space." },{ "title": "Move with constraints", "path": "https://docs.viam.com/motion-planning/move-an-arm/move-with-constraints/", "description": "Move an arm along a straight line or with a fixed orientation using motion constraints." },{ "title": "Configure constraints", "path": "https://docs.viam.com/motion-planning/move-an-arm/constraints/", "description": "Restrict how the arm moves between poses using linear, orientation, and collision constraints." },{ "title": "Move by joint positions", "path": "https://docs.viam.com/motion-planning/move-an-arm/move-by-joint-positions/", "description": "Command an arm directly in joint space using MoveToJointPositions and MoveThroughJointPositions, bypassing the motion planner." },{ "title": "Move through waypoints", "path": "https://docs.viam.com/motion-planning/move-an-arm/multiple-waypoints/", "description": "Plan a single continuous trajectory through an ordered list of intermediate goals using armplanning.PlanMotion." },{ "title": "Pose clouds", "path": "https://docs.viam.com/motion-planning/move-an-arm/pose-clouds/", "description": "Give the planner a region of acceptable destinations instead of a single exact pose, so it can find a solution faster." },{ "title": "Pick an object", "path": "https://docs.viam.com/motion-planning/move-an-arm/pick-an-object/", "description": "Detect, localize, and grasp an object with a robot arm and gripper." },{ "title": "Place an object", "path": "https://docs.viam.com/motion-planning/move-an-arm/place-an-object/", "description": "Move a grasped object to a target location and release it." }] },{ "title": "Move a gantry", "path": "https://docs.viam.com/motion-planning/move-gantry/", "description": "Control gantry axes directly or plan complex gantry motion." },{ "title": "How planning works", "path": "https://docs.viam.com/motion-planning/how-planning-works/", "description": "How Viam plans arm motion: the direct joint-space path it tries first, the cBiRRT fallback, and what to try when planning fails." },{ "title": "Verify a plan before running it", "path": "https://docs.viam.com/motion-planning/verify-a-plan/", "description": "Use armplanning.PlanMotion to compute and inspect a trajectory before the arm moves, and learn how to get the same plan over the motion service API." },{ "title": "Debug a motion plan", "path": "https://docs.viam.com/motion-planning/debug-motion-plan/", "description": "Find why a motion plan failed or moved unexpectedly by checking frames, obstacles, and reach in the 3D scene or from the Viam CLI." },{ "title": "Visualize a motion plan", "path": "https://docs.viam.com/motion-planning/visualize-a-motion-plan/", "description": "Publish a motion plan's trajectory and goals as custom visuals so the 3D scene renders the path against obstacles and reach." },{ "title": "Reference", "path": "https://docs.viam.com/motion-planning/reference/", "description": "Configuration, API, and technical reference for the motion service.", "children": [{ "title": "Motion service", "path": "https://docs.viam.com/motion-planning/reference/motion-service/", "description": "Configure the motion service for planning and executing component movements." },{ "title": "API", "path": "https://docs.viam.com/motion-planning/reference/api/", "description": "The motion service API for planning and executing component movements." },{ "title": "Kinematics", "path": "https://docs.viam.com/motion-planning/reference/kinematics/", "description": "Set up the kinematic model that describes how your arm's joints and links create motion." },{ "title": "Frame system API", "path": "https://docs.viam.com/motion-planning/reference/frame-system-api/", "description": "Query and transform frame system poses with the robot service RPCs: FrameSystemConfig, GetPose, TransformPose, and TransformPCD." },{ "title": "Orientation vectors", "path": "https://docs.viam.com/motion-planning/reference/orientation-vectors/", "description": "Reference for specifying component orientation using orientation vectors and other rotation formats." },{ "title": "CLI commands", "path": "https://docs.viam.com/motion-planning/reference/cli-commands/", "description": "Reference for the Viam CLI commands that inspect the frame system and test motion from the command line." },{ "title": "Motion planning algorithms", "path": "https://docs.viam.com/motion-planning/reference/algorithms/", "description": "The two-stage planning strategy the built-in motion service uses and the tuning surfaces exposed to callers." }] }] },{ "title": "Visualization", "redirect": "https://docs.viam.com/visualization/overview/", "description": "See your machine in 3D: frames, geometries, point clouds, and custom visuals your modules publish.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/visualization/overview/", "description": "Ways to visualize a Viam machine: the 3D scene, the standalone Viam visualizer, custom apps you build, and time-series dashboards." },{ "title": "3D scene", "path": "https://docs.viam.com/visualization/3d-scene/", "description": "What the 3D scene renders, where each element comes from, and how built-in configuration content differs from custom visuals a module publishes at runtime.", "children": [{ "title": "The 3D scene interface", "path": "https://docs.viam.com/visualization/3d-scene/the-3d-scene-interface/", "description": "The panels, toolbar, navigation, and settings of the 3D SCENE tab in the Viam app." },{ "title": "Measuring between frames", "path": "https://docs.viam.com/visualization/3d-scene/measuring-between-frames/", "description": "Verify and adjust the spatial relationship between components using the 3D scene and measurement tool." },{ "title": "Editing frames visually", "path": "https://docs.viam.com/visualization/3d-scene/editing-frames-visually/", "description": "Add, edit, and attach geometry to frames directly in the 3D scene." },{ "title": "3D scene widgets", "path": "https://docs.viam.com/visualization/3d-scene/3d-scene-widgets/", "description": "Overlay live controls on the 3D scene: interactive controls for any resource on the machine, and a frame's point of view." }] },{ "title": "Visuals and collisions", "path": "https://docs.viam.com/visualization/visuals-and-collisions/", "description": "How a Transform defines a custom visual, and which geometry the motion planner actually collision-checks." },{ "title": "Publish visuals from a module", "path": "https://docs.viam.com/visualization/publish-visuals-from-a-module/", "description": "Implement a world state store service that pulls data from other resources, builds transforms with the draw library, and streams them to the 3D scene." },{ "title": "Viam Visualization", "path": "https://docs.viam.com/visualization/viam-visualization/", "description": "Run the standalone Viam Visualization app locally and push geometries, point clouds, and frame systems to it from a Go client." },{ "title": "Perception", "path": "https://docs.viam.com/visualization/perception/", "description": "View and compare live perception data in the 3D scene: depth-camera point clouds, vision-service entities, and a sensor's own point of view.", "children": [{ "title": "Point clouds", "path": "https://docs.viam.com/visualization/perception/point-clouds/", "description": "How depth-camera point clouds render in the 3D scene, how to adjust their display, and how to load and compare external point clouds." },{ "title": "Verify point cloud alignment", "path": "https://docs.viam.com/visualization/perception/verify-point-cloud-alignment/", "description": "Display a depth camera's point cloud in the 3D scene to verify that the data aligns with your frame system and workspace geometry." },{ "title": "Vision services", "path": "https://docs.viam.com/visualization/perception/vision-services/", "description": "Render a vision service's segmented objects in the 3D scene and tune detection parameters against the live view." }] },{ "title": "Troubleshoot the 3D scene", "path": "https://docs.viam.com/visualization/troubleshoot-the-3d-scene/", "description": "Trace a wrong or missing element in the 3D scene to its source: the machine configuration, a module, or the connection." },{ "title": "Reference", "path": "https://docs.viam.com/visualization/reference/", "description": "Reference material for the types and services behind the 3D scene and custom visuals.", "children": [{ "title": "WorldState", "path": "https://docs.viam.com/visualization/reference/world-state/", "description": "What a WorldState is: the per-request set of obstacles and frame transforms you pass to a single Move call for the planner to plan around." },{ "title": "Transform metadata", "path": "https://docs.viam.com/visualization/reference/transform-metadata/", "description": "The metadata keys the 3D scene reads from a transform, with the wire format for each: colors, opacities, axes helper, and visibility." },{ "title": "draw library", "path": "https://docs.viam.com/visualization/reference/draw-library/", "description": "A map of the draw library's option categories: placement and identity, shapes, colors, metadata, and snapshots, with links to the full API." },{ "title": "Geometry constructors", "path": "https://docs.viam.com/visualization/reference/geometry-constructors/", "description": "Construct each geometry type a visual or an obstacle can carry, in JSON, Python, and Go." }] }] },{ "title": "Fleet deployment", "redirect": "https://docs.viam.com/fleet/overview/", "description": "Scale from one machine to a fleet: templatize configuration with fragments, provision devices, deploy software and ML models, and manage updates.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/fleet/overview/", "description": "Scale from one machine to a fleet: templatize configuration with fragments, provision devices, deploy software and ML models, and manage updates." },{ "title": "Reuse configuration", "path": "https://docs.viam.com/fleet/reuse-configuration/", "description": "Create reusable configuration templates and apply them across multiple machines." },{ "title": "Provision devices", "path": "https://docs.viam.com/fleet/provision-devices/", "description": "Set up automated provisioning so machines configure themselves when they first come online." },{ "title": "End-user device setup", "path": "https://docs.viam.com/fleet/end-user-setup/", "description": "Connect a Viam-powered device to your WiFi network using the mobile app or captive portal." },{ "title": "Deploy software", "path": "https://docs.viam.com/fleet/deploy-software/", "description": "Deploy modules and control logic to your fleet using fragments and the Viam registry." },{ "title": "Deploy ML models", "path": "https://docs.viam.com/fleet/deploy-ml-models/", "description": "Roll out trained ML models to machines using fragments and the Viam registry." },{ "title": "Manage versions and rollouts", "path": "https://docs.viam.com/fleet/manage-versions/", "description": "Control which software versions reach your machines, stage rollouts with fragment tags, and verify what each machine is running." },{ "title": "Schedule jobs", "path": "https://docs.viam.com/fleet/schedule-jobs/", "description": "Configure automated jobs that call component and service methods on a schedule." },{ "title": "Add custom metadata", "path": "https://docs.viam.com/fleet/metadata/", "description": "Attach custom key-value data to machine parts, machines, locations, and organizations." },{ "title": "System settings", "path": "https://docs.viam.com/fleet/system-settings/", "description": "Configure network connections, OS updates, tunneling, TLS, and log forwarding for deployed machines." },{ "title": "Change network", "path": "https://docs.viam.com/fleet/change-network/", "description": "Connect a deployed machine to a different WiFi network." }] },{ "title": "Monitor and operate", "redirect": "https://docs.viam.com/monitor/overview/", "description": "Monitor machine status, visualize data, set up alerts, teleoperate machines, and troubleshoot problems.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/monitor/overview/", "description": "Monitor machine status, visualize data, set up alerts, teleoperate machines, and troubleshoot problems." },{ "title": "Monitor machine status", "path": "https://docs.viam.com/monitor/monitor/", "description": "Check which machines are online, view part status, and inspect machine health across your fleet." },{ "title": "Data dashboards", "path": "https://docs.viam.com/monitor/dashboards/", "description": "Understand dashboard widget types, the windowing and aggregation query model, and how dashboards differ from teleop workspaces.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/monitor/dashboards/overview/", "description": "Understand dashboard widget types, the windowing and aggregation query model, and how dashboards differ from teleop workspaces." },{ "title": "Create dashboards", "path": "https://docs.viam.com/monitor/dashboards/create-dashboards/", "description": "Create a dashboard to visualize sensor data from machines across your organization." },{ "title": "Custom queries", "path": "https://docs.viam.com/monitor/dashboards/custom-queries/", "description": "Write MQL aggregation pipelines to create advanced dashboard visualizations." }] },{ "title": "Set up alerts", "path": "https://docs.viam.com/monitor/alert/", "description": "Configure triggers to receive email, webhook, or push notifications when machines need attention." },{ "title": "Set up custom push notifications", "path": "https://docs.viam.com/monitor/custom-push-notifications/", "description": "Route trigger push notifications to your own mobile app instead of the Viam mobile app." },{ "title": "Default control interface", "path": "https://docs.viam.com/monitor/default-interface/", "description": "Use the CONTROL tab or the Viam mobile app to remotely test and operate your machines." },{ "title": "Teleop workspaces", "path": "https://docs.viam.com/monitor/teleop-workspaces/", "description": "Build custom operator interfaces with camera feeds, sensor readouts, and component controls." },{ "title": "Troubleshoot problems", "path": "https://docs.viam.com/monitor/troubleshoot/", "description": "Debug a misbehaving machine using logs, remote shell access, debug endpoints, and configuration history." },{ "title": "Common errors", "path": "https://docs.viam.com/monitor/common-errors/", "description": "A guide to troubleshooting a Viam-based machine or system of machines with fixes to common problems." }] },{ "title": "Admin and access", "redirect": "https://docs.viam.com/organization/overview/", "description": "Manage access, roles, authentication, data regions, and billing for your organization.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/organization/overview/", "description": "Understand how Viam organizes machines into organizations and locations, and how access control works at each level." },{ "title": "Control access", "path": "https://docs.viam.com/organization/access/", "description": "To collaborate with others on your machines, you can grant users permissions for individual machines or entire locations." },{ "title": "Permissions", "path": "https://docs.viam.com/organization/rbac/", "description": "Fleet and data management permissions." },{ "title": "Manage API keys", "path": "https://docs.viam.com/organization/api-keys/", "description": "Create, rotate, and manage API keys for programmatic access to your organization, locations, and machines." },{ "title": "OAuth", "path": "https://docs.viam.com/organization/oauth/", "description": "Create a branded login screen for your application." },{ "title": "Choose data region", "path": "https://docs.viam.com/organization/data-regions/", "description": "Configure where in the world Viam stores your cloud data." },{ "title": "Billing", "path": "https://docs.viam.com/organization/billing/", "description": "View usage, manage payment methods, download invoices, and set billing alerts for your organization." },{ "title": "White-labeled billing", "path": "https://docs.viam.com/organization/white-labeled-billing/", "description": "Set up a branded billing dashboard with custom pricing for your customers." }] },{ "title": "Reference", "redirect": "https://docs.viam.com/reference/overview/", "description": "Technical reference documentation for the Viam platform: APIs, SDKs, components, services, and more.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/reference/overview/", "description": "Technical reference for the Viam platform: APIs, SDKs, built-in components and services, runtime behavior, supported hardware, and term definitions." },{ "title": "viam-agent", "path": "https://docs.viam.com/reference/viam-agent/", "description": "Reference for viam-agent: installation, subsystems, version control, advanced settings, system configuration, and network management." },{ "title": "viam-server", "path": "https://docs.viam.com/reference/viam-server/", "description": "viam-server is the open-source, on-machine portion of the Viam platform." },{ "title": "APIs", "path": "https://docs.viam.com/reference/apis/", "description": "Access and control your machine or fleet with the SDKs' client libraries for the resource and robot APIs.", "children": [{ "title": "Component APIs", "path": "https://docs.viam.com/reference/apis/components/", "description": "Client library reference for controlling Viam's built-in and custom components from the SDKs.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/reference/apis/components/overview/", "description": "Scan every Viam component API and its methods at a glance, with links to each method's reference." },{ "title": "Arm", "path": "https://docs.viam.com/reference/apis/components/arm/", "description": "Give commands to your arm components for linear motion planning." },{ "title": "Audio in", "path": "https://docs.viam.com/reference/apis/components/audio-in/", "description": "Give commands to your audio in components." },{ "title": "Audio out", "path": "https://docs.viam.com/reference/apis/components/audio-out/", "description": "Give commands to your audio out components." },{ "title": "Base", "path": "https://docs.viam.com/reference/apis/components/base/", "description": "Give commands for moving all configured components attached to a mobile platform as a whole without needing to send commands to individual components." },{ "title": "Board", "path": "https://docs.viam.com/reference/apis/components/board/", "description": "Give commands for setting GPIO pins to high or low, setting PWM, and working with analog and digital interrupts." },{ "title": "Button", "path": "https://docs.viam.com/reference/apis/components/button/", "description": "Give commands for getting presses from a physical button." },{ "title": "Camera", "path": "https://docs.viam.com/reference/apis/components/camera/", "description": "Give commands for getting images or point clouds." },{ "title": "Encoder", "path": "https://docs.viam.com/reference/apis/components/encoder/", "description": "Give commands for getting the position of a motor or a joint in ticks or degrees." },{ "title": "Gantry", "path": "https://docs.viam.com/reference/apis/components/gantry/", "description": "Give commands for coordinated control of one or more linear actuators." },{ "title": "Generic", "path": "https://docs.viam.com/reference/apis/components/generic/", "description": "Give commands for running custom model-specific commands using DoCommand on your generic components." },{ "title": "Gripper", "path": "https://docs.viam.com/reference/apis/components/gripper/", "description": "Give commands for opening and closing a gripper device." },{ "title": "Input controller", "path": "https://docs.viam.com/reference/apis/components/input-controller/", "description": "Give commands to register callbacks for events, allowing you to use input devices to control your machines." },{ "title": "Motor", "path": "https://docs.viam.com/reference/apis/components/motor/", "description": "Give commands to operate a motor or get its current status." },{ "title": "Movement sensor", "path": "https://docs.viam.com/reference/apis/components/movement-sensor/", "description": "Give commands for getting the current GPS location, linear velocity and acceleration, angular velocity and acceleration and heading." },{ "title": "Power sensor", "path": "https://docs.viam.com/reference/apis/components/power-sensor/", "description": "Commands for getting measurements of voltage, current, and power consumption." },{ "title": "Sensor", "path": "https://docs.viam.com/reference/apis/components/sensor/", "description": "Give commands for getting sensor readings." },{ "title": "Servo", "path": "https://docs.viam.com/reference/apis/components/servo/", "description": "Give commands for controlling the angular position of a servo precisely or getting its current status." },{ "title": "Switch", "path": "https://docs.viam.com/reference/apis/components/switch/", "description": "Give commands for getting the state of a physical switch that has two or more discrete positions." }] },{ "title": "Service APIs", "path": "https://docs.viam.com/reference/apis/services/", "description": "Client library reference for controlling Viam's built-in and custom services from the SDKs.", "children": [{ "title": "Overview", "path": "https://docs.viam.com/reference/apis/services/overview/", "description": "Scan every Viam service API and its methods at a glance, with links to each method's reference." },{ "title": "Base remote control", "path": "https://docs.viam.com/reference/apis/services/base-rc/", "description": "Give commands to get a list of inputs from the controller that are being monitored for that control mode." },{ "title": "Data management", "path": "https://docs.viam.com/reference/apis/services/data/", "description": "Give commands to your data management service to sync data stored on the machine it is deployed on to the cloud." },{ "title": "Discovery", "path": "https://docs.viam.com/reference/apis/services/discovery/", "description": "Reveal which resources are available to configure on a machine based on the hardware that is physically present." },{ "title": "Generic", "path": "https://docs.viam.com/reference/apis/services/generic/", "description": "Give commands to your generic components for running model-specific commands using DoCommand." },{ "title": "ML model", "path": "https://docs.viam.com/reference/apis/services/ml/", "description": "Give commands to your ML model service to make inferences based on a provided ML model." },{ "title": "Motion", "path": "https://docs.viam.com/reference/apis/services/motion/", "description": "Give commands to move a machine's components from one location or pose to another." },{ "title": "Vision", "path": "https://docs.viam.com/reference/apis/services/vision/", "description": "Give commands to get detections, classifications, or point cloud objects, depending on the ML model the vision service is using." },{ "title": "World state store", "path": "https://docs.viam.com/reference/apis/services/world-state-store/", "description": "List, get, and stream the transforms a world state store service publishes for the 3D scene to draw." }] },{ "title": "Fleet management", "path": "https://docs.viam.com/reference/apis/fleet/", "description": "Use the fleet management API with Viam's client SDKs to manage your machine fleet with code." },{ "title": "Machine management", "path": "https://docs.viam.com/reference/apis/robot/", "description": "How to use the machine API to monitor and manage your machines." },{ "title": "Data client", "path": "https://docs.viam.com/reference/apis/data-client/", "description": "Use the data client API to upload and retrieve data directly." },{ "title": "ML training client", "path": "https://docs.viam.com/reference/apis/ml-training-client/", "description": "Use the ML training client API to manage ML training jobs taking place in Viam's cloud app." },{ "title": "Session management", "path": "https://docs.viam.com/reference/apis/sessions/", "description": "Manage sessions between your machine and clients connected through Viam's SDKs." },{ "title": "Billing client", "path": "https://docs.viam.com/reference/apis/billing-client/", "description": "Use the billing client API to retrieve billing information from Viam." }] },{ "title": "SDKs", "path": "https://docs.viam.com/reference/sdks/", "description": "Write code to control your machine with Viam's Python, Go, TypeScript, Flutter, and C++ SDKs.", "children": [{ "title": "Python", "path": "https://docs.viam.com/reference/sdks/python/", "description": "Reference documentation for Viam's Python SDK client library.", "children": [{ "title": "Install the Python SDK", "path": "https://docs.viam.com/reference/sdks/python/python-venv/", "description": "Create a virtual environment and install the Python SDK for Viam." }] },{ "title": "Go", "path": "https://docs.viam.com/reference/sdks/go/", "description": "Reference documentation for Viam's Go SDK client library, hosted on pkg.go.dev." },{ "title": "TypeScript", "path": "https://docs.viam.com/reference/sdks/typescript/", "description": "Reference documentation for Viam's TypeScript SDK client library." },{ "title": "C++", "path": "https://docs.viam.com/reference/sdks/cpp/", "description": "Reference documentation for Viam's C++ SDK client library." },{ "title": "Flutter", "path": "https://docs.viam.com/reference/sdks/flutter/", "description": "Reference documentation for Viam's Flutter SDK client library." },{ "title": "DoCommand", "path": "https://docs.viam.com/reference/sdks/docommand/", "description": "Implement DoCommand in your module or use it from Viam's SDKs." },{ "title": "Extra params", "path": "https://docs.viam.com/reference/sdks/use-extra-params/", "description": "Using the extra parameter on resource API methods with Viam's SDKs." },{ "title": "Network connectivity", "path": "https://docs.viam.com/reference/sdks/connectivity/", "description": "When you connect to a machine, the machine automatically chooses the best connection over local LAN, WAN or the internet." }] },{ "title": "Built-in components", "path": "https://docs.viam.com/reference/components/", "description": "Configuration reference for Viam's built-in components: per-component models, attributes, and JSON templates.", "children": [{ "title": "Arm", "path": "https://docs.viam.com/reference/components/arm/", "description": "Configuration attribute reference for built-in arm models.", "children": [{ "title": "fake", "path": "https://docs.viam.com/reference/components/arm/fake/", "description": "Reference for the fake arm model. Fake arm to use for testing." }] },{ "title": "Base", "path": "https://docs.viam.com/reference/components/base/", "description": "Configuration attribute reference for built-in base models.", "children": [{ "title": "fake", "path": "https://docs.viam.com/reference/components/base/fake/", "description": "Reference for the fake base model. Fake base to use for testing without physical hardware." },{ "title": "wheeled", "path": "https://docs.viam.com/reference/components/base/wheeled/", "description": "Reference for the wheeled base model. And wire a wheeled base." },{ "title": "sensor-controlled", "path": "https://docs.viam.com/reference/components/base/sensor-controlled/", "description": "Reference for the sensor-controlled base model. Sensor-controlled base, a robotic base with feedback control from a movement sensor." },{ "title": "Micro-RDK", "path": "https://docs.viam.com/reference/components/base/micro-rdk/", "description": "Base models available in the Micro-RDK.", "children": [{ "title": "two_wheeled_base", "path": "https://docs.viam.com/reference/components/base/micro-rdk/two_wheeled_base/", "description": "Reference for the two_wheeled_base base model. And wire a two-wheeled base with a microcontroller." }] }] },{ "title": "Board", "path": "https://docs.viam.com/reference/components/board/", "description": "Configuration attribute reference for built-in board models.", "children": [{ "title": "fake", "path": "https://docs.viam.com/reference/components/board/fake/", "description": "Reference for the fake board model. Fake board." },{ "title": "Micro-RDK", "path": "https://docs.viam.com/reference/components/board/micro-rdk/", "description": "Board models available in the Micro-RDK.", "children": [{ "title": "esp32", "path": "https://docs.viam.com/reference/components/board/micro-rdk/esp32/", "description": "Reference for the esp32 board model. ESP32 board running viam-micro-server." }] }] },{ "title": "Button", "path": "https://docs.viam.com/reference/components/button/", "description": "Configuration attribute reference for built-in button models." },{ "title": "Camera", "path": "https://docs.viam.com/reference/components/camera/", "description": "Configuration attribute reference for built-in camera models.", "children": [{ "title": "fake", "path": "https://docs.viam.com/reference/components/camera/fake/", "description": "Reference for the fake camera model. Returns a static gradient image and point cloud for testing." },{ "title": "ffmpeg", "path": "https://docs.viam.com/reference/components/camera/ffmpeg/", "description": "Reference for the ffmpeg camera model. Uses a camera device, video file, or stream as a camera component." },{ "title": "image_file", "path": "https://docs.viam.com/reference/components/camera/image-file/", "description": "Reference for the image_file camera model. Serves color or depth image frames from a file path." },{ "title": "webcam", "path": "https://docs.viam.com/reference/components/camera/webcam/", "description": "Reference for the webcam camera model. The general camera model for USB cameras and laptop webcams." },{ "title": "transform", "path": "https://docs.viam.com/reference/components/camera/transform/", "description": "Reference for the transform camera model. Apply pipeline transformations (classifications, crop, detections, resize, rotate) to another camera's output." },{ "title": "Micro-RDK", "path": "https://docs.viam.com/reference/components/camera/micro-rdk/", "description": "Camera models available in the Micro-RDK.", "children": [{ "title": "fake", "path": "https://docs.viam.com/reference/components/camera/micro-rdk/fake/", "description": "Reference for the fake camera model on Micro-RDK. Returns a static circle-in-diamond image for testing." },{ "title": "esp32-camera", "path": "https://docs.viam.com/reference/components/camera/micro-rdk/esp32-camera/", "description": "Reference for the esp32-camera Micro-RDK camera model. Supports OV2640 and OV3660 cameras connected to an ESP32 board." }] }] },{ "title": "Encoder", "path": "https://docs.viam.com/reference/components/encoder/", "description": "Configuration attribute reference for built-in encoder models.", "children": [{ "title": "fake", "path": "https://docs.viam.com/reference/components/encoder/fake/", "description": "Reference for the fake encoder model. Fake encoder." },{ "title": "Micro-RDK", "path": "https://docs.viam.com/reference/components/encoder/micro-rdk/", "description": "Encoder models available in the Micro-RDK.", "children": [{ "title": "incremental", "path": "https://docs.viam.com/reference/components/encoder/micro-rdk/incremental/", "description": "Reference for the incremental encoder model. Incremental encoder." },{ "title": "single", "path": "https://docs.viam.com/reference/components/encoder/micro-rdk/single/", "description": "Reference for the single encoder model. Single encoder with a microcontroller." }] },{ "title": "incremental", "path": "https://docs.viam.com/reference/components/encoder/incremental/", "description": "Reference for the incremental encoder model. Incremental encoder." },{ "title": "single", "path": "https://docs.viam.com/reference/components/encoder/single/", "description": "Reference for the single encoder model. Single encoder." }] },{ "title": "Gantry", "path": "https://docs.viam.com/reference/components/gantry/", "description": "Configuration attribute reference for built-in gantry models.", "children": [{ "title": "fake", "path": "https://docs.viam.com/reference/components/gantry/fake/", "description": "Reference for the fake gantry model. Fake gantry." },{ "title": "single-axis", "path": "https://docs.viam.com/reference/components/gantry/single-axis/", "description": "Reference for the single-axis gantry model. Single-axis gantry." },{ "title": "multi-axis", "path": "https://docs.viam.com/reference/components/gantry/multi-axis/", "description": "Reference for the multi-axis gantry model. Multi-axis gantry." }] },{ "title": "Generic", "path": "https://docs.viam.com/reference/components/generic/", "description": "Configuration attribute reference for built-in generic models.", "children": [{ "title": "fake", "path": "https://docs.viam.com/reference/components/generic/fake/", "description": "Reference for the fake generic model. Fake generic component." }] },{ "title": "Gripper", "path": "https://docs.viam.com/reference/components/gripper/", "description": "Configuration attribute reference for built-in gripper models.", "children": [{ "title": "fake", "path": "https://docs.viam.com/reference/components/gripper/fake/", "description": "Reference for the fake gripper model. Fake gripper." }] },{ "title": "Input controller", "path": "https://docs.viam.com/reference/components/input-controller/", "description": "Configuration attribute reference for built-in input controller models.", "children": [{ "title": "fake", "path": "https://docs.viam.com/reference/components/input-controller/fake/", "description": "Reference for the fake input-controller model. Fake input controller for testing." },{ "title": "gamepad", "path": "https://docs.viam.com/reference/components/input-controller/gamepad/", "description": "Reference for the gamepad input-controller model. Linux-supported gamepad as an input controller." },{ "title": "gpio", "path": "https://docs.viam.com/reference/components/input-controller/gpio/", "description": "Reference for the gpio input-controller model. GPIO- or ADC-based device as an input controller." },{ "title": "mux", "path": "https://docs.viam.com/reference/components/input-controller/mux/", "description": "Reference for the mux input-controller model. Mux input controller to combine one or more input controllers." },{ "title": "webgamepad", "path": "https://docs.viam.com/reference/components/input-controller/webgamepad/", "description": "Reference for the webgamepad input-controller model. Web-based gamepad as an input controller." }] },{ "title": "Motor", "path": "https://docs.viam.com/reference/components/motor/", "description": "Configuration attribute reference for built-in motor models.", "children": [{ "title": "fake", "path": "https://docs.viam.com/reference/components/motor/fake/", "description": "Reference for the fake motor model. Fake motor to test software without any hardware." },{ "title": "gpio", "path": "https://docs.viam.com/reference/components/motor/gpio/", "description": "Reference for the gpio motor model. Brushed or brushless DC motors." },{ "title": "gpiostepper", "path": "https://docs.viam.com/reference/components/motor/gpiostepper/", "description": "Reference for the gpiostepper motor model. Bipolar stepper motor with current regulation and 1/32 microstepping driven by a basic driver." },{ "title": "DMC4000", "path": "https://docs.viam.com/reference/components/motor/dmc4000/", "description": "Reference for the dmc4000 motor model. Stepper motor controlled by a DMC-40x0 series motion controller." },{ "title": "Encoded Motors", "path": "https://docs.viam.com/reference/components/motor/encoded-motor/", "description": "Reference for the encoded-motor motor model. How to configure an encoded motor." },{ "title": "Micro-RDK", "path": "https://docs.viam.com/reference/components/motor/micro-rdk/", "description": "Motor models available in the Micro-RDK.", "children": [{ "title": "gpio", "path": "https://docs.viam.com/reference/components/motor/micro-rdk/gpio/", "description": "Reference for the gpio motor model. Brushed or brushless DC motors with a microcontroller." }] }] },{ "title": "Movement sensor", "path": "https://docs.viam.com/reference/components/movement-sensor/", "description": "Configuration attribute reference for built-in movement sensor models.", "children": [{ "title": "fake", "path": "https://docs.viam.com/reference/components/movement-sensor/fake/", "description": "Reference for the fake movement-sensor model. Fake movement sensor to test software without any hardware." },{ "title": "merged", "path": "https://docs.viam.com/reference/components/movement-sensor/merged/", "description": "Reference for the merged movement-sensor model. Merged movement sensor." },{ "title": "Micro-RDK", "path": "https://docs.viam.com/reference/components/movement-sensor/micro-rdk/", "description": "Movement sensor models available in the Micro-RDK.", "children": [{ "title": "accel-adxl345", "path": "https://docs.viam.com/reference/components/movement-sensor/micro-rdk/accel-adxl345/", "description": "Reference for the accel-adxl345 movement-sensor model. ADXL345 digital accelerometer with a microcontroller." },{ "title": "gyro-mpu6050", "path": "https://docs.viam.com/reference/components/movement-sensor/micro-rdk/gyro-mpu6050/", "description": "Reference for the gyro-mpu6050 movement-sensor model. MPU-6050 movement sensor with a microcontroller." }] },{ "title": "wheeled-odometry", "path": "https://docs.viam.com/reference/components/movement-sensor/wheeled-odometry/", "description": "Reference for the wheeled-odometry movement-sensor model. Wheeled odometry movement sensor." }] },{ "title": "Power sensor", "path": "https://docs.viam.com/reference/components/power-sensor/", "description": "Configuration attribute reference for built-in power sensor models.", "children": [{ "title": "fake", "path": "https://docs.viam.com/reference/components/power-sensor/fake/", "description": "Reference for the fake power-sensor model. Fake power sensor to test software without the physical hardware." }] },{ "title": "Sensor", "path": "https://docs.viam.com/reference/components/sensor/", "description": "Configuration attribute reference for built-in sensor models.", "children": [{ "title": "fake", "path": "https://docs.viam.com/reference/components/sensor/fake/", "description": "Reference for the fake sensor model. Fake sensor to use for testing." },{ "title": "Micro-RDK", "path": "https://docs.viam.com/reference/components/sensor/micro-rdk/", "description": "Sensor models available in the Micro-RDK.", "children": [{ "title": "ultrasonic", "path": "https://docs.viam.com/reference/components/sensor/micro-rdk/ultrasonic/", "description": "Reference for the ultrasonic sensor model. Ultrasonic sensor with a microcontroller." }] }] },{ "title": "Servo", "path": "https://docs.viam.com/reference/components/servo/", "description": "Configuration attribute reference for built-in servo models.", "children": [{ "title": "fake", "path": "https://docs.viam.com/reference/components/servo/fake/", "description": "Reference for the fake servo model. Fake servo." },{ "title": "gpio", "path": "https://docs.viam.com/reference/components/servo/gpio/", "description": "Reference for the gpio servo model. Gpio servo." },{ "title": "Micro-RDK", "path": "https://docs.viam.com/reference/components/servo/micro-rdk/", "description": "Servo models available in the Micro-RDK.", "children": [{ "title": "gpio", "path": "https://docs.viam.com/reference/components/servo/micro-rdk/gpio/", "description": "Reference for the gpio servo model. Gpio hobby servo with a microcontroller." }] }] },{ "title": "Switch", "path": "https://docs.viam.com/reference/components/switch/", "description": "Configuration attribute reference for built-in switch models.", "children": [{ "title": "fake", "path": "https://docs.viam.com/reference/components/switch/fake/", "description": "Reference for the fake switch model. Fake switch for testing." }] }] },{ "title": "Services", "path": "https://docs.viam.com/reference/services/", "description": "Configuration reference for Viam built-in services: per-service models, attributes, and JSON templates.", "children": [{ "title": "Vision", "path": "https://docs.viam.com/reference/services/vision/", "description": "Configuration reference for built-in vision service models: mlmodel, color_detector, and detections-to-segments.", "children": [{ "title": "mlmodel", "path": "https://docs.viam.com/reference/services/vision/mlmodel/", "description": "Configure the mlmodel vision service to turn a deployed ML model into a detector, classifier, or 3D segmenter." },{ "title": "color_detector", "path": "https://docs.viam.com/reference/services/vision/color_detector/", "description": "Configure the color_detector vision service to find regions of a specific hue in camera images. No ML model required." },{ "title": "detections-to-segments", "path": "https://docs.viam.com/reference/services/vision/detections-to-segments/", "description": "Project 2D detections into 3D point cloud segments using a depth camera's intrinsic parameters." }] },{ "title": "Motion", "path": "https://docs.viam.com/reference/services/motion/", "description": "The motion service enables your machine to plan and move its components relative to itself, other machines, and the world.", "children": [{ "title": "Constraints", "path": "https://docs.viam.com/reference/services/motion/constraints/", "description": "Configure constraints to specify certain types of motion." }] },{ "title": "Discovery", "path": "https://docs.viam.com/reference/services/discovery/", "description": "Use a discovery service to discover available resources on a machine." },{ "title": "Frame system", "path": "https://docs.viam.com/reference/services/frame-system/", "description": "The frame system holds reference frame information for the relative position of components in space." },{ "title": "Base remote control", "path": "https://docs.viam.com/reference/services/base-rc/", "description": "The base remote control service allows you to remotely control a base with an input controller like a gamepad." },{ "title": "Generic", "path": "https://docs.viam.com/reference/services/generic/", "description": "A service that does not fit any of the other APIs." }] },{ "title": "Machine-to-machine communication", "path": "https://docs.viam.com/reference/machine-to-machine-comms/", "description": "Explanation of how a machine and its parts interact at the communication layer." },{ "title": "Device setup", "path": "https://docs.viam.com/reference/device-setup/", "description": "Board-specific setup instructions for single-board computers and microcontrollers supported by Viam.", "children": [{ "title": "Raspberry Pi Setup", "path": "https://docs.viam.com/reference/device-setup/rpi-setup/", "description": "Image a Raspberry Pi to prepare it for viam-server installation." },{ "title": "Odroid-C4 Setup", "path": "https://docs.viam.com/reference/device-setup/odroid-c4-setup/", "description": "Image a Odroid-C4 to prepare it for viam-server installation." },{ "title": "Orange Pi 3 LTS Setup", "path": "https://docs.viam.com/reference/device-setup/orange-pi-3-lts/", "description": "Image an Orange Pi 3 LTS to prepare it for viam-server installation." },{ "title": "Orange Pi Zero2 Setup", "path": "https://docs.viam.com/reference/device-setup/orange-pi-zero2/", "description": "Image an Orange Pi Zero2 to prepare it for viam-server installation." },{ "title": "BeagleBone Setup", "path": "https://docs.viam.com/reference/device-setup/beaglebone-setup/", "description": "Flash a BeagleBone AI-64 to prepare it for viam-server installation." },{ "title": "Jetson AGX Orin Setup", "path": "https://docs.viam.com/reference/device-setup/jetson-agx-orin-setup/", "description": "Set up the Jetson AGX Orin Developer Kit to prepare your NVIDIA Jetson AGX Orin for viam-server installation." },{ "title": "Jetson Nano and Orin Nano Setup", "path": "https://docs.viam.com/reference/device-setup/jetson-nano-setup/", "description": "Prepare your Jetson Nano or Jetson Orin Nano for viam-server installation." },{ "title": "Pumpkin Board Setup", "path": "https://docs.viam.com/reference/device-setup/pumpkin/", "description": "Configure the pin mappings to use a pumpkin board." },{ "title": "SK-TDA4VM Setup", "path": "https://docs.viam.com/reference/device-setup/sk-tda4vm/", "description": "Image a Texas Instruments TDA4VM starter kit board to prepare it for viam-server installation." },{ "title": "Set up an ESP32", "path": "https://docs.viam.com/reference/device-setup/setup-micro/", "description": "Install the lightweight version of the software that drives hardware and connects your device to the cloud.", "children": [{ "title": "Modules for ESP32", "path": "https://docs.viam.com/reference/device-setup/setup-micro/micro-module/", "description": "Create your own modules for use with an Espressif ESP32 microcontroller." },{ "title": "Micro-RDK Troubleshooting", "path": "https://docs.viam.com/reference/device-setup/setup-micro/micro-troubleshooting/", "description": "Troubleshooting tips and best practices for installing and using viam-micro-server or other Micro-RDK-based firmware on a microcontroller." }] }] },{ "title": "Trigger configuration", "path": "https://docs.viam.com/reference/triggers/", "description": "Detailed information about how to configure triggers, webhooks, and push notifications." },{ "title": "Control package", "path": "https://docs.viam.com/reference/controls-package/", "description": "The control package implements PID feedback control loops for encoded motors, sensor-controlled bases, and custom components." },{ "title": "Glossary", "path": "https://docs.viam.com/reference/glossary/", "description": "A glossary that explains robotics and Viam-specific jargon." }] }] }