Skip to main content

Features & Use Cases

DeckBridge turns a USB Stream Deck into a network device the Elgato app can use over WiFi. This page covers what it does, who it's for, the permissions it asks for, and exactly which files and ports it touches.

Use a budget deck with the Elgato app

DeckBridge lets the official Elgato Stream Deck app drive cheap, non-Elgato decks — Mirabox, Ajazz, and similar 15-key (3×5) boards — on the same PC that runs the app. The app sees a regular Network device at localhost; the deck behaves like Elgato hardware.

DeckBridge Starting… Waiting for USB… Mirabox detected Streaming to Elgato Network dock · CORA :5343 Elgato Stream DeckDevices › Add a network deviceNetwork Stream DeckIP localhostPair
1 · Run DeckBridge2 · Plug the Stream Deck into USB3 · DeckBridge detects the deck4 · Pair it in Elgato — Network device · localhost
  1. Run DeckBridge on the PC.
  2. Plug the Stream Deck into USB.
  3. DeckBridge detects it and advertises it on the network.
  4. Open the Elgato app and pair it as a Network device — IP localhost.

Feature overview

  • Network Dock emulation — speaks the Elgato CORA protocol on TCP and advertises over mDNS as _elg._tcp ("Network Stream Deck"). The app discovers it like real Elgato hardware.
  • Works with non-Elgato decks — a Mirabox 293V3/Ajazz, 293S, or K1 Pro presents itself to the app as an Elgato model the app already knows, so nothing changes app-side.
  • Per-device image pipeline — resizes, rotates, and (for the K1 Pro) re-encodes every button image to the device's native format via a Rust native library, with a cache to skip repeat work.
  • Non-blocking by design — USB HID and the 50–200 ms image transforms run on a separate worker thread, so the network ACK loop and web UI never stall.
  • Live web UIhttp://localhost:3000 shows the key grid and a log feed in real time.
  • System tray + diagnostics — installer builds add a tray icon (gray / yellow / green status) and a /requirements self-check page.
  • Standalone binary — one <5 MB file built on txiki.js; no Node.js. The native libraries are embedded and auto-extract on first run.

Use cases

Streaming PC

Laptop / mini-PC

WiFi / LAN

USB deck

DeckBridge

Elgato Stream Deck app

  • Use a budget deck with the official app — drive a Mirabox / Ajazz / K1 Pro from the Elgato Stream Deck app as if it were Elgato hardware.
  • Put the deck on another computer — plug the deck into a laptop or mini-PC, run DeckBridge there, and control the Elgato app on your streaming PC across the LAN. The deck no longer has to sit at the main machine.
  • Skip the Network Dock — get network-dock behaviour for hobby setups without buying the Elgato Network Dock.
  • Use a real Stream Deck wirelessly — a Stream Deck Mini or MK.2 works the same way, over WiFi instead of a cable.
  • Bitfocus Companion — Companion also speaks the dock protocol and discovers DeckBridge the same way.
⚠ Hobby use
DeckBridge is for personal and hobby use, and does not replace the Elgato Network Dock. See the Introduction for the full disclaimer.

Permissions

DeckBridge needs a few OS permissions, each requested the first time it's used. No admin / root rights are required.

PermissionPlatformWhy
Input MonitoringmacOSReading HID reports (key presses) from the deck. Grant it to the app or terminal running DeckBridge, then restart it.
Local NetworkmacOS 15+Advertising over Bonjour / mDNS and serving the CORA ports on the LAN. macOS may prompt on first run.
Firewall allowmacOS / WindowsInbound TCP on 5343 / 5344 so the Elgato app can connect. Allow it if your firewall prompts.

Requirements

The /requirements page (tray → Check Requirements) verifies each of these at runtime:

RequirementmacOSLinuxWindows
libhidapibundled / brew install hidapisudo apt install libhidapi-devbundled
deckbridge-native (Rust lib)bundledbundledbundled
mDNSBonjour (built in)avahi-daemon runningbuilt in (Win10 1803+)
Tray helperbundled (installer builds)bundled
Free TCP ports5343 / 5344 must be freesamesame

Packaged releases embed libhidapi and the native library, so a source build is the only case that needs a system libhidapi installed.

Files, ports & data

DeckBridge stores no personal data and sends no telemetry. It reads and writes only what it needs to run.

Reads

  • Its own embedded libraries (libhidapi, deckbridge-native) from inside the binary.
  • The system libhidapi (source builds, or when overridden via HIDAPI_LIB).
  • A handful of environment variables (below). There is no config file.

Writes

  • Native library cache — extracts the embedded libs once per version to:

    • macOS: ~/Library/Caches/deckbridge/native-<build-hash>/
    • Linux: $XDG_CACHE_HOME/deckbridge/ (or ~/.cache/deckbridge/)
    • fallback: a temp directory if the cache root isn't writable

    Old native-<hash> folders from previous versions are cleaned up automatically.

  • Debug image dumps — only when DECKBRIDGE_DUMP_DIR / DECKBRIDGE_RAW_DUMP_DIR are set. Off by default.

Network ports

PortBindPurpose
53430.0.0.0 (LAN)CORA main server — the Elgato app connects here
53440.0.0.0 (LAN)CORA child server — image / data channel
3000127.0.0.1 onlyWeb UI
mDNS _elg._tcpLANService discovery ("Network Stream Deck")

Set DECKBRIDGE_BIND=127.0.0.1 to restrict the CORA ports to the local machine. The web UI is always localhost-only.

Limitations

  • One deck at a time — a single connected device is bridged; multiple simultaneous devices are not yet supported (planned).
  • Keys only — no dials, encoders, touchscreens, or LCD strips (Stream Deck +/Plus, Neo, and similar are out of scope).
  • Fixed ports — CORA is hard-wired to 5343 / 5344; conflicts with a real Elgato Network Dock or a second DeckBridge instance on the same machine.
  • No auth or encryption — the CORA ports trust the LAN. Use DECKBRIDGE_BIND=127.0.0.1 to keep them local.
  • Hobby use — not a reliability or support replacement for the Elgato Network Dock.

Environment variables

VariableEffect
DECKBRIDGE_BINDBind address for the CORA servers (default 0.0.0.0)
HIDAPI_LIBPath to a specific libhidapi
DECKBRIDGE_NATIVE_LIBPath to the deckbridge-native cdylib
DECKBRIDGE_TRAY_BINPath to the tray helper binary
DECKBRIDGE_OPENAuto-open the web UI in a browser on start
DECKBRIDGE_MOCKRun with a mock device (no hardware)
DECKBRIDGE_DUMP_DIRWrite each transformed device image here (debug)
DECKBRIDGE_RAW_DUMP_DIRWrite paired raw + transformed images here (debug)