Software
Viam RDK
By Viam, INC, United States (checked on github.com/viamrobotics (opens in a new tab)), from github.com/viamrobotics/rdk (opens in a new tab)
- Middleware
- Framework
- AGPL-3.0-only
Viam RDK is an open source robot architecture that exposes robotics functionality through simple APIs, usable to run robots and build client applications for them.
Facts
- GitHub stars
- 178read on 6 Nov 2026
- Last update
- 6 Nov 2026Newest commit on main
- Maintenance
- Activea commit in the last 90 days
- Difficulty
- Intermediate
- Hardware it needs, as the project states it
- Windows 10 22H2 and up is listed as experimental support, with bash and gcc required there.
Checked on GitHub on 6 Nov 2026.
Licenses
- Code
- AGPL-3.0-only (opens in a new tab)
Read by Robotheca from LICENSE (opens in a new tab) (AGPL-3.0-only) at commit c2b18e9 (opens in a new tab), on 6 Nov 2026.
- Commercial use
- Yes
Copyleft: Modified source must be published, also when it runs as a service.
Overview
What it does: Robotheca's summary
- Provides an open source robot architecture offering robotics functionality via simple APIs.
- Can be built with make server and run from the resulting binary, or run directly with go run from the web server command.
- Ships with an example configuration (fake.json) for starting with a dummy setup.
- Includes an example for creating custom resources.
- Offers client SDKs for Go (in this repository), Python, TypeScript, C++ and Rust.
- Defines its API with Protocol Buffers and gRPC, maintained in a separate repository.
Written by Robotheca from the project's README (opens in a new tab) at commit e4778ad, not by its creator.
The README
The creator's own README, copied as written: README.md by Viam, INC, at commit c2b18e9, under AGPL-3.0-only (opens in a new tab). The original on GitHub (opens in a new tab).
Read the README here
RDK (Robot Development Kit)
Image: PkgGoDev (opens in a new tab) (opens in a new tab)
Viam provides an open source robot architecture that provides robotics functionality via simple APIs
Website: viam.com (opens in a new tab)
Documentation: docs.viam.com (opens in a new tab)
Cloud App: app.viam.com (opens in a new tab)
Contact
- Discord: https://discord.gg/viam (opens in a new tab)
- Support: https://support.viam.com (opens in a new tab)
If you have a bug or an idea, please open an issue here (opens in a new tab).
Building and Using
Dependencies
- Install
make. - Run
make setupto install dev environment requirements.- This also installs some client side git hooks.
Build and Run
- Build:
make server. Then run./bin/<your architecture>/server [parameters] - Run without building:
go run ./web/cmd/server [parameters]
Example with a dummy configuration: go run ./web/cmd/server -config etc/configs/fake.json.
Examples
- CustomResources (opens in a new tab) - example for creating custom resources.
SDKs
Multiple SDKs are available for writing client applications that interface with the Viam RDK.
- Go: Provided by this repository here (opens in a new tab). Documentation can be found here (opens in a new tab)
- Python: Docs (opens in a new tab), Repository (opens in a new tab)
- Typescript: Docs (opens in a new tab), Repository (opens in a new tab)
- C++: Docs (opens in a new tab), Repository (opens in a new tab)
- Rust: Repository (opens in a new tab)
Environment Variable Settings
| Environment Variable | Behavior | Default Value |
|---|---|---|
| VIAM_RESOURCE_CONFIGURATION_TIMEOUT | Duration for which resources are allowed to (re)configure. | 1 minute |
| VIAM_MODULE_STARTUP_TIMEOUT | Duration for which modules are allowed to startup. | 5 minutes |
| VIAM_ENABLE_DISK_SPACE_BLOCK | When true-like, refuse package/module installs on a low-space volume. | unset (log-only) |
Development
Sign the Contribution Agreement before submitting pull requests.
API
The API is defined with Protocol Buffers/gRPC which can be found at https://github.com/viamrobotics/api (opens in a new tab).
Conventions
- Write tests!
- Follow this Go Style Guide (opens in a new tab).
- Run
make lintandmake test. - Run
make buildand commit resulting frontend artifacts. - Use imperative mood for commits (see Git Documentation (opens in a new tab)).
- Prefer metric SI prefixes where possible (e.g. millis) https://www.nist.gov/pml/weights-and-measures/metric-si-prefixes (opens in a new tab). The type of measurement (e.g. meters) is not necessary if it is implied (e.g. rulerLengthMillis).
Committing
- Follow git's guidance on commit messages:
Describe your changes in imperative mood, e.g. "make xyzzy do frotz" instead of "[This patch] makes xyzzy do frotz" or "[I] changed xyzzy to do frotz", as if you are giving orders to the codebase to change its behavior. Try to make sure your explanation can be understood without external resources. Instead of giving a URL to a mailing list archive, summarize the relevant points of the discussion.
License check
We run LicenseFinder (opens in a new tab) in CI to verify 3rd-party libraries have approved software licenses.
If you add a 3rd-party library to this project, please run make license-check to verify that it can be used.
For maintainers, here is how to make some common license policy changes:
Permit a new license (e.g. MIT):
https://github.com/pivotal/LicenseFinder#permitting-licenses (opens in a new tab)
license_finder permitted_licenses add MIT
Associate a license with a dependency that is not automatically detected or incorrect:
https://github.com/pivotal/LicenseFinder#setting-licenses (opens in a new tab)
license_finder licenses add my_new_dependency MIT
Approve a dependency outright - please include a reason if you do this!
https://github.com/pivotal/LicenseFinder#approving-dependencies (opens in a new tab)
license_finder approvals add my_new_dependency --why="valid reason"
Please refer to the README at https://github.com/pivotal/LicenseFinder (opens in a new tab) for information on how to make other license policy changes.
Windows Support (Experimental)
Windows 10 22H2 and up.
Development Dependencies
- bash (from https://gitforwindows.org/ (opens in a new tab) is good)
- gcc (from https://www.msys2.org/ (opens in a new tab)
mingw-w64-x86_64-toolchainis good)
Support is not well tested yet.
Known Issues
- motion planning is not supported yet (https://viam.atlassian.net/browse/RSDK-1772 (opens in a new tab)).
- video streaming is not supported yet (https://viam.atlassian.net/browse/RSDK-1771 (opens in a new tab)).
- rpc: ICE between local connections found via ICE mDNS appear to be flaky in the establishment phase.
License
Copyright 2021-2024 Viam Inc.
AGPLv3 - See LICENSE (opens in a new tab) file
Files and versions
- Repository on GitHubgithub.com/viamrobotics/rdk (opens in a new tab)
- The version Robotheca readc2b18e9 (opens in a new tab)
- Latest releasev1.15.0 (3 Nov 2026)
Robotheca read the repository at two versions: the summary at e4778ad and the facts and the README at c2b18e9 (read on 6 Nov 2026).
Robotheca never hosts the code: each link goes to the creator's own page.
Use it
How to install it, in the creator's words: The project's README (opens in a new tab)
Robotheca doesn't review code. Read it before running it.
Robotheca lists software as a reference: nothing is hosted or run here, and every fact links to where it was read.