Skip to content

Setup

  • Node.js 24 or newer
  • pnpm (install with npm install -g pnpm)
  • Windows (required for the native addon and iRacing integration)
  • Stream Deck software 7.1 or newer — required to run the Elgato plugin
  • HotSpot StreamDock (or another QT5 SVG Tiny 1.2 compatible Mirabox host) — only required if you’re developing or testing the Mirabox plugin
Terminal window
# Clone the repository
git clone https://github.com/niklam/iracedeck.git
cd iracedeck
# Install dependencies
pnpm install
# Build all packages
pnpm build

After the initial install and build, link the plugin to whichever host(s) you’re developing against.

Terminal window
# Link the built plugin to the Stream Deck software
pnpm link:stream-deck
# Watch mode — auto-rebuilds on save
pnpm watch:stream-deck

Restart the Stream Deck software. The plugin appears in the action list as iRaceDeck.

Terminal window
# Link the built plugin to the Mirabox host
pnpm link:mirabox
# Watch mode for the Mirabox plugin (no root-level shortcut yet)
pnpm --filter @iracedeck/iracing-plugin-mirabox run watch

On Windows, link:mirabox defaults to the standard HotSpot StreamDock install path (%APPDATA%\HotSpot\StreamDock\plugins). If you’re using a different host (e.g. VSD Craft), point MIRABOX_PLUGINS_DIR at its plugins directory in .env.local (see below).

Some dev scripts read per-developer settings from .env.local at the repo root. The file is gitignored and never committed. Copy .env.local.example as a starting point:

Terminal window
cp .env.local.example .env.local

Keys currently supported:

KeyUsed byPurpose
MIRABOX_PLUGINS_DIRpnpm link:mirabox / unlink:mirabox / relink:miraboxPath to your Mirabox host’s plugins directory. Optional on Windows when using HotSpot StreamDock — the scripts default to %APPDATA%\HotSpot\StreamDock\plugins. Set this only to override (e.g. C:\Users\you\AppData\Roaming\VSD Craft\Plugins).

Both Stream Deck and Mirabox host apps cache plugin metadata aggressively. If your changes affect manifest.json, Property Inspector templates, static icons, or the action registration layer, the reliable flow is:

  1. Quit the host software from the task bar (right-click the tray icon → Quit / Exit). Closing the window is not enough — the app keeps running in the background.
  2. Run pnpm build (or let your watch process rebuild automatically).
  3. Start the host software again.

For pure action-code edits, the watch process plus the host’s built-in refresh usually suffices, but when in doubt, run the full stop–build–start cycle.

CommandDescription
pnpm buildBuild all packages
pnpm build:stream-deckBuild only the Stream Deck plugin
pnpm watch:stream-deckWatch mode — rebuild on file changes (Stream Deck)
pnpm --filter @iracedeck/iracing-plugin-mirabox run watchWatch mode for the Mirabox plugin
pnpm link:stream-deckRegister the plugin with Stream Deck
pnpm unlink:stream-deckUnregister the Stream Deck plugin
pnpm relink:stream-deckUnlink + link Stream Deck (useful when switching branches)
pnpm link:miraboxRegister the plugin with the Mirabox host (uses MIRABOX_PLUGINS_DIR if set, otherwise the Windows HotSpot StreamDock default)
pnpm unlink:miraboxUnregister the Mirabox plugin
pnpm relink:miraboxUnlink + link Mirabox (useful when switching branches)
pnpm switch-test-envInstall + build + relink for both platforms
pnpm switch-test-env:stream-deckInstall + build + relink only Stream Deck
pnpm switch-test-env:miraboxInstall + build + relink only Mirabox
pnpm testRun all tests