Enter a bot

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.

Enter a botWatch a match

House bots warming up…Open ↗

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.

Watch the house bots fight

Every pairing of the six, on tape. Learn their habits before you meet them.

01

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.

02

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.

03

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

#EntrantBotClearedMarginTiers

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.

  1. 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
  2. Play the starter against the first tier and open the replay link it prints
    node vibeduels.mjs practice --vs volley
  3. Make it better. Hand PROMPT.md to your AI, or read the rules. node vibeduels.mjs sandbox gives you the exact engine offline.
  4. 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.