# agent-can
Agent-first CAN control daemon for real devices.
V1:
- one daemon per bus
- daemon started with adapter + DBC + bitrate config
- mailbox semantics for reads: latest decodable message per arbitration id
- undecodable frames dropped from the agent-visible surface
- raw send plus DBC-backed message send
## Quick Start
```sh
nix develop -c bash -c 'cd runtime && cargo build'
agent-can open \
--bus vehicle \
--adapter usb1 \
--dbc ./vehicle.dbc \
--bitrate 500000
agent-can --bus vehicle status
agent-can --bus vehicle mailboxes
agent-can --bus vehicle send-raw 0x123 DEADBEEF
agent-can --bus vehicle send-message VehicleControl enable=1 torque_request=12
agent-can --bus vehicle close
```
## Architecture
```text
CLI client <-> local JSON lines IPC <-> bus daemon
- CAN transport
- DBC decode/encode
- latest-message mailboxes
- counters and drop stats
```
Primary target is Windows + PEAK CAN. The copied Linux SocketCAN path is retained for local bring-up and testing.