Hardware Services

Hardware services are GraphQL server endpoints that take in queries and mutations and exercise the hardware API to complete them.

It is highly recommended that you first read about GraphQL:

Hardware services function mostly as a passthrough to the API, managing control of the resource. Each hardware service has only a single worker thread, so the hardware will not be damaged or report an incorrect state due to simultaneous conflicting transactions.

In order to see the the full schema of a service, which details its available commands and telemetry objects, connect to the service’s GraphiQL endpoint and click the “Docs” button in the upper-right hand corner.


Queries are telemetry requests. Usually (if the hardware has the capability), when a query is submitted, the hardware service retrieves the live data from the hardware component and completes the transaction, returning it in a JSON format.


Mutations are hardware commands. Submitting a mutation changes the state of the hardware.

Service Types

There are a few common categories of satellite bus hardware:

  • Power Systems (EPS and/or Battery)
  • Attitude Determination and Control Systems (ADCS)
  • Global Positioning System (GPS)

Other hardware components are given services that are more generalized.

Creating a Service

The service outline guide documents the preferred schema for all hardware services. Commonizing the queries available from each service allows greater code re-use and reduces the number of new queries users must learn when swapping between different hardware devices.

The service development guide goes into a bit more detail about the components needed to create and install a new hardware service.

Pre-Built Services

Some hardware services have been created by Kubos and are available for use.

The following list gives links to each service’s documentation:


In order to be included in the OBC and automatically started at boot time, the package for each hardware service must be enabled when building Kubos Linux