Deploy Superpowers brainstorm server as always-on systemd service (not per-session)

Decision

Deployed Superpowers visual brainstorm companion (server.cjs from plugin cache v5.0.5) as a persistent systemd service brainstorm.service bound to 127.0.0.1:17777 with persistent screen_dir at /root/aj-workspace/.brainstorm/screens/. Auto-cleansed by session-close Phase 2 (>24h) and cron at 04:00 daily (>7d).

Rationale

Every substantial dev session begins with brainstorming (per brainstorming-gate Hookify rule + Superpowers v5.0.5 pipeline mandate). Starting a fresh server per session adds latency and complexity, and every session leaves the same systemd restart work. Persistent service provides single stable URL, no port randomization, predictable screen_dir for subagents. The workspace is fundamentally for development work — treating the brainstorm server as infrastructure (like Traefik, Redis) rather than tooling aligns with the “core system architect” framing.

Alternatives Rejected

  1. Per-session spawn (original Superpowers design, start-server.sh invoked by brainstorming skill) — rejected: adds latency, lifecycle complexity, random ports prevent stable bookmarks. 2. Docker container — rejected: overkill for a 200-line Node script, adds image/volume/network overhead without benefit. 3. Traefik-exposed public URL — deferred: adds auth complexity (the server accepts UI selections without token), local 127.0.0.1 bind is sufficient for solo developer.

Outcome

Pending