Architecture

graph TB;

subgraph Clients[Clients / Edge]
cli[CLI]
console[Console]
on-prem-agent[Agent]
end

subgraph API[Control Plane]
agent_grpc_server[Agent gRPC Service]
rest_endpoint[REST Endpoint]
user_grpc_server[User gRPC Service]
storage_grpc_server[Storage Service]
end

subgraph Backing Services
mongo[(MongoDB)]
redis[(Redis)]
stripe[Stripe]
prometheus[(Prometheus)]
end

agent_grpc_server ---> storage_grpc_server;
cli --> user_grpc_server;
console ---> rest_endpoint;
on-prem-agent <-- tunnel stream --> agent_grpc_server;
rest_endpoint ---> user_grpc_server;
storage_grpc_server ---> mongo;
storage_grpc_server ---> redis;
storage_grpc_server --> prometheus;
user_grpc_server -- use tunnel --> agent_grpc_server;
user_grpc_server ---> storage_grpc_server;
user_grpc_server -- metered billing --> stripe

Agent

The primary component is the Agent, a lean Rust-based next generation software agent purpose-built to leverage hardware acceleration for low-latency high-throughput signal processing. The agent is capable of running Kubernetes-style robotic control loops autonomously at the edge, while phoning home to the control plane when connectivity permits. When connected, it downloads new configuration bundles, uploads telemetry, and makes a reverse-tunnel available to Redfish datacenter management software. It embeds many common management services, including the equivalent of Prometheus Node Exporter, to ensure the lightest possible footprint and management overhead on resource-constrained devices. The agent performs systems management functions such as power management, fan control, fabric management, and signal acquisition through comprehensive hardware integrations with BitScope Cluster Blades, and with other popular equipment such as SixFab and Argon 40 HATs using a variety of IoT busses including serial and I²C.

API

An API service acts as the control plane, providing endpoints for REST (used by the web ui), and gRPC (used by the CLI and by agents).

It uses MongoDB for primary storage, Redis for caching and distributed coordination, and a Prometheus-compatible database such as VictoriaMetrics for aggregated time-series storage.

Console

A web console provides a collaborative device management experience inspired by the ease of use of Digital Ocean. A stateless router ensures that every function uses a RESTful URL so that bookmarks can be sent via instant messenger or email for team collaboration.

Console

CLI

A CLI enables GitOps and DevOps workflows by providing idempotent configuration capabilities via yaml or json files. The CLI provides access to the full set of functionality provided by the web console.

$ onprem get devices

┌──────────────────────┬───────────────┬──────────────┬─────────────┬───────────────────────────────────┬─────────────────┬─────────┐
│ id                   ┆ name          ┆ manufacturer ┆ model       ┆ uuid                              ┆ lastIpAddr      ┆ tainted │
│ ---                  ┆ ---           ┆ ---          ┆ ---         ┆ ---                               ┆ ---             ┆ ---     │
│ str                  ┆ str           ┆ str          ┆ str         ┆ str                               ┆ str             ┆ bool    │
╞══════════════════════╪═══════════════╪══════════════╪═════════════╪═══════════════════════════════════╪═════════════════╪═════════╡
│ cfv5v3h32ckl0mq6al70 ┆ c001-b8-n01   ┆ Raspberry Pi ┆ 4B Rev 1.4  ┆ 8938301d-9e32-5470-8f2b-0dd379cb… ┆ 192.168.241.57  ┆ false   │
│ cfv5v8932ckl0mq6amc0 ┆ c001-b8-n03   ┆ Raspberry Pi ┆ 4B Rev 1.4  ┆ 692c82a0-a2ea-550a-9caa-e42debf0… ┆ 192.168.241.56  ┆ false   │
│ cfv60ah32ckl0mq6au60 ┆ c001-b8-n04   ┆ Raspberry Pi ┆ 4B Rev 1.4  ┆ acc28e51-0f57-552b-a36e-9023db67… ┆ 192.168.241.55  ┆ false   │
│ cfv60o932ckl0mq6b1d0 ┆ c001-b8-n05   ┆ Raspberry Pi ┆ 4B Rev 1.4  ┆ 8225ad60-4ce5-5f8e-958f-0a78a0d6… ┆ 192.168.241.58  ┆ false   │
│ cfv60vp32ckl0mq6b38g ┆ c001-b8-n06   ┆ Raspberry Pi ┆ 4B Rev 1.4  ┆ c55f0ba1-359c-5cda-a2d2-c6601428… ┆ 192.168.241.54  ┆ false   │
│ cfv624132ckl0mq6bbi0 ┆ c001-b8-n07   ┆ Raspberry Pi ┆ 4B Rev 1.4  ┆ 6af5f0a6-af50-57ce-ba78-9435e223… ┆ 192.168.240.58  ┆ false   │
│ cfv623h32ckl0mq6bbc0 ┆ c001-b8-n08   ┆ Raspberry Pi ┆ 4B Rev 1.4  ┆ e430593d-36ce-5f26-9c14-9d6ccaeb… ┆ 192.168.240.57  ┆ false   │
│ cfv634h32ckl0mq6bjbg ┆ c001-b8-n09   ┆ Raspberry Pi ┆ 4B Rev 1.4  ┆ 0313d666-d3ed-5656-8468-0ceb1417… ┆ 192.168.240.53  ┆ false   │
│ ch2ql7p32ckj9ndqd200 ┆ c006-n1       ┆ NVIDIA       ┆ Jetson Nano ┆ 185b8d7c-5c4a-5f63-86d9-d80bbf72… ┆ 192.168.241.123 ┆ false   │
│ chai28932ckjgou9an3g ┆ c006-n2       ┆ NVIDIA       ┆ Jetson Nano ┆ 8ed6b72b-9056-5f3e-8ef4-9a1e537d… ┆ 192.168.241.162 ┆ false   │
│ cht7np132ckk7b39k6o0 ┆ seeed-0       ┆ NVIDIA       ┆ null        ┆ 4791cb95-1f40-547f-be80-af538afa… ┆ 192.168.242.14  ┆ false   │
│ cht7nv932ckk7b39k8e0 ┆ seeed-1       ┆ NVIDIA       ┆ null        ┆ a9514069-59a1-5301-83e1-51b493fa… ┆ 192.168.242.15  ┆ false   │
│ cht7o4h32ckk7b39k9tg ┆ seeed-2       ┆ NVIDIA       ┆ null        ┆ d238d655-3f1e-56db-bc2d-563e57c5… ┆ 192.168.242.16  ┆ false   │
│ cht7o9932ckk7b39kb7g ┆ seeed-3       ┆ NVIDIA       ┆ null        ┆ b3bd7b4f-43b9-5c72-bc83-b7ce6874… ┆ 192.168.242.17  ┆ false   │
│ cjprdbc3v1vsmvpqo980 ┆ c006-n1       ┆ NVIDIA       ┆ Jetson Nano ┆ 185b8d7c-5c4a-5f63-86d9-d80bbf72… ┆ 192.168.241.123 ┆ false   │
│ cjprdt43v1vsmvpqoaug ┆ c006-n2       ┆ NVIDIA       ┆ Jetson Nano ┆ 8ed6b72b-9056-5f3e-8ef4-9a1e537d… ┆ 192.168.241.162 ┆ false   │
└──────────────────────┴───────────────┴──────────────┴─────────────┴───────────────────────────────────┴─────────────────┴─────────┘