Your Axis camera on physical keys.

PTZ presets, guarded tours, CamStreamer streams, CamOverlay widgets, CamSwitcher views and camera optics — on a Stream Deck, straight from the camera. Every key repaints itself to show what's actually on air.

Windows 10+ · macOS 12+ · Stream Deck 6.9+. Free and open source (MIT). No cloud, no extra software — just the camera's IP and login.

Example layouts on Stream Deck XL, MK.2 and Mini: PTZ presets, a running guarded tour, a live stream, CamSwitcher views, CamOverlay widgets and camera optics
Six actions

Drag what you need — keys that know their state.

Each action's Property Inspector reads the live catalog from the camera (presets, streams, widgets, views) and offers a dropdown — you never type a CGI URL. Stream and switcher keys poll the camera and repaint themselves.

PTZ PresetGo to a server preset (or Home). Lit as a radio group per camera and view area.
AXIS Guarded TourStart / stop a Guarded Tour; shares the PTZ radio group with presets, reflects the running state.
CamStreamer StreamStart / stop a stream. Shows “Starting…”, then a solid red tally dot while live — broadcast convention, so you always know your output state.
CamOverlay WidgetShow / hide a CamOverlay Custom Graphic; key lit while the widget is visible.
CamSwitcher SourceSwitch to a CamSwitcher view; the view on air stays bright and the others dim.
Cam ControlCamera optics — one-push autofocus, defog (on/off/toggle), timed wiper with an on-key countdown, IR-cut filter (on/off/auto). Fixed and PTZ cameras via automatic endpoint fallback.
Key art for every action: presets, Home, guarded tours, streams, CamOverlay widgets, CamSwitcher views and camera optics, configured and idle

Each key wears its own art: the accent bar and glyph say which action it is, the name comes from the camera (or your own Label), and the bottom line carries the state — live, on air, shown, running, the PTZ channel. A stream on air pulses a red tally dot; anything idle sits dimmed.

How it works

Straight to the camera.

No cloud and no middle-man service — the plugin speaks the camera's own HTTP APIs over digest authentication on your LAN. The camera is the single source of truth.

Stream Deck key ─▶ plugin (Node, in the Stream Deck app) ─ HTTP digest ─▶ Axis camera ├─ VAPIX PTZ /axis-cgi/com/ptz.cgi ├─ CamStreamer /local/camstreamer/… ├─ CamOverlay /local/camoverlay/api/… └─ CamSwitcher /local/camswitcher/…

Credentials live in Stream Deck's settings; a per-key override lets one key talk to a different camera. Commands don't retry on a 401, so a wrong password won't trip the camera's auth firewall. Works on AXIS OS 10 through 12.

Every deck size

Mini, MK.2, XL — build your own layout.

All six are keypad actions, so they work on a Stream Deck Mini, MK.2, XL, Neo and the keys of a Stream Deck +. The plugin ships actions only — no profiles are installed and nothing is overwritten; the layouts below are examples to copy.

Example Stream Deck Mini layout: two presets, Home, a live stream, the on-air view and autofocusExample Stream Deck XL layout: a row of presets and tours, streams, views, widgets and camera optics
Install

Three steps.

1

Download and double-click

com.4xsdev.axis-gateway-kofi.streamDeckPlugin — Stream Deck installs the Camera Deck for Axis & CamStreamer action group. No profile is added — your existing layouts stay as they are.

2

Enter the camera

Set the camera IP, user and password once in the plugin's settings (digest auth, LAN). CamStreamer / CamOverlay / CamSwitcher actions need those ACAPs installed on the camera.

3

Add keys

Drag an action onto a key and pick a preset, stream, widget or view from the dropdown — read live from the camera. Stream and view keys then show their state.

More from 4xs.dev

Other Stream Deck plugins.

Physical keys for the tools you already use. All free and open source.