Technology
Rules decide. Models explain. Nothing is confused about its job.
The architecture exists to answer one question convincingly: when this platform tells an operator something is wrong, can that claim be reproduced? Everything below follows from insisting the answer is yes.
A message from a charge point to an operator, and the command path back.
OCPP 1.6J gateway
Chargers connect over WebSocket and speak the protocol they already ship with. The gateway handles boot notifications, heartbeats, meter values, status notifications and transactions, and holds the live socket open for remote commands travelling the other way.
Deterministic rule engine
Detection is a versioned rule evaluated against recorded inputs — pack temperature ceilings, thermal ramp rates, connector faults, offline transitions. No model participates. An alert raised today can be replayed and defended a year from now.
Governed agent layer
Six purpose-scoped agents: battery diagnostics, safety triage, station health, service advisor, fleet copilot and inspection vision. Each has a declared model, a recorded prompt, and every invocation persisted with latency, tokens and cost.
Query catalogue, not free SQL
The copilot selects from a fixed catalogue of reviewed, parameterised queries. The model chooses which one and fills the parameters; it never composes SQL. Every number on screen traces to a query you can read.
Every model call is accounted for
Agent runs are persisted with their subject, resolved model, latency, token count and estimated cost. Model spend is an operational line item, not a surprise on an invoice.

Deployment
| Concern | Approach |
|---|---|
| Protocol | OCPP 1.6J over WebSocket. OCPP 2.0.1 on the roadmap. |
| Data store | PostgreSQL. No proprietary storage engine. |
| Hosting | Your cloud account or ours; region of your choice. |
| Tenancy | Telemetry is not pooled across customers. |
| Integration | Runs alongside an existing CPMS. Billing, tariffs and roaming stay where they are. |
| Rollback | An evaluation changes the charger's backend URL and nothing else. |
