Open Source · Free · Self-Hosted
The Tournament Organizer
for Magic: the Gathering
Draft, Sealed, and Constructed — Swiss pairings, live timers, Hall of Fame, card-value tracking, and more. Built for groups that play together regularly.
Swiss Pairings Engine
Robust Swiss with cross-pod opponent avoidance. Handles intentional draws, custom seat orders, and odd player counts with auto byes.
Live Updates
Timers, pairings, and standings update in real time over WebSocket — no page reloads. Share via link or QR code for a display screen.
Hall of Fame
All-time org leaderboard with win rates, avg. points, and event wins tracked across every tournament. Individual player pages with per-opponent breakdowns.
Rare Pick
Record opened card values at the time of the draft. Top-three cards auto-assigned by standings; every win lands permanently in the player's Treasure Chest.
Webhooks
HMAC-signed events on pairings, round start/end, and pod completion. Multiple webhooks per org, no code changes needed — works great with Home Assistant or Discord.
REST API & MCP
Every UI action backed by an authenticated API. An MCP server wraps it for AI-agent use — manage tournaments directly from Claude Desktop or Claude Code.
Pricing
Self-host it free, or let me run it
The app is free and open source — self-host and you get everything, forever. Prefer not to run a server? The hosted instance has a free tier to try, and a subscription for groups that play regularly.
Free
€0
Hosted — try it, or a one-off small event.
Get started free- 1 tournament, 1 pod
- Single organizer
- All the core features
- Public results pages
- Data kept for 1 month
Tournament
€5 once
Hosted — a single, bigger event.
Get a pass- 1 tournament, unlimited pods
- 7-day event window
- Single organizer
- All the core features
- Data kept for 1 month
Most popular
Series
€30 / year
Hosted — or €3 / month. For regular groups.
Subscribe- Unlimited tournaments & pods
- Invite co-organizers
- Webhooks, exports & REST / MCP API
- Editable dates, no time limits
- Cumulative data retention
Self-hosted
€0 forever
Run it yourself. MIT-licensed.
How to self-host →- Everything in Series — unlimited
- No tiers, no limits, no paywalls
- Your data on your own server
- One Docker image + Postgres
- MIT licensed — fork it, change it
Hosted payments are handled by Stripe as merchant of record — applicable VAT is added at checkout, and you can cancel anytime (access stays through the period you've paid for). Paying for the hosted instance never gates the open-source app.
Compare all features
| Feature | Free | Tournament | Series | Self-hosted |
|---|---|---|---|---|
| Running events | ||||
| Tournaments | 1 | 1 per pass | Unlimited | Unlimited |
| Pods per tournament | 1 | Unlimited | Unlimited | Unlimited |
| Max event length | 7 days | 7 days | Unlimited | Unlimited |
| Editable dates | — | — | ✓ | ✓ |
| Co-organizers | — | — | ✓ | ✓ |
| Core features | ||||
| Swiss pairings & display mode | ✓ | ✓ | ✓ | ✓ |
| Standings & Gesamtwertung | ✓ | ✓ | ✓ | ✓ |
| Hall of Fame & player stats | ✓ | ✓ | ✓ | ✓ |
| Rare Pick & Treasure Chest | ✓ | ✓ | ✓ | ✓ |
| Public pages & player check-in | ✓ | ✓ | ✓ | ✓ |
| Integrations & data | ||||
| Webhooks | — | — | ✓ | ✓ |
| Spreadsheet & full data export | — | — | ✓ | ✓ |
| REST API & MCP server | — | — | ✓ | ✓ |
| Data retention | 1 month | 1 month | Cumulative | Forever |
Core structure
Organizations, Tournaments & Pods
Built for groups that play together repeatedly. An organization tracks all players and their stats across every event. A tournament can span multiple days and formats; each pod is an independent Swiss event with its own results.
- Players are org-wide — stats accumulate across all tournaments
- Rich-text tournament descriptions and stat breakdowns
- Pods support Draft, Sealed, Chaos Draft, Constructed, or Custom
- Team formats like 2HG supported
- Player accounts with self-service result submission and token ledger
- Finished tournaments export to XLSX — standings, points, rounds, and tokens
Swiss engine
Smart Pairings & Display Mode
First-round pairings are random (customizable) and seed the draft seating. Later rounds follow standard Swiss with a soft cross-pod avoidance layer — over a weekend, everyone tends to face everyone.
- Never repeat an opponent within the same pod
- Soft avoidance across other pods in the same tournament
- Round timer with audible chimes for draft and match time
- Display mode: share a link or QR code for a wall screen
- Drop players mid-event; byes handled automatically
- Seatings tab keeps round-1 opponents hidden until a deliberate Reveal
- On-demand side events auto-withdraw sign-ups once one fires; cancel a pod without corrupting stats
Card value tracking
Rare Pick & Treasure Chest
Record the cards opened from each draft alongside their market value. The top three cards are automatically assigned to the top three finishers — always adjustable. Every assigned card lives in that player's Treasure Chest permanently.
- Live € value from Scryfall at time of recording
- Auto-assign top-three by standings; easily overridden
- Treasure Chest aggregates all winnings across every event
- Fully optional — can be disabled per pod
Long-term tracking
Hall of Fame
Because the same group plays over and over, Limited Gauntlet accumulates meaningful all-time stats. See who wins the most, who scores the most points on average, and how each player matches up head-to-head against every opponent.
- Overall rating, win rate, and average match points
- Count of first-place finishes per event
- Individual player pages with per-opponent breakdown
- Per-tournament standings view
- Public links for sharing with friends
Self-hosted
Up and running in three steps
Ships as a single Docker image plus Postgres. No build step — pull from GHCR,
fill in your .env, and start. Migrations run automatically on startup.
Try the public demo first
Live instance with anonymized seed data, resets on a schedule.
URL: demo.limited-gauntlet.com
admin@demo.com / admin1234
Don't want to self-host? — app.limited-gauntlet.com
The hosted instance runs LimitedGauntlet for you. Sign in with Discord, start on the free tier, and upgrade to a one-time pass or a Series subscription whenever you need more. See pricing above. Questions? public@limited-gauntlet.com.
AI Disclaimer
This tool is completely vibe-coded by Claude Code — I only provide the specs for what should be built and test it on my own instance as thoroughly as possible. It has been scanned with Codex Security. I plan to support and enhance it as long as it's in active use, but my support capabilities are limited. Use at your own risk — bug reports and suggestions are welcome in the GitHub issue tracker.