Skip to content

Running the Service

Sireno Deck runs as a background daemon that connects to your Stream Deck and serves the frontend.

Run in the foreground (development mode):

Terminal window
sireno run [options]

Options:

  • --config <path> — Path to config.yml
  • --port <number> — Local server port (0 = random)
  • --emulator — Run with emulator instead of real device
  • --dev — Enable HMR for development
  • --device-model <model> — Emulator device model (mk2, plus, mini, xl)

Example:

Terminal window
# Run with emulator
sireno run --emulator
# Run with custom device
sireno run --emulator --device-model xl
# Development with hot reload
sireno run --dev --emulator

Install and start the daemon:

Terminal window
sireno start [options]

Options:

  • --config <path> — Path to config.yml
  • --port <number> — Local server port
  • --emulator — Run in emulator mode
  • --device-model <model> — Device model
  • --http-port <number> — HTTP server port (default: 3939)
  • --system — Install as system service (requires root)
  • --logs — Follow logs after starting

Example:

Terminal window
# Start in background
sireno start
# Start and follow logs
sireno start --logs
# Start as system service
sudo sireno start --system

Stop the running daemon:

Terminal window
sireno stop

Check daemon status:

Terminal window
sireno status

Output shows:

  • Running/stopped state
  • Daemon PID
  • Child process IDs
  • Token info

Restart the daemon:

Terminal window
sireno restart [options]

Options:

  • --logs — Follow logs after restart

Send SIGUSR1 for in-place reload (preserves runtime state):

Terminal window
sireno reload [options]

Options:

  • --logs — Follow logs after reload

Update the config path the daemon uses:

Terminal window
sireno update-config --config <path> [options]

Options:

  • --reload — Use in-place reload instead of restart
  • --logs — Follow logs after update

Tail the service log:

Terminal window
sireno logs [options]

Options:

  • --follow / -f — Follow log output (default: true)
  • --lines / -n — Initial lines to show (default: 50)

All commands support:

  • --verbose / -v — Enable verbose debug logging
  • --dev-mode — Enable developer mode logging (info level)
  • --quiet / -q — Suppress all logs and the startup banner (silent level)
  • --log-level <level> — Override log level (trace, debug, info, warn, error, fatal, silent, none)
  • --json — Emit logs as JSON

By default, the CLI only logs errors. Use --dev-mode for normal operational output, --verbose for debug output, or --log-level for full control. Use --quiet (or --log-level silent / --log-level none) to silence logs and suppress the startup banner.

When you run sireno start, the CLI prints a structured banner to stderr summarizing the startup state:

┌ Starting SirenoDeck
◇ Device: Emulator (mk2)
│ [✓ keystrokes] [✓ clipboard] [✗ notifications — notify-send]
│ [✓ active-win] [✓ media] [✓ exec] [✗ http — unreachable]
└ ✓ SirenoDeck started

The banner shows the detected device (or emulator model), a horizontal list of OS features with availability status, and a completion line once the daemon is serving. It is independent of the log level and is suppressed by --quiet, --log-level silent, --log-level none, or non-interactive output (pipes, CI).

The daemon writes runtime files to:

  • Linux: $XDG_RUNTIME_DIR or $TMPDIR
  • macOS: ~/Library/Application Support/sireno-deck
  • Windows: $LOCALAPPDATA/sireno-deck or $TMPDIR

Files created:

  • sireno-deck.pid — Daemon process ID
  • sireno-deck.token — WebSocket authentication token
  • sireno-deck.children.json — Child process IDs
  • sireno-deck.config — Config file path
  • sireno-deck.flags.json — Runtime flags

User-level:

Terminal window
systemctl --user status sireno-deck.service

System-level (requires root):

Terminal window
sudo systemctl status sireno-deck.service
Terminal window
launchctl list | grep sireno

See Troubleshooting for common issues.