Viam in 3 minutes
Viam is a complete software platform that supports every step of your robot development lifecycle.
Plan your robot
When using Viam, this is what you’ll need to know to plan your robot:
- Hardware: Many robotic components are natively supported by the Viam platform. You will not need to write a single line of code to integrate them, and swapping out component models will not require code changes.
- Functionality: You can make use of computer vision, motion planning, SLAM, data management, machine learning, and more by configuring Viam’s built-in services.
- Architecture: You can build simple robots or multi-part robots that use secure communication channels across local networks and the cloud, all of which can be managed with a uniform API.
- Extensibility: If you need additional functionality, you can leverage community contributed and custom resources to extend Viam.
Join the Viam community to collaborate during planning and beyond.
Get started
A robot in Viam consists of at least one computer, typically a single-board computer, running viam-server
and communicating with any hardware connected to it by signaling through digital data pins.
Viam supports devices running any 64-bit Linux OS or macOS.
The Viam platform provides a user interface for connecting to and managing robots, the Viam app.
To use the Viam platform with your robot, log in to the app, create a new robot, and install the viam-server
binary which:
- 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.
Info
Everything Viam runs on your robot is open-source.
Configure your robot
Robots can be small and simple or very complex. A robot can be a single-board computer with a single sensor or LED wired to it, or a robot can consist of multiple computers with many physical components connected, acting as one unit.
The term component describes a piece of hardware that a computer controls, like an arm or a motor.
For each component that makes up your robot:
- Add it to your robot by choosing the component type (example:
camera
) and model (example:webcam
). - Test it with the visual control tab.
- See any problems with in-app logs, review or roll back configuration history.
After configuring your robot’s hardware, you can configure high level functionality the same way:
- Data Management enables you to capture and sync data from one or more robots, and use that data for machine learning and beyond.
- Fleet management enables you to configure, control, debug, and manage entire fleets of robots.
- Motion planning enables your robot to plan and move itself.
- Vision enables your robot to intelligently see and interpret the world around it.
- Simultaneous Localization And Mapping (SLAM) enables your robot to map its surroundings and find its position on a map.
Control your robot
The Viam platform provides a consistent programming interface for all robots, allowing you to control your robots with code in the language of your choice. Viam currently has SDKs for Go, Python, and TypeScript. Additional SDKs are coming soon, including Rust, Java, C++, and Flutter.
TLS certificates provided by app.viam.com ensure that all communication is 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 many common programming languages.
This provides flexibility and security whether you are building tight control loops for autonomous mobile robots, event-based triggers for IoT devices, or custom web-based robot management interfaces.
There are four categories of APIs:
- Robot provides high level robot commands
- Components like motors, arms, GPS
- Services like computer vision, motion planning, SLAM
- Cloud applications like Fleet Management, Data Management
You can see the Viam API specification on GitHub.
Network flexibility
Your robot does not need to be connected to the cloud.
The viam-server
software resides on your robot alongside your configurations, your code, and appropriate services.
In scenarios without cloud connectivity, you can still connect your robot to a local area network (LAN), or to any relevant devices (such as a gamepad).
It all depends on your use case and configuration.
- All APIs work locally or in the cloud
- Data is cached locally and synced when possible
- Configuration is cached
When your robot is connected (to 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 in terms of your architecture design.
Scale
With robots in production, Viam provides fleet management capabilities to help you scale. With it you can:
- Manage permissions within your organization and locations.
- Manage software across your fleet, including deployment of code and machine learning models.
- Keep your robot configuration and capabilities up-to-date.
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 Discord to get help or workshop ideas with others!
Was this page helpful?
Glad to hear it! If there is anything we could be doing better, please create an issue.
We're sorry about that. If you'd like to talk to us for help, please join the Community Discord. To ensure we know what's wrong with this page, you can also open an issue.