For camera vendors

Two doors, and you may take either one.

We define one canonical camera vocabulary and refuse to let vendor shapes cross the bus. That refusal is the invitation: you never have to adopt our language, our build system or our release cadence to work here.

Door one

Write a driver

A shared object against a stable C ABI. Six functions, one header, no dependency on us. A complete working driver is around two hundred lines, it compiles in one line, and you register it by path.

$ cc -O2 -shared -fPIC -I /path/to/cam_abi.h/dir my_driver.c -o libcam_acme.so # then name it in the config the hub already reads:"camctl": { "drivers": ["/opt/acme/libcam_acme.so"] }
The compile line as the driver runbook states it. Six entry points: reboot, get_info, set_enc, set_image, ptz, get_state.
Door two

Speak the native dialect

Answer the canonical vocabulary directly over REST and you need no driver at all. The dialect is self-describing, so your firmware advertises what it can do rather than us guessing.

$ curl -s http://reference-camera:8600/v1/helpCommands (POST /v1/<command>, JSON body, Authorization: Bearer <token>): help [/<cmd>] this index; /v1/help/<cmd> details one command (GET ok) login mint a session token (8 concurrent, 3600 s lease) logout void the calling token get_info identity: model, firmware, name get_state everything readable in one call: ptz caps + enc + image set_enc change bitrate_kbps / fps on one stream set_image day_night, back_light, anti_flicker, exposure, white_balance, rotation, mirroring (canonical values) ptz continuous move; the caller owns the press/release pair reboot reseed state, void tokens, drop RTSP sessions
The reference camera's own /v1/help, excerpted. There is a JSON form of the same index, so a driver can validate the surface at startup.

The reference camera is the test

We ship a synthetic camera that accepts only canonical vocabulary. It is a built-in lint: if your driver fails against the reference camera, you are still speaking vendor. Nothing to book, nothing to submit — you know before we do.

Why bother

Because the driver is yours and it keeps working. Vendor translation is isolated behind the ABI, so our releases do not become your releases. Terms for listing and certification are being settled now; the technical door is already open.

Start a driver conversation The camera API specification and the driver runbook are published documentation, not a partner download.