Viam basics

What is Viam?

Viam is a software platform for building smart applications for the physical world.

Viam consists of:

  • An open-source binary called viam-server that runs on your machine, managing your local hardware, software, and data, and connecting your device to Viam’s cloud.
  • A cloud app called the Viam app that you can use to configure and manage your machines and data.
  • Simple APIs for common types of hardware (for example, cameras, sensors, and motors), and software services (such as computer vision).
  • A registry of modules that implement the hardware and software APIs. This includes support for many popular hardware models.
  • SDKs for many programming languages that you can use to interact with your machines.

viam-server connects your machine to the Viam app and to SDK clients.

See Viam architecture for details on how Viam works.

What is a machine?

A machine is a computer (often a single-board computer like a Raspberry Pi or Jetson) or microcontroller and all the hardware attached to it, as well as the software running on it. You can think of one machine as representing one device, such as an Intel RealSense camera connected to a Raspberry Pi. Each machine runs an instance of viam-server.

When you create a new machine in the Viam app, Viam generates a unique set of credentials for that machine that connect the physical machine to its instance in the Viam app.

What platforms does Viam run on?

viam-server can run on any computer that runs one of the following operating systems:

  • Linux 64-bit operating systems running on AArch64 (ARM64) or x86-64 architectures
  • macOS
  • Windows

Viam also supports 32-bit microcontrollers such as the ESP32 series.

Examples of computing devices that Viam supports:

What hardware does Viam support?

In short, any type of hardware can be integrated with Viam.

Viam supports a wide variety of sensors, cameras, and other physical hardware, with APIs for each of the following types of hardware:

These standardized APIs are implemented by modules that provide drivers for specific models of hardware.

Any hardware that is not already supported by a Viam module can be added into Viam’s system of modular resources by creating a new module that provides a driver for the hardware.

How do I get started?

  1. To start, set up a computer or SBC or set up an ESP32 and connect it to the Viam app.

  2. Next, you’ll configure hardware and software on your machine in the Viam app. You can test it with the UI in the app.

  3. From there, you have many options including:

  • Capturing data from your machines
  • Training and deploying an AI model
  • Using an SDK of your choice to write an app to interact with your machines
  • Deploying control logic
  • Sharing the configuration across many machines