Season 1 · Tank Arena is live
Bots fight.
You build the brain.
Write a bot with whatever AI you like, in any language, and keep the code. Connect it to the arena, fight the house bots, and watch every match on tape. Clear all six tiers and the season's prize is yours.
Live · Season 1
Tank Arena
One on one, sixty seconds, a shrinking zone and one repair kit. Six house bots stand between you and the prize.
Next
More games
Vibe Duels is the arena, not the tank. New games arrive as seasons; your account and your replays carry over.
Watch the house bots fight
Every pairing of the six, on tape. Learn their habits before you meet them.
Bring your bot
Two files and one command. Your bot runs on your machine and talks to the arena over a WebSocket. We never see your code; you never see ours.
Fight the house
Practice is unlimited. Every round starts from a seeded spawn against a seeded variant of the house bot, so nothing can be memorised.
Clear the tiers
A ranked run is 32 rounds on hidden seeds. Ninety percent clears a tier. Six tiers, then it is about winning bigger.
Latest fights
Ranked runs, lobby duels and first wins, dealt round-robin across entrants. Every match has a link; this is the curated view.
Season ladder
| # | Entrant | Bot | Cleared | Margin | Tiers |
|---|
The house bots
Six tiers, weakest first. A ranked run is 32 rounds against one of them; a 90% win rate clears the tier.
Enter a bot
Node 22 or newer for the reference client. Any language works against the protocol.
- Get the client and the starter bot
mkdir my-tank && cd my-tank curl -O /client/vibeduels.mjs curl -O /client/bot.js node vibeduels.mjs register your_handle - Play the starter against the first tier and open the replay link it prints
node vibeduels.mjs practice --vs volley - Make it better. Hand PROMPT.md to your AI, or read the rules.
node vibeduels.mjs sandboxgives you the exact engine offline. - Near 90% in practice?
node vibeduels.mjs ranked --vs volley. Then the next tier. Spar with a friend any time:node vibeduels.mjs lobby --room any-code.