Card lookup · Deck analysis · Live run tracking · Analytics for Slay the Spire 2
A local-first intelligence dashboard for Slay the Spire 2 — card/relic/enemy lookup, deck analysis, live run tracking, run history, analytics, community meta, and strategy guides. No cloud, no accounts, no telemetry. Runs entirely on your machine.
- Card Browser — All cards across 5 characters with filters by character, type, rarity, cost, and keyword. Paginated (30 per page).
- Relic & Potion Browser — Browse and filter all relics and potions
- Enemy Guides — Boss patterns, elite strategies, and encounter tips
- Event Guide — Optimal choices for every event
- Strategy Guides — Per-character archetypes, key cards, key relics, and general tips
- Live Run Tracker — Real-time dashboard via Server-Sent Events (SSE) — no page reloads. Shows deck, relics, potions, HP, floor history, counter-cards, synergy hints, danger alerts, encounters won, and events encountered.
- Deck Analyzer — Select cards to get archetype detection, synergy analysis, weakness identification, and suggestions. Save/load decks to localStorage.
- Run History — Floor-by-floor breakdown with HP tracking, card picks, cards offered (what you rejected), potions gained, monsters fought, gold per floor, and damage taken. Visual HP timeline chart. Import/export runs as JSON or standalone HTML.
- Run Comparison — Side-by-side comparison of two runs with deck diff, relic diff, and stat comparison
- Collections — Track card/relic discovery progress with ascension filtering
- Epochs — Track all 49 epoch unlock requirements, see what's locked/unlocked, filter by category and character
- Co-op Support — Track any player in a multiplayer run via
?player=N
- Analytics — Aggregate stats: per-character win rates, floor survival, card pick rates, HP curves, death floor heatmaps, and causes of death. Filter by ascension level, game version, or time range. Boss matchup intelligence, per-character relic tiers, and card pick heatmaps.
- Personal Records — Hall of fame with fastest win, highest ascension, biggest/smallest deck, flawless bosses, per-character breakdowns, and notable achievements
- Per-Act Breakdown — Damage, card picks, deaths, and gold tracked separately for Act 1/2/3
- Combat Efficiency — Average turns per fight type with scaling trend analysis and turns-vs-damage correlation
- Archetype Detection — Auto-classify decks into archetypes (Strength Scaling, Poison, etc.) with per-archetype win rates
- Card Pick Timing — When you pick cards: early (floors 1-10), mid (11-25), or late (26+)
- Encounter Danger Ratings — Danger grades (Low/Medium/High/Extreme) for every encounter based on your damage history
- Gold Economy — Track gold earned, gold at death, peak gold, and win-vs-loss gold comparison
- Co-op Analytics — Compare multiplayer vs solo win rates (shown only when co-op runs exist)
- Healing Sources — Breakdown of HP recovery by source: rest sites, combat, and passive/relic healing
- Boss Matchups — Win rate, average damage, and fight count per boss, broken down by character
- Relic Tiers by Character — Top relics by win rate for each character
- Card Pick Heatmap — Pick rate vs win rate grid — green means pick and win, red means pick and lose
- Card Regret Analysis — Cards you pick in losses but skip in wins, helping identify bad picks
- Win Streak Tracker — Prominent current win streak display on the home page
- Next Epoch Suggestions — Upcoming epochs you haven't unlocked yet with requirements and rewards
- Community Meta — Tier lists and strategy posts from Reddit and Steam, community-voted card tiers, aggregate player stats with import/export
- Global Search — Fuzzy search with "Did you mean?" suggestions across all entities
- Keyboard Shortcuts — Press
?for shortcut help, navigate pages with single keys,/to search - Dark/Light Theme — Dark gothic fantasy aesthetic (Cinzel serif font, warm gold/crimson palette) with a warm parchment light mode toggle
- Mod Support — Load custom cards, relics, and enemies from JSON files in a mods directory
- Content Creator API — Paginated JSON endpoints with CSV export and optional API key bypass
- User Guide — In-app guide covering setup, features, and troubleshooting
Download Spirescope for Windows — extract the zip, open the Spirescope folder, double-click Spirescope.exe. That's it.
pip install -e .
spirescopeOr run directly:
python -m sts2Opens your browser at http://127.0.0.1:8000.
pip install -e ".[dev]"
python build.pyOutput: dist/Spirescope/Spirescope.exe — zip the entire dist/Spirescope/ folder and share it.
docker build -t spirescope .
docker run -p 8000:8000 spirescopespirescope # Start the web dashboard (default)
spirescope serve # Same as above
spirescope serve --no-browser # Start without opening browser
spirescope update # Fetch latest data from the wiki + saves
spirescope update --save-only # Discover from saves only (no network)
spirescope community # Fetch community data from Reddit and Steam
spirescope export # Export aggregate stats to JSON file
spirescope reset-stats # Delete aggregate stats file
spirescope sync-up # Upload local aggregate stats to sync service
spirescope sync-down # Download and merge community stats from sync service
spirescope --help # Show usage
spirescope --version # Show version| Variable | Description | Default |
|---|---|---|
STS2_SAVE_DIR |
Path to your STS2 save directory | Auto-detected |
STS2_GAME_DIR |
Path to STS2 game install | Auto-detected |
STS2_MODS_DIR |
Path to mods directory (JSON files) | sts2/data/mods/ |
STS2_HOST |
Server bind address | 127.0.0.1 |
STS2_PORT |
Server port | 8000 |
STS2_COMMUNITY_SOURCES |
Community sources: all, reddit, steam |
all |
STS2_SYNC_URL |
Sync service URL (opt-in) | Disabled |
STS2_SYNC_KEY |
API key for sync service | None |
SPIRESCOPE_API_KEY |
Optional API key for rate limit bypass | None |
SPIRESCOPE_ADMIN_TOKEN |
Token for /api/reload and /api/reset/stats |
Auto-generated |
STS2_CORS_ORIGINS |
Comma-separated CORS allowed origins | Localhost only |
- Windows:
%APPDATA%\SlayTheSpire2\steam\<steam_id>\profile1\saves\ - macOS:
~/Library/Application Support/SlayTheSpire2/steam/<steam_id>/profile1/saves/ - Linux:
~/.local/share/SlayTheSpire2/steam/<steam_id>/profile1/saves/
| Endpoint | Method | Description |
|---|---|---|
/api/search?q= |
GET | Search all entities |
/api/cards/{card_id} |
GET | Card details + stats (JSON) |
/api/runs |
GET | Run history (JSON, filterable by character/result) |
/api/analytics |
GET | Aggregate analytics (JSON) |
/api/live?player=0 |
GET | Current run state (JSON) |
/api/live/stream?player=0 |
GET | SSE stream of live run updates |
/api/export/stats |
GET | Export aggregate player stats (JSON) |
/api/export/runs |
GET | Export run history (CSV) |
/api/import/stats |
POST | Import/merge aggregate stats |
/api/reload |
POST | Hot-reload knowledge base (requires X-Admin-Token header) |
/api/reset/stats |
POST | Reset aggregate stats (requires X-Admin-Token header) |
/health |
GET | Health check for monitors |
/docs |
GET | Interactive API documentation (Swagger UI) |
- CSRF protection on all POST forms
- Content-Security-Policy, X-Frame-Options, Referrer-Policy, X-Content-Type-Options
- Per-IP rate limiting (60 req/min) with automatic memory cleanup
- Admin-token-gated reload endpoint (constant-time comparison)
- SSE connection cap (10 concurrent) with 5-minute idle timeout
- Jinja2 auto-escaping on all user-reflected input
- Log injection prevention (control character sanitization)
- Request body size limits on deck analysis and stats import
- Input validation on all query parameters
- Anti-manipulation caps on aggregate stats merging
sts2/
__main__.py # CLI entry point
app.py # FastAPI app, middleware, security headers
routes.py # All route handlers
analytics.py # Run analytics computation
community/ # Multi-source community data (Reddit + Steam)
__init__.py # Orchestrator + re-exports
_types.py # Shared types, extraction functions
_merge.py # Weighted merge logic
reddit.py # Reddit data fetcher (public JSON API)
steam.py # Steam data fetcher (reviews, guides, discussions)
aggregate.py # Aggregate stats computation and merging
config.py # Auto-detected paths and settings
fetcher.py # Data fetcher (wiki + save file discovery)
knowledge.py # Search, filter, synergy, and deck analysis engine
logparser.py # Game log tailer for live run tracking
models.py # Pydantic models for all game entities
saves.py # Save file parser (progress + run history + co-op)
sync.py # Aggregate sync client (upload/download)
updater.py # Auto-update checker
watcher.py # File watcher with debounce + polling fallback
data/ # JSON game data + mods
templates/ # Jinja2 HTML templates (22 templates)
static/ # CSS, fonts (Cinzel), images, JS
tests/ # 613 tests (pytest + pytest-asyncio)
- Python 3.11+
- Slay the Spire 2 (for save file features)
SpireScope is a fan-made project and is not affiliated with, endorsed by, or associated with Mega Crit Games. Slay the Spire and Slay the Spire 2 are trademarks of Mega Crit Games. All game content and materials referenced within this tool are the property of their respective owners.
MIT

