A headless fantasy football operator. Postgres holds the league and enforces the rules — conserved FAAB, one scoring book, no UI required. Migrate a league in once, then run it from a browser, a terminal, or an agent that's never seen this repo before.
git clone https://github.com/ryanwaits/open-leagues.git
cd open-leagues
docker compose up -dOpen http://YOUR_HOST:8080 → /new. That's a running league. Env vars,
the Vercel alternative, and running without Docker:
docs/self-host.md.
Any signed-in member mints their own token from /account — no commish
gate. Any client can migrate a league in and run it over MCP too:
codex mcp add open-leagues --url https://YOUR_HOST/api/mcp --bearer-token-env-var OPENLEAGUES_TOKEN
codex "migrate my Sleeper league in, id 1181923847562"Walkthrough with real output, the local/stdio variant, and Claude/ChatGPT connector setup: Connecting an agent. Migrating from Sleeper, ESPN, or a pasted recap in more depth: docs/migrate.md.
Four playbooks (migrate, lineup, book, week) live under
src/lib/agent/skills/ — copy or symlink into a host skills dir
(~/.codex/skills/, ~/.claude/skills/; already in .grok/skills/ here).
- Migrating your league — Sleeper, ESPN, or a pasted recap, source by source
- Connecting an agent — a real MCP session, end to end, with a working example
- Self-hosting in depth — env vars, Vercel, running without Docker, the tick clock, backups
- Notifications (Web Push)
- Google sign-in
- Development — test/lint/typecheck, the book's QA script
MIT.


