Skip to content

gRPC Service Interfaces

All core BOS services are defined in services/common/common.proto and communicate over gRPC. Services use a port convention based on 0xB05 (2821).

Service Port Purpose
System 2821 System management (service health, logs)
Sysmod 2822 Semantic system model (devices, points, spaces)
DeviceControl 2823 Protocol-agnostic driver I/O
History 2824 Time-series historian
Forecast 2825 Model-generated point forecasts
EventBus 2826 Kafka-backed pub/sub event bus
Scheduler 2827 Container execution and scheduling
HealthCheck Liveness probe, implemented by all services

DeviceControl

Protocol-agnostic driver interface. The main I/O gateway for physical devices.

RPC Description
Get Read one or more point values by URI
Set Write one or more point values by URI

Sysmod

The system model and semantic registry — an RDF graph over devices, points, and spaces.

RPC Description
QueryDevices Filter devices by name, type, or location
QueryPoints Filter points by name, type, location, or parent type
SuggestPoints Find points matching a preferred Brick class, with a fallback floor class
BasicQuery Run an arbitrary SPARQL-style query; returns triples
GetName Resolve a point or device URI to its human-readable label
GetDriver Resolve a point URI to its driver
GetDriverXref Resolve a point URI to its protocol-specific xref address
MakeDevice Register a new device in the model
MakePoint Register a new point in the model
MakeDriver Register a new driver in the model
MakeSpace Register a new spatial location in the model
Update Patch an entity's triples (deletions + additions in one call)
Delete Remove an entity by URI, triple pattern, or query

History

Time-series historian.

RPC Description
GetHistory Fetch rows for a list of point keys over a time range
GetSampleRate Read the current sample rate for a point
SetSampleRate Configure how often a point is sampled

Scheduler

Runs and schedules containerized workloads.

RPC Description
Run One-shot container execution; returns stdout and exit code
RunningJobs List currently active jobs
Stop Cancel one or more running jobs
GetJobDetail Full job record including params and point accesses
CompletedJobs Session-scoped history of finished jobs
RegisterCron Schedule a container to run on a cron expression
CronTable List all registered cron jobs
UnregisterCron Remove a cron job by UUID
SetCronEnabled Enable or disable a cron job without removing it
RegisterHandler Bind a container to fire when an event topic arrives
EventHandlers List all registered event handlers
UnregisterHandler Remove an event handler by UUID
Library Browse available app images with metadata and env var specs
DeleteApp Remove an app image from the library
Get / Set Generic shared memory reads and writes

Forecast

Stores and retrieves model-generated forecasts for points.

RPC Description
Get Retrieve forecast entries for a point URI, optionally filtered by ID or time window
Set Store a new forecast (model name, version, values with target timestamps, metadata)

EventBus

Kafka-backed pub/sub event bus.

RPC Description
Publish Emit an event to a topic with a typed payload and optional partition key
Subscribe Server-streaming: receive live events from one or more topics, with server-side filtering and configurable start position (latest, earliest, offset, or timestamp)
Replay Bounded server-streaming replay of a single topic from a past timestamp, offset, or event ID

HealthCheck

RPC Description
Ping Liveness probe (Empty → Empty), implemented by all services