Extend Viam with Modules from the Viam Registry

Viam provides built-in support for a variety of resources:

  • Various types of hardware components.
  • High-level functionality exposed as services.

If the component or service you want to use for your project is not natively supported, you can use modular resources from the Viam Registry or create your own.

The Viam Registry

The Viam registry is the central place where you can browse modules that add capabilities to your machine beyond what is built-in to viam-server.

A module provides one or more modular resources. You can search the available modular resources from the Viam Registry here:


You can see details about each module in the Viam registry on its dedicated module page. You can integrate modules into any Viam-powered machine.

Use modules

To use a modular resource from the registry, add it from your robot’s Config tab in the Viam app, using the Create component button.

After adding a module to your robot, you can choose to configure it for automatic version updates from the Viam registry, or update your module manually. By default, newly added modules will remain at the version they were when you installed them, and will not update automatically.

Once you have added and configured the module you would like to use in the Viam app, you can test your added resource using the Control tab and program it using standardized APIs.

viam-server manages the dependencies, start-up, reconfiguration, data management, and shutdown behavior of your modular resource.

Tutorials using modules

Create your own modules

If none of the existing modular resources in the Viam registry support your use case, you can create your own modules with your own modular resources:

  • Implement a custom component: Write a driver for an unsupported component by implementing the corresponding component API.

  • Implement a custom service: Implement your own algorithm or model against a corresponding service API or use custom algorithms or data models when working with services such as SLAM, vision, or motion planning.

You can write modules in a variety of programming languages, such as, Go, Python, C++, Rust, while implementing the same APIs. To create a new module:

  1. Create a module with one or more modular resources by implementing all methods for the component’s or service’s standardized API.
  2. Upload the module to the Viam registry to make it available for deployment to robots or add it as a local module. You can upload private modules for your organization or public modules.
  3. Once you have uploaded your module to the registry, deploy and configure the module from the Viam app. Then, you can test your added resource using the Control tab and program it with Viam’s Go or Python SDKs.

Tutorials creating modules