The technical side

Under the hood

The rest of the site keeps it simple on purpose. This page is for anyone who wants to know exactly how a fight is decided, how the money moves, and how to check that we are telling the truth. New here? Start with how it works.

Promise and proof

What we say, and what makes it true

There is no luck in a fight.

The engine that decides a fight contains no random number generator and no clock. A build check fails if one is ever added. Two identical fighters draw 1000 times out of 1000.

The fairness document →

Nobody can rig a result — including us.

Every fight is stored as the list of moves both sides chose. The result is recomputed from that list by the same function, live or later. You can run that check yourself, offline, and it also rejects a record that has been cut short.

Check a fight yourself →

You never fight the house in a ranked fight.

Our own bots are fixed reference policies. They are barred from any rated match, never fill an empty queue, and a tournament that does not fill is cancelled and refunded rather than padded.

Principle III →

Skins cannot win a fight.

A body or a skin changes geometry and colour only. Every body drives the same animation rig and the engine never learns which one it is drawing. There is no stat block to buy.

The full rules →

What you fought with is what is on the record.

A fight freezes the game plan, the AI model and the rating exactly as they were at the bell. Editing a fighter later never rewrites an old replay.

How records are kept →

Measured, not asserted

The numbers

0Random calls in the engine
1000/1000Mirror matches drawn at zero noise
ε = 0.05Noise absorbed, skill still decides
3 × 12Rounds × moves, both sides blind

Everyone in this business says theirs is a game of skill. We measure it: a harness plays graded reference bots against each other with noise injected, and reports how much noise the format absorbs before the better bot stops winning. The code is in the repository and the report is regenerated whenever anything about combat changes. The full report →

How a fight runs

Move by move

Both sides commit blind

Each move, both AI models are asked for one of six actions at the same time. Neither sees the other’s answer, and nothing is shown to spectators until both have answered.

Ten seconds to decide

A model that times out, refuses, or answers with something that is not a move takes a basic fallback move instead, and the replay says so.

A thinking limit per fight

The weight class is a budget of AI tokens for the whole fight. Spend it all early and the fighter runs dry. That is the equaliser between a big model and a small one.

One function decides

The live fight collects the moves and hands them to the adjudicator. The offline checker calls the very same function. Live and replayed results match because they are literally the same code.

The money

Where every cent goes

Two balances

Play credit is money you added: you can spend it, never withdraw it. Winnings are money won in fights. Keeping them apart is an anti-laundering control, not a quirk.

Stakes are held, not spent

In a ranked fight both stakes are held from the bell. The pot is paid exactly once. If a fight cannot be completed, both stakes go back to the balances they came from.

The 5% fee

Taken from the pot of a decided ranked fight. Nothing on a draw. The smallest ranked stake is 10 cents a side, the point where 5% is a whole cent.

Our AI at a printed markup

If we run the AI for you, you pay what the model costs plus 25%. Each fight page lists tokens used, cost, markup and what was charged.

An open ledger

Every movement in your wallet is a line with the balance before and after. Lines are never edited or deleted.

Adding money

In naira through a hosted checkout (Figo), or by crypto deposit. Either way we credit only after asking the payment provider ourselves; a message arriving from outside is never taken as proof.

Withdrawals

Not open yet. When they open they will be for winnings only.

For builders

Bring your own AI

Your own key

Enter a fighter on an OpenRouter key and reach hundreds of models from every major lab. The key is encrypted before it is stored and is only used to run your own fights.

Your own model

Point a fighter at any OpenAI-style endpoint — your fine-tune, your hardware. It must be a public https address. Its results are listed as self-declared, because we cannot see what is behind it.

Scripts and tools

Make an API key in Settings to open fights and read results from code.

The fight record is public data. Download every match as one row per fight or one row per move. Private game plans are never in it.

Against the field

How this differs from the usual

“Skill-based”

Said on the landing page. Never measured.

Measured every season

A harness anyone can re-run, with confidence intervals, published whichever way it comes out.

Results you take on trust

The operator scores the match and tells you who won.

Recompute it yourself

Any match replays offline. No login, no network, no trust in us.

The platform sells the compute

A cut of the pot, plus a quiet margin on the thing that decides who wins.

Your key, or ours at a printed markup

Bring your own AI key or use ours. Both are rated. Ours costs 25% more for the same models, so it buys convenience and never an edge. Every fight carries its receipt.

Hidden opponents

House bots and padded queues are the usual way these places go wrong.

No house bots in ranked

Every ranked opponent is another player. Practice bots are labelled and never rated.

The documents

Read the source