Sign in
Continue with the sign-in link from your email.
Account
Checking account…
Sign in
Sign in to manage your bots.
Your source stays private unless you publish it. Match replays are public.
Try a robot in your browser first. No account needed.
Watch without signing inCheck your email
Open the link on this device to continue here.
Practice match
Choose one of your bots and an opponent. Replays are public; practice does not affect ratings.
Practise in this browser
Vane, Cadence and Glyph bots can fight Yardstick, a built-in robot, right in this browser without a build. Open a bot and choose Choose opponent, then This browser.
Choose robots
Matches featuring my bots
My bots
Write a bot, build it, then try it against an opponent.
Changed the repositories available to Clunkyard on GitHub? Refresh your connection to update the repository list.
Projects being created
Start with a House bot
Copy a published House bot into a private project you can edit.
Start from a House bot
Connect with WebDAV
Another app's save may overwrite a newer edit.
For migrated projects, use Revision history to compare and restore an earlier file.
Run a bot on your computer
- Create a remote key for a bot.
- Download the bridge.
- Run the command shown with the key.
Use Node 22 or newer. Node 20–21 also needs npm install ws@8 beside the bridge.
Tournaments
A rated Swiss tournament starts every day at 01:00 UTC. Enter up to two of your robots before it starts; each round pairs robots on the same score. House robots fill any empty places, and player robots always come first.
This week
Recent results
Rankings
Each mode, ruleset and execution keeps its own ratings. From Season 3 the execution is a class, Reflex, Standard or Open, and ratings are not comparable across classes. Pick a pool to see its full table and how its leaders got there.
What these terms mean
- Pool
- A mode, ruleset and execution together. Each pool keeps its own ratings.
- Execution
- Where a robot's program runs and how it is limited. Robots only meet others with the same execution.
- Class
- From Season 3, the execution of a match. Each class keeps its own ratings, rated and unrated, and a rating in one class says nothing about another.
- Reflex
- Vane, Cadence, Glyph and WebAssembly robots, limited by exact counts of operations and fuel. The same robots and seed always give the same match.
- Standard
- Every other hosted language, limited by CPU per turn and per match. Each runtime's budget is weighted by its measured exchange rate, published under Statistics.
- Open
- Any robot: hosted robots of every class, remote robots and strategist robots, up to seven in a match. Any robot can meet any other, as in chess.
- Hosted native
- Your compiled or interpreted program runs on Clunkyard's servers in a sandbox with a time budget per turn.
- Hosted DSL
- A Vane, Cadence or Glyph program runs on Clunkyard's servers, limited by operations per turn.
- Hosted WebAssembly
- A WebAssembly module runs on Clunkyard's servers, limited by fuel per turn.
- Remote
- Your robot runs on your own computer and answers over the network within a deadline.
- Rating (μ − 3σ)
- A cautious estimate: the robot's estimated skill (μ) minus three times the uncertainty (σ). It rises as a robot plays more games.
- Revision
- Each saved version of a robot. The table shows each robot once, at its best-rated revision.
Languages in the yard
Does a solver out-think an interpreter, or just out-wait it? Every rated match records how much each robot thought and what that thinking bought. Statistics compares languages and robots on those records.
Loading statistics…
What stands out
A hollow mark means the language has one qualifying robot, so its figure describes that robot, with an interval as wide as robots of different languages differ.
Who wins
Chance of beating a typical robot in the same pools, fitted to every contested match so that a robot is not flattered by easy opponents. Small grey marks are the language's robots; the bar is a 95% interval.
The thinking tax
Container CPU per turn, language runtime included. The twenty small dots are the spread of per-match averages (each dot is 5% of matches, robots weighted equally); the large mark is the overall figure. The line on the right is the daily trend.
What thinking buys
Damage per turn against CPU per turn. Faint diagonals are equal punch per think, damage per CPU second: a language above and left of another gets more harm from each second it spends. Hover a point, or open the table, for 95% intervals.
Style, efficiency and nerve
Each panel keeps the order of Who wins, so a language can be read across the row.
Turn by turn
From turn profiles: every turn's CPU and reply time, folded into a histogram per match. Reflex robots have tight strips; deliberators have long right tails.
Turn-by-turn timing is recorded from November 2026. This section fills in as new matches are played.
Battery
Rules v2 only: damage per unit of battery spent on driving and firing, and how often robots fire heavy shots.
Across arenas and seasons
Win chance in 2D pools against 3D pools, and from one season to the next.
Every robot
Robots with fewer than 20 contested matches are listed but do not count toward their language.
Exchange rates
What a Standard robot's CPU is worth in each runtime. The dot is the runtime's measured CPU for the same work as C; the small grey mark is the tier it rounds to, which sets its budget. Reflex counts operations and fuel instead, so it has no rate.
Loading exchange rates…
Method: every runtime plays the same recorded state tape beside a C robot on the same node, with a fixed calibration kernel on alternate turns, so the rate is the ratio of their extra CPU per round. Rates round on a log scale to tiers of 1, 1.5, 2, 3 or 4, are capped at 4, and change only between seasons.
How these are computed
Method
- Contested matches only. From Season 3 each failure carries a ruling: a platform fault voids the match, which is never counted, and every forfeit is the robot's own and counts as its loss. Before Season 3, a match where either robot failed to start, build or report its resources, or lost by rule before making a single move, is no contest and is left out of every figure. Losses to a compute budget or a time limit after the robot has played do count: they are the cost of thinking. The robot table lists both kinds.
- One class at a time. From Season 3 each view is one class, Reflex, Standard or Open, and CPU is never set beside operations or fuel. Ratings and figures are not comparable across classes.
- The robot is the unit. A language's figure is the plain mean of its robots, so one robot with thousands of matches does not speak for its language. Robots with the same name and language, such as a house robot and a player's copy, count once. Its interval adds how much robots differ from one another (estimated across all robots in the pools shown), so a language with one robot gets an honest, wide interval.
- Win chance comes from a Bradley–Terry model fitted to contested matches, with a mild prior that keeps robots with few matches near the middle. Draws count half.
- Ratios are ratios of sums (total damage over total CPU), not averages of per-match ratios. Intervals are 95% bootstrap intervals over matches; proportions use Wilson intervals.
- CPU is the robot container's CPU from Linux cgroup accounting, startup excluded. It includes the language runtime, so an interpreter pays for itself here.
- Thinking dividend compares each robot with itself: the correlation between spending more CPU per turn than usual (after allowing for match length) and scoring better than the opponent's strength predicted.
- Figures refresh every ten minutes. The data behind this page is public JSON.
Watch matches
Program a robot to scan, move and fire, then put it in the arena.
Or try a robot in your browser, no account needed →How to play
- Create a bot or copy a published starter.
- Edit its program, save a revision and build it.
- Choose an opponent in Practice, then watch the replay and improve your bot.
Follow the five-minute getting-started guide · Choose a language · Robot SDK and syntax guides
Matches in progress
Recent replays
Loading matches…
Robots
Meet the robots in the arena. Choose one to challenge in Practice.
Loading robots…
Try a robot
Edit a house robot's program and run a practice match right here in your browser. No account needed: sign in only to save your changes or to compete.
The opponent is Yardstick, a built-in Vane robot that roams, then aims and fires when it finds you. Try changing a drive or turn value, then run it again.
Account
Notifications
Build failures always show on the bot itself.
Passkeys
Connect from your computer
Edit your bots from your own editor through WebDAV. The address and user name are the same for every bot; the password is shown once.
Access keys
An agent key lets a program of yours save, build and enter your robots through the API. See Agent keys.
Delete account
Deleting your account signs you out everywhere and removes your email address, passkeys, sessions, access keys, GitHub connection and robots, with their source. Results of matches already played stay in other players' history under a removed account. This cannot be undone.