Viam Documentation

Viam adapts software engineering paradigms to building machines for the physical world.

Learn

We recommend starting with the Quick Start and following the Tutorial: Desk Safari to build your first machine.

Prototype

You can build many types of robotics project on Viam, from single-component projects to human-in-the-loop or AI-powered autonomous intelligent systems. What makes Viam special is the ability to rapidly create prototypes using:

  • Hardware agnostic: Viam runs on almost all single-board computers.
  • Builder UI: Configure and test hardware and software with a simple interface.
  • SDKs: Program machines in your favorite programming language.
  • Module Registry: Find and use a variety of integrations for popular hardware, common logic patterns, machine learning models, and more.
  • CLI: Control, manage, and test from the command-line from anywhere.

The Viam platform also offers many builtin capabilities from which you can pick and choose, such as:

Before you begin, we recommend reading How to think about building a machine to understand the building blocks of a machine and how to go from prototype to production.

Iterate

As you go from prototype to production, Viam reduces complexity with sensible design patterns:

  • Modules: The foundational building blocks of machines which keep your machine code maintainable as your project grows in complexity because you can make changes to single modules without changing the rest of the project.
  • Standardized APIs: It doesn’t matter which robotic arm, motor, or other piece of hardware you are using, the code to operate the hardware is the same. This means you can swap hardware as you iterate.
  • Parts and sub-parts: Create arbitrarily complex projects by connecting multiple viam-server instances.

Deploy

As you start deploying machines, Viam supports you with the tools you know and expect from software development:

  • Fragments: Reuse configuration chunks across machines. All with version control.
  • Remote monitoring: Monitor, operate, and troubleshoot machines from anywhere in the world.
  • Machine settings: Manage operating system package updates, network configuration, and system-level logging.
  • Viam applications: Deploy custom web interface for your machines while Viam handles hosting and authentication.

Scale

When you ship machines, Viam provides the infrastructure to support your needs:

  • Provisioning: ship machines with a preconfigured setup so customers can connect them to the internet and get them up and running
  • Role-based access control: Grant fine-grained permissions as needed.
  • Billing: bill customers for usage through the Viam platform
  • Alerting: Send alerts in the form of email notifications or webhook requests.