Quick Start

Welcome to the Viam documentation! This page introduces you to the core concepts you need to know when building projects with Viam.

The Viam platform

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:

  • One open-source binary (viam-server) that runs on a computer and manages hardware, software, and data
  • Standardized APIs that work across all hardware types, allowing you to swap hardware without code changes
  • Built-in services for motion planning, machine learning, vision, and data management
  • A registry of modules for popular hardware and common software needs
  • Cloud-based architecture for managing machines and controlling configuration updates
  • SDKs (Python, Go, TypeScript, C++, Flutter)

Machines

A 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:

  • components
  • services
  • modules
  • triggers
  • jobs

Supported platforms

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:

Components

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.

Supported hardware

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

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:

  • Vision services: detect objects, classify images, or track movement in camera streams
  • Motion services: plan and execute complex movements
  • Data management: capture, store, and sync data
  • Navigation: help machines move around autonomously
  • SLAM (Simultaneous Localization and Mapping): create maps of surroundings and locate machines within those maps
  • Generic: perform custom business logic by periodically repeating tasks

Modules

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.

How everything works together

In practice, these concepts work together as follows:

  • Your computer runs viam-server
  • viam-server manages connected hardware components, such as webcams, motors, and more
  • viam-server also manages services, such as vision services that detect objects in camera streams
  • Modules are the plugins that provide components, services, and control logic
  • Cloud capabilities allow you to scale, analyze data, and make machines smart.

Next Steps

Now 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.