CAN Opener Developers

Build on the bus.

The same primitives that power Nexus and Prometheus, documented and open for you to build on.

SDK

Four lines to a live vehicle.

Connect, subscribe to typed signals, and send mapped commands. The SDK handles BLE, framing and decoding so you work with meaning, not raw bytes.

quickstart.ts
import { connect } from '@canopener/sdk'

// Pair with the adapter over BLE
const vehicle = await connect()

// Subscribe to live, typed signals
vehicle.on('speed', (kmh) => render(kmh))
vehicle.on('fuel', (pct) => render(pct))

// Send a mapped command
await vehicle.command('doors.unlock')
Principles

How we build.

OPEN

Open by default

The decoders, message maps and SDK live in the open. Your car should not be a black box.

TYPED

Typed signals

Every supported PID and CAN frame is described as a typed signal you can subscribe to.

LOCAL

Local-first

Data flows phone-to-adapter over BLE. No cloud round-trip required to read your own vehicle.

Hardware Abstraction Layer

Write once. Run across supported vehicles.

A widget, script, or automation built for one supported vehicle should run on other supported vehicles too. We are building this on top of standardized data models, informed by the Vehicle Information Service Specification (VISS). We will publish the full specification as we get closer to launch, with the Lua-based HAL shipping in a phased rollout starting late 2026.

Unlocked, on purpose

Build your own, or install one from the community.

Every CAN Opener ships unlocked, so you can write and run your own software on the device. Diagnostics, security tools, custom dashboards, and entirely new features are just a widget away — build your own, or install ones other developers have already shared.