Troubleshooting
Solutions to common issues.
Installation Issues
Section titled “Installation Issues”Command not found
Section titled “Command not found”# Check installationwhich sireno
# Reinstallpnpm install -g @sirenodeck/sirenodeckPermission denied
Section titled “Permission denied”# Use sudo (not recommended) or fix npm prefixnpm config set prefix ~/.npm-globalexport PATH="$PATH:$HOME/.npm-global/bin"Daemon Issues
Section titled “Daemon Issues”Daemon won’t start
Section titled “Daemon won’t start”# Check statussireno status
# View logssireno logs
# Stop and restartsireno stopsireno startDaemon hangs at startup with no output
Section titled “Daemon hangs at startup with no output”At startup Sireno asks each package manager on your PATH — pnpm, npm and
yarn — where it keeps its globally installed packages, so that an addon or
theme installed globally can be found. A package manager that never answers
used to stop startup dead: no log line, no port, no keys lit.
Each of those questions now has a ten-second deadline. A manager that misses it is killed and startup carries on without it, leaving a warning in the log:
sireno logs | grep "did not answer"Globally installed addons and themes from that manager will not resolve, so fix the manager itself — checking that it answers at all is the quickest test:
pnpm root --globalIf the command hangs, or spawns process after process, your package manager install is broken rather than your config. On a slow machine, or the first time Corepack has to prepare a manager, ten seconds can genuinely be too short:
SIRENO_PACKAGE_MANAGER_TIMEOUT_MS=30000 sireno startThese probes never install anything. A manager that is absent, or that declines to answer, is skipped in silence — only the deadline is reported.
Port already in use
Section titled “Port already in use”# Check what's using the portlsof -i :3939
# Kill the processkill <PID>“another sirenodeck daemon is already running”
Section titled ““another sirenodeck daemon is already running””Only one daemon may run at a time. It holds a lock socket in its runtime directory for as long as it lives, and a second daemon refuses to start rather than fight it for the ports:
another sirenodeck daemon is already running (pid 4242) — stop it with `sireno stop`The lock belongs to the kernel, not to a file Sireno maintains, so it is
released the moment the holder dies — including a kill -9, a crash or a power
cut. A leftover lock socket from a daemon that died is detected and cleared on
the next start; there is no stale-lock timeout to wait out.
If the message names a pid that is genuinely gone, that is worth reporting. Check first, since the usual explanation is a daemon you forgot was running:
sireno statusps -p <pid>Until this lock existed, a second daemon could start beside the first whenever the pid file went missing or a liveness check misread a running daemon as dead. Both then bound the same ports, each reaped the other’s children, and the deck behaved as though it were fighting itself — because it was.
Sireno says a port is held by “a process that is NOT a sirenodeck child”
Section titled “Sireno says a port is held by “a process that is NOT a sirenodeck child””On macOS this used to be reported for Sireno’s own frontend, because the checks
that identify our processes read /proc, which macOS does not have. Every
check therefore answered “not ours” and startup left its own orphans running.
They now fall back to ps.
If you still see this message, the holder really is someone else’s, and Sireno deliberately leaves it alone. Find out whose it is before killing anything:
lsof -nP -iTCP:5180 -sTCP:LISTENDaemon crashes on startup
Section titled “Daemon crashes on startup”# Run in foreground for debuggingsireno run --verboseConfiguration Issues
Section titled “Configuration Issues”Config not found
Section titled “Config not found”# Check config discoverysireno run --config /path/to/config.ymlInvalid config
Section titled “Invalid config”# Validate YAML syntax# Sireno will show validation errors on startupDevice Issues
Section titled “Device Issues”No device found
Section titled “No device found”- Ensure Stream Deck is connected
- Try a different USB port
- Use
--emulatorfor testing
Device not responding
Section titled “Device not responding”# Restart the daemonsireno restartEmulator Issues
Section titled “Emulator Issues”Emulator won’t load
Section titled “Emulator won’t load”# Check portslsof -i :52938
# Clear cacherm -rf ~/.cache/sireno-deckAddon Issues
Section titled “Addon Issues”Addon not loading
Section titled “Addon not loading”- Check addon path is correct
- Verify
sirenodeck.jsonexists - Check for missing dependencies
Addon causing crashes
Section titled “Addon causing crashes”# Disable addon in config# Restart daemonPerformance Issues
Section titled “Performance Issues”Slow response
Section titled “Slow response”- Check system resources
- Reduce number of active pollers
- Simplify button configurations
High CPU usage
Section titled “High CPU usage”- Check addon poll intervals
- Review system-status metrics
- Disable unused addons
Getting Help
Section titled “Getting Help”- Check GitHub Issues
- Enable verbose logging:
sireno run --verbose - Collect logs:
sireno logs > debug.log