Next
Tutorial: Desk Safari
Welcome to the Viam documentation! This page introduces you to the core concepts you need to know when building projects with Viam.
Viam is a unified software platform that brings data management, AI, and automation to the physical world. Common use cases include industrial automation and manufacturing, autonomous vehicles and robotics, and environmental monitoring.
The Viam platform consists of:
viam-server
) that runs on a computer and manages hardware, software, and dataA machine consists of at least one computer running viam-server
(often a single-board computer like a Raspberry Pi or Jetson) along with all the hardware components and software services that the computer controls.
When you use Viam to build a machine, you create exactly what you need by mixing and matching different building blocks:
viam-server
can run on any computer that runs one of the following operating systems:
Viam also supports 32-bit microcontrollers such as the ESP32 series.
Examples of computing devices that Viam supports:
Raspberry Pi 5
Raspberry Pi 4
NVIDIA Jetson Orin Nano
Intel UP4000
Mediatek Genio 500 Pumpkin
Espressif ESP32
Orange Pi Zero2
Texas Instruments TDA4VM
NVIDIA Jetson Nano
NVIDIA Jetson AGX Orin
NVIDIA Jetson Xavier NX
Raspberry Pi 3
Raspberry Pi Zero 2 W
BeagleBone AI-64
Odroid C4
Orange Pi 3 LTS
Orange Pi Zero 2W
Linux PCs
macOS Computers
Components are the resources that your machine uses to sense and interact with the world, such as cameras, motors, sensors, and more. They represent the eyes, ears, hands, and other physical capabilities of your machine.
Components often represent physical hardware, but they can also represent purely software-based resources or control elements. For example, imagine a sensor that retrieves the current temperature from an API, or a button in an app.
Any type of hardware can be integrated with Viam.
Viam supports a wide variety of sensors, cameras, and other physical hardware, with standardized APIs.
Common component APIs include:
Anything that does not fit the specialized APIs can use the Generic component API.
Services are higher-level software capabilities that process and interpret data or interact with the world. Many services depend on components.
Common service APIs include:
Modules are packages of code that contain components and services. They allow you to add functionality to machines without modifying Viam’s core software. You can think of modules as plugins that provide drivers for specific hardware models, custom software, or control logic.
Viam has a registry of modules that you can use when building your machines. Of course, you can also build your own modules.
The components and services provided by modules implement the standardized component and service APIs. This means if you need to at any point swap from one arm model to another, your code stays the same, because the arms use the same API. This provides flexibility allowing for rapid prototyping without vendor lock-in.
In practice, these concepts work together as follows:
viam-server
viam-server
manages connected hardware components, such as webcams, motors, and moreviam-server
also manages services, such as vision services that detect objects in camera streamsNow you know about the most important concepts for using Viam.
We recommend putting these concepts into practice by following the Desk Safari tutorial to build your first machine.
If you’d like to learn more about Viam and how it works, see Viam architecture.
For more information on cloud capabilities like fleet management and provisioning, see Monitor Air Quality with a Fleet of Sensors.
Was this page helpful?
Glad to hear it! If you have any other feedback please let us know:
We're sorry about that. To help us improve, please tell us what we can do better:
Thank you!