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.
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 │
└──────────────────────┴───────────────┴──────────────┴─────────────┴───────────────────────────────────┴─────────────────┴─────────┘