← docs

Getting started

Three pieces: a hub anywhere both ends can reach, an agent on the device that owns the CAN interfaces, a client wherever you are.

1. Run the hub

On a host with a public address (defaults: QUIC and TLS on 7227, plain TCP on loopback 7228, a local unix socket for admin):

can-hub

2. Export the device buses

On the device. The TLS identity is generated on first start; the hub fingerprint is pinned on first contact:

can-hub-agent --connect quic://hub.example.com:7227 --name truck42 can0 can1

3. Reach them from anywhere

$ can-hub-client --connect tls://hub.example.com:7227 list
id         agent                            interface
1          truck42                          can0
2          truck42                          can1

$ can-hub-client --connect tls://hub.example.com:7227 dump 1
(1780847295.078524) 123 [4] DE AD BE EF

send injects a frame, attach mirrors a remote bus into a local vcan so candump, SavvyCAN, Wireshark or python-can work unmodified, and socketcand runs a local bridge for legacy socketcand clients.

Install

Debian packages and static binaries for x86_64/arm64/armv7 are published on the GitHub releases page. Building from source needs cmake, ninja and gcc — see the README.

Administration

can-hub-cli manages the hub over its unix socket: agent identities and pinning, per-interface read/write ACLs for clients, kicking peers, traffic counters and remote interface configuration (bitrate, link up/down).