OcppPilot
The OCPP Protocol Engine
The shared Go library that powers every Pilot product. OCPP-J adapter over WebSocket with frame encoding/decoding, subprotocol negotiation (1.6 + 2.0.1), CALL/CALLRESULT/CALLERROR correlation by uniqueId, and a typed handler interface.
Why OcppPilot?
The protocol layer, solved once — so every product built on top just works.
OCPP-J wire codec
Encode and decode OCPP-J frames — CALL, CALLRESULT, CALLERROR — with full validation against the 1.6 and 2.0.1 schemas.
WebSocket connection handler
Manages wss:// connections with subprotocol negotiation, automatic reconnection, and clean shutdown for both client and server roles.
Frame correlation by uniqueId
Every CALL gets a uniqueId. OcppPilot tracks pending requests and matches each CALLRESULT or CALLERROR back to its originating call.
Raw frame capture
Tap into the raw WebSocket stream for logging, debugging, or replay — every byte on the wire is available before and after parsing.
Full 1.6 + 2.0.1 action catalog
Every action from both protocol versions — BootNotification, Authorize, MeterValues, TransactionEvent, and more — typed and ready to use.
Embeddable Go library
Import OcppPilot as a Go module into your own application. Build a CSMS, a charger simulator, or a test harness — the protocol layer is handled.
How it works
Embed the engine, handle the protocol.
Import the Go module
Add OcppPilot to your Go project. It provides the WebSocket layer, frame codec, and typed message handlers out of the box.
Register your handlers
Implement the handler interface for the OCPP actions you care about — BootNotification, StartTransaction, MeterValues, and more.
Let OcppPilot handle the wire
Connection management, subprotocol negotiation, frame correlation — the engine takes care of it. You focus on business logic.
Be among the first
We're working with teams building on OCPP to shape OcppPilot into the definitive protocol engine. Bring your use case — we'll bring the library.
Request a demoOr join the waitlist for early access: