SDK for Synse Plugins in Go
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Documentation Status

Synse Plugin SDK

A Golang SDK for creating plugins for Synse Server

Synse Server provides an HTTP API for monitoring and controlling physical and virtual devices; Synse Plugins provide the backend support for all the devices Synse Server exposes. This repo contains the official Synse Plugin SDK (written in Go) that can be used to create plugin backends for Synse Server.

The SDK handles most of the common functionality needed for plugins, such as configuration parsing, background read/write, transaction generation and tracking, meta-info caching, and more. This means the plugin author should only need to worry about the plugin-specific device support. See the SDK Documentation for more info.

The Synse Ecosystem

The Synse SDK is one component of the greater Synse Ecosystem.

  • vapor-ware/synse-server: An HTTP server providing a uniform API to interact with physical and virtual devices via plugin backends. This can be thought of as a 'front end' for Synse Plugins.

  • vapor-ware/synse-server-grpc: The internal gRPC API that connects Synse Server and the Synse Plugins.

  • vapor-ware/synse-emulator-plugin: A simple plugin with no hardware dependencies that can serve as a plugin backend for Synse Server for development, testing, and just getting familiar with how Synse Server works or how plugins can be written.

  • vapor-ware/synse-cli: A CLI that allows you to easily interact with Synse Server (via HTTP) and Plugins (via gRPC) directly from the command line.

  • vapor-ware/synse-graphql: A GraphQL wrapper around Synse Server's HTTP API that provides a powerful query language enabling simple aggregations and operations over multiple devices.

Getting Started

It is strongly recommended that you use a release version of the SDK if you are vendoring dependencies, e.g. with dep. The SDK can be installed with:

go get -u

From there, it is easy to start building your own plugin. The SDK Documentation provides some useful information on writing plugins. You can also check out the examples directory which contains various example plugins using this SDK. The examples, in conjunction with the documentation, should get you well on your way to start writing your own plugin(s).


If you wish to develop the SDK, see the Developing section in the SDK Documentation.

Sharing Plugins

Have you written a plugin and want to share it with the Synse community? Let us know! There currently is not a tool or site to search for plugins, so we will maintain a list here. You can also add the synse-plugin tag to your plugin's GitHub repo.


Feedback for the Synse Plugin SDK, or any component of the Synse ecosystem, is greatly appreciated! If you experience any issues, find the documentation unclear, have requests for features, or just have questions about it, we'd love to know. Feel free to open an issue for any feedback you may have.


We welcome contributions to the project. The project maintainers actively manage the issues and pull requests. If you choose to contribute, we ask that you either comment on an existing issue or open a new one. This project follows the typical GitHub Workflow.

The Synse Plugin SDK is released under the GPL-3.0 license.


FOSSA Status