Viam in 3 minutes

Viam is a complete software platform for robots.

Robots

A robot in Viam consists of at least one computer, like a Raspberry Pi, running viam-server along with the hardware the computer controls. The term component describes a piece of hardware that a computer controls, like an arm or a motor.

Robots can be small and simple or very complex. A robot could be a single-board computer with a single sensor or LED wired to it, or a robot can consist of multiple computers with many components, acting as one unit.

Robot components

viam-server

viam-server is the open-source software which runs on each computer in a robot and:

  • Creates, configures, and maintains the robot
  • Securely handles all communications
  • Runs drivers, custom code, and any other software
  • Accepts API requests
  • Runs services like computer vision, data synchronization, and motion planning

The Viam platform uses the cloud for configuration. Configuration describes how hardware and software interact. A basic example that you can configure using the Viam platform is connecting a computer to a camera. A more advanced example is a computer connected to a camera, actuating components (like motors or arms), and an ML model.

Networking

Your robot does not need to be permanently connected to the internet to work:

  • All APIs work locally or in the cloud
  • Data is cached locally and synced when possible
  • Configuration is cached

When your robot is connected (either LAN or WAN), viam-server can act as both a client and a server. In other words, each instance can request resources, as well as provide them. This allows for tremendous flexibility.

Communication

TLS certificates provided by app.viam.com ensure that all communication is both authenticated and encrypted.

Viam uses WebRTC to create secure peer-to-peer paths between robots and clients for fast, low latency communication. The Viam cloud does not receive any command or control information regarding your robots, ensuring low latency, robustness, and privacy.

With WebRTC established, Viam uses gRPC so you can program your robot in most common programming languages.

APIs

There are four categories of APIs:

To see the Viam API specification, check GitHub.

SDKs

We provide SDKs in several languages to easily connect to your robot, use components and services, and create custom modular resources.

Viam currently has SDKs for Go and Python. Additional SDKs are coming soon, including Typescript, Rust, Java, C++, and Flutter.

Next Steps

Start by borrowing one of our robots. Use Try Viam.

If you already have your own robot, set up viam-server and learn how Viam helps you prototype and scale.

For more inspiration, check out our tutorials or visit our community on Slack to get help or workshop ideas with others!