Viam in 3 minutes
Viam is a complete software platform that supports every step of your smart machine development lifecycle.
Plan your smart machine
When using Viam, this is what you’ll need to know to plan your smart machine:
- Hardware: Many 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 smart machines or multi-part smart machines 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 modular resources to extend Viam from the Viam registry.
Join the Viam community to collaborate during planning and beyond.
A smart machine 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 smart machines, the Viam app.
- Creates, configures, and maintains the smart machine.
- 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.
Everything Viam runs on your smart machine is open-source.
Configure your smart machine
Robots can be small and simple or very complex. A smart machine can be a single-board computer with a single sensor or LED wired to it, or a smart machine 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 smart machine:
- Add it to your robot by choosing the component type (example:
camera) and model (example:
- Test it with the visual control tab.
- See any problems with in-app logs, review or roll back configuration history.
After configuring your smart machine’s hardware, you can configure high level functionality the same way:
- Data Management enables you to capture and sync data from one or more smart machine, and use that data for machine learning and beyond.
- Fleet management enables you to configure, control, debug, and manage entire fleets of smart machines.
- Motion planning enables your smart machine to plan and move itself.
- Vision enables your smart machine to intelligently see and interpret the world around it.
- Simultaneous Localization And Mapping (SLAM) enables your smart machine to map its surroundings and find its position on a map.
Control your smart machine
The Viam platform provides a consistent programming interface for all smart machines, allowing you to control your smart machines 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 smart machines and clients for fast, low-latency communication. The Viam cloud does not receive any command or control information regarding your smart machines, ensuring low latency, robustness, and privacy. With WebRTC established, Viam uses gRPC so you can program your smart machines in many common programming languages.
This provides flexibility and security whether you are building tight control loops for autonomous mobile smart machines, event-based triggers for IoT devices, or custom web-based smart machine 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.
Your smart machine does not need to be connected to the cloud.
viam-server software resides on your smart machine alongside your configurations, your code, and appropriate services.
In scenarios without cloud connectivity, you can still connect your smart machine 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 smart machine 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.
With smart machines 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 smart machine configuration and capabilities up-to-date.
You can also extend Viam to support additional hardware components or software services by deploying a module from the Viam registry to your smart machine.
The Viam registry allows hardware and software engineers to collaborate on their smart machine projects by writing and sharing custom modules with each other. You can add a module from the Viam registry directly from your smart machine’s Configuration tab in the Viam app, using the + Create component button. You can also upload your own module to the Viam registry.
See Modular resources for more information.
Start by borrowing one of our rovers. Use Try Viam.
If you already have your own smart machine, set up
viam-server and learn how Viam helps you prototype and scale.
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: