Build robots like you build software

For most software engineers, robotics means wrestling with proprietary drivers, complex networking, and low-level C++. Viam is a unified software layer that abstracts away the hardware, networking, data management, and more, so you can build and manage robots with the workflows you already know.
A screenshot of the Viam app overlaid on top of a photo of robotic arms on a conveyor belt

From code to production on one platform

Write app code, not drivers.

Instead of learning proprietary SDKs for every sensor and motor, Viam gives you consistent APIs across all hardware. If you change a camera or motor in your config, your code keeps working.

Universal APIs Across Manufacturers

Every camera component in Viam exposes the same GetImage() method regardless of brand. Same for motors, sensors, arms, and other components. That means you can swap hardware without rewriting your code.

Built-in Drivers For Hundreds of Devices

Viam’s Registry provides drivers for your hardware, so you don’t need to implement one yourself. Specify your hardware model and connection details in the config, and viam-server pulls the driver from the Registry and initializes it automatically.

Multi-Language SDKs

Write your control logic in Python or Go, get lower-level control with C++, or build a client application with Typescript or Flutter.
A photo of an Orbbec camera mounted onto a robotic arm. A block of code is overlaid showing how simple it is to swap your hardware in the Viam app.

Connect and control hardware remotely.

No need to SSH into machines or stand next to robots for updates. Viam treats your hardware like cloud infrastructure—connect from anywhere, no VPN required.

Cloud-Managed Connectivity

Built-in NAT traversal means you connect to any machine through firewalls and routers. No port forwarding, no networking configuration, no "it works on my machine" problems.

Live Remote Testing

Write code in your local IDE and execute it against hardware in the field. Stream camera feeds, read sensor data, and visualize machine state in real-time from your browser.

Teleoperate from the Browser

Drive bases with keyboard controls, move arms to specific positions, or test components directly from Viam's web interface. Debug without deploying code.
A rendering of a delivery robot moving on a cobblestone path. A screenshot of the viam app is overlaid showing the camera feed and controls for the robot.

Collect data and train models.

Configure data capture, and Viam handles the pipeline. Collect images, sensor readings, or custom telemetry. Data syncs automatically to the cloud when bandwidth allows.

Edge-to-Cloud Pipeline with Resilience

Data queues locally during network outages and in low-bandwidth environments, and syncs when connectivity returns. Viam handles restarts and storage constraints automatically.

Train Models Without Building New Infrastructure

Create and annotate datasets, and train ML models in your chosen architecture, all through the cloud. Or bring your own model.

Deploy Intelligence to Your Fleet

Push trained models to the cloud. Machines pull them automatically and run inference locally. Version, stage, and roll back models just like code.
A photo of bottles on a conveyor belt. A machine learning model is being used to identify a defect in the bottle.

Scale prototypes into a fleet of robots.

Export your working prototype configuration as a reusable fragment, deploy to hundreds of machines, and manage everything from a single dashboard—updates, monitoring, and remote operations included.

Reusable Configurations for Automatic Provisioning

Export your working setup as a fragment—a reusable configuration block designed to save you build time. New machines running viam-server pull the fragment from the cloud on first boot and start running immediately.

Send Fleet-Wide OTA Updates

Update configurations, code modules, or ML models across your entire fleet in seconds. Schedule maintenance tasks without writing cron jobs.

Monitor and Operate Remotely

See online/offline status, data sync progress, and logs for every machine from one dashboard. Set up alerts for machines going offline, encountering errors, or meeting custom conditions. Control access with role-based permissions for team members.
A photo of robotic arms working on a car in a factory. The code block is showing how you can push updates to your fleet.

White label robotics under your brand.

Most robotics companies spend months building customer portals, mobile apps, and payment systems before they can sell their first unit. Viam provides the customer-facing infrastructure so you can focus on your product's unique value.

Custom-Branded Authentication

Your customers can authenticate through your domain with your branding. Configure SSO, OAuth, or email/password. They interact with your product, not Viam's platform.

Build Client Apps with Familiar Tools

Use the TypeScript SDK to build web dashboards or the Flutter SDK for native mobile apps. The same component and service APIs you used during development are also callable from your customer's browser or phone.

Built-In Billing

Define your pricing: per-machine fees, data transfer costs, compute hours, API calls. Viam tracks usage, generates invoices, and processes payments.
A photo of a person holding their phone displaying the authentication screen of the Canyon Runner app. A block of code from the Viam app is overlaid over top.

How Viam works

Viam is a distributed system designed to treat physical hardware like cloud infrastructure.

viam-server (runs on every machine)

Think of it as a container runtime for hardware. It pulls drivers from the Registry, starts processes, manages networking, and syncs data to the cloud. Install with a single command on Mac, Linux, or Windows.

Viam Registry

A central repository of modules (hardware drivers), ML models, and reusable configurations. Like npm or PyPI, but for robotics. Browse community contributions or publish your own assets—publicly or privately within your organization.

Viam Cloud

Manages your fleet: configuration versioning, data storage, over-the-air updates, remote connectivity, and monitoring. Your single dashboard for everything from one machine to thousands.

From local prototype to branded global fleet

See how Viam handles the infrastructure so you can focus on the application.

Get Hardware Running in Minutes

Add cameras, motors, arms, or sensors to your JSON config. Viam pulls drivers from the Registry and exposes consistent APIs. No driver installation, no dependency management.

Logos of some of the many brands whose hardware are compatible with Viam

Connect from Anywhere

Stream logs, view camera feeds, and teleoperate machines from your browser. Built-in NAT traversal means you connect to any machine without VPNs or firewall configuration.

An image from the Viam app showing an overview of a robot in your fleet

Capture Data from Edge to Cloud

Configure data capture in JSON—which components, how often. Data syncs automatically when bandwidth allows, queues locally during outages, and resumes after restarts.

Train and Deploy Models Without the Overhead

Train ML models on captured data without provisioning GPUs or building pipelines. Deploy models to your fleet with the same versioning system as code.

A chart showing how data goes from machine to the viam app and is used to create ML models which are then pushed back down to the machine.

Develop Application Code from Anywhere

Write code on your laptop that runs against remote hardware. Test in your IDE, deploy when ready. Same code, same APIs—just different execution environments.

The code for a Viam module being saved and deployed

Let Viam Deploy and Manage Your Application Code

Package your control logic as a module. Viam manages dependencies and handles lifecycle management.

Code in the Viam app being packaged into a module

Scale from Prototype to Fleet

Turn your working prototype into a reusable configuration. Deploy the same setup to dozens or hundreds of machines with per-machine overrides for site-specific settings.

A chart showing how you can push updated configurations to your entire fleet of robots

Monitor and Operate Your Fleet Remotely

See online/offline status, logs, and data sync progress for every machine in one dashboard. Get alerts when machines encounter errors or go offline.

A screenshot of the Viam app showing your full fleet online

Deliver Products to Your Customers

Build robotics products with white-label authentication, customer-facing SDKs for web and mobile, and built-in billing. Focus on your product, not infrastructure.

A screenshot of the authentication screen on the Canyon Runner app

Stop building plumbing. Start building robots.

Get started with a hands-on tutorial (60 min)
Try Tutorial
Access full documentation and sample code
READ VIAM documentation
overview

Explore Viam

The robotics platform that moves at the speed of software
Viam brings software engineering maturity to robotics and automation, giving developers the tools to move fast—to prototype, iterate, deploy and scale—on a single platform. Everything deployed on your hardware is open-source, ensuring transparency and control over your systems.

Platform architecture

Our CEO Eliot Horowitz walks through Viam’s full-stack, modular platform architecture—highlighting seamless integration, hardware interoperability, and scalability. (3 minutes)