🐼 LiChessTourneyBots

Weak Lichess bots for unrated kids' tournaments

🐼 How this works read me first · ~15 min setup, once

This app puts friendly, deliberately weak chess bots into your Lichess tournaments so kids get winnable games and build confidence. A few things to understand up front:

  1. Each bot is its own Lichess account. Lichess only lets a special "BOT" account play through an app like this — so you'll make 6 free accounts (one per bot). You do this once; after that, reuse them forever.
  2. You give this app permission to play as each bot by pasting in a "token" (a password just for apps). Buttons here open the right Lichess page for you.
  3. The tournament must be an Arena with "bots allowed" turned on. The finder below lists yours, or step ① shows exactly how to make one.
  4. This browser tab is the engine. When you click Deploy, the bots join and start playing. Keep the tab open during the tournament; close it and they stop. Nothing runs on a server.
💡 First time? Just go top to bottom: ① pick a tournament → ② make the 6 accounts & paste tokens → ③ flip them to BOT (once) → ④ Deploy. Each step has a “Show me exactly how” you can expand.

⚖️ Lichess Terms of Service & Fair Play — please read

This app plays moves with a program. On Lichess that is only allowed through dedicated, clearly-marked BOT accounts — never on a human account. Using this responsibly means following Lichess's rules:

Full rules: Terms of Service · Fair Play · Welcome Lichess Bots · API support (Discord #lichess-api-support). You are responsible for how you use these bots.

① Pick your tournament

⚠️ Must be an Arena with bots allowed. Bots are supported in Arenas & Team Battles — not Swiss.
Show me exactly how to make a bot-friendly Arena
  1. Go to lichess.org/tournament/new (log in as yourself).
  2. Pick Arena (the default). Bots are only allowed in Arenas & Team Battles, not Swiss.
  3. Set it Casual (unrated) so kids' ratings are safe. Use a calm time control like 10+0 or 5+3 so the scripted bots can actually finish their famous game (very fast clocks make them flag).
  4. Open the advanced options and turn ON the “Allow bots” toggle. (If you don't see it, double-check you're on Arena, not Swiss.)
  5. To keep it private, add a “Password” and share it with your group — then put that same password in the box on the left. This is the easiest option.
  6. Create it. Then either use the 🔎 finder above, or copy the code from the URL lichess.org/tournament/abcd1234 into the box.
⚠️ Avoid a team-only tournament for the bots. A team Arena requires every player — including each bot — to be a member of that team, and ChessPanda is a closed team, so the bots can't self-join (you'd have to approve all 6 by hand). A password-protected public Arena needs no team membership — just the password. Use that.

💡 Why Casual + bots allowed? Bots can only join when the organizer permits it, and casual means a kid losing to (or beating!) a bot never moves their real rating.

② Your bot squad

Comes pre-loaded with 6 stupid bots. For each: pick how it plays (recipe), create a Lichess account with the suggested username, click Get token (opens Lichess pre-set with the right permission), copy it and paste it in. Add or remove bots however you like. 🎯

➕ Add another bot:
Show me exactly how to set up one bot
  1. Click the Create a new Lichess account link on the bot. Use the suggested username (or your own). Finish the email verification.
  2. Don't play any games on that account — Lichess refuses to flip an account to BOT if it has played. Brand-new = perfect.
  3. Still logged in as that bot account, click Get token →. It opens a Lichess page with the right permission (bot:play) already ticked — that just means "this app may play games as me." Click Create.
  4. Copy the token (starts with lip_…) and paste it into that bot's box. Click Check — it should show the account name and “not BOT” (that's expected until step ③).
  5. Repeat for each bot. Tokens are saved in this browser only, so you won't re-paste next time.

💡 A token is like an app-only password. If one ever leaks, you can delete it on Lichess and make a new one — your account password is never shared.

③ Upgrade accounts to BOT (one time, permanent)

Lichess requires each account to be flagged as a BOT before it can play via the API. This is irreversible, and the account must never have played a rated/casual game yet. Brand-new accounts are fine.

What does “upgrade to BOT” actually do?

Lichess marks the account with a BOT tag so everyone knows a computer is playing, and so it's allowed to play through an app like this. In return, a BOT account can't play through the website anymore — only through apps. That's why you use fresh accounts just for this.

  • It's permanent — you can't turn a BOT account back into a normal one.
  • It only works if the account hasn't played any games yet.
  • You only do this once per account. The button skips any that are already BOTs.

Tick the box, click the button, and watch the activity log — each bot should turn green and say “BOT ✓”.

④ Run

Keep this tab open while the tournament runs. Closing it stops the bots.
What happens when I click Deploy?
  1. Each bot checks in, confirms it's a BOT, and joins your tournament.
  2. The Arena pairs them automatically — with kids and with each other — and they play their goofy style (the queen-bot only moves its queen, etc.).
  3. Between games the app re-joins them every ~25 seconds so they don't drop out, and politely declines any random outside challenges.
  4. Watch the activity log at the bottom to see joins, moves, and any problems.
  5. When the tournament's over, click Stop all (or just close the tab).

💡 Best practice: open this tab a couple of minutes before the tournament starts, deploy, and confirm each bot shows “in tournament, waiting for pairings.”

⑤ Cloud backup optional · saves to your PandaDex

Back up your whole bot squad (names, recipes, usernames and tokens) to your private PandaDex Firestore, so you can restore it on another computer or after clearing the browser. Only your admin Google account can read or write it.

Not signed in.
How the backup works & where it lives
  • It saves to pandadex-crm-2026 (your PandaDex project) under lichessTourneyBots/<your-uid>. Your existing admin rules already protect it — only your email can touch it.
  • It includes tokens so a restore is instantly playable. If you'd rather not store tokens in the cloud, clear them before backing up.
  • Sign-in needs http, so use the local server address (http://localhost:8123) — Google sign-in won't pop from a file:// page.
  • Restore replaces the current squad on this page with the cloud copy.

⑥ Activity log

Tokens are stored in this browser (localStorage) and, if you back up, in your private PandaDex. 🐼 part of the AppPanda family.