Vibe ChessVibe ChessApp

Vibe Chess: everything the bot and the app can do

Alexey Mudry
Vibe Chess is a free service for running Swiss-system chess tournaments. It comes in two parts: the app with the tournament screens, the table and the profile, and the bot, through which the pairings and results travel. The pairing is calculated by an engine implementing the FIDE rules, and a finished tournament is exported as a report in TRF format. Below is the full overview, so you can tell whether the service suits your tournament.

The app and the bot are two parts of one service

Vibe Chess used to be only a bot. Now the service has a full app: it opens right inside Telegram and shows what is awkward to read as messages - the city event listing, the field of a tournament, the live table, the state of the current round, a player's profile and their game history.

The bot has not gone anywhere and stays where it is stronger: your opponent and table number arrive privately, and the result is recorded with a button in the same message. One complements the other, and there is no separate registration and no separate password - the login is the same Telegram account.

Creating and running a tournament

A tournament is created through a six-step dialogue with the command /create_tournament: the name, the venue, the date and time, the time control, the number of rounds and the player limit. After that the tournament is run with commands: /open_registration and /close_registration to open entries, /start_tournament to start, /next_round between rounds and /finish_tournament at the end. A tournament you have started is saved as a draft - you can break off and come back. The full walkthrough is in the organiser's guide.

Pairing by FIDE rules

The core of the service is the pairing. The pairs for each round are calculated by bbpPairings - an open engine implementing the Dutch system described in the FIDE rules for Swiss tournaments. The same engine is used as the reference when pairings are checked, and it runs locally on our server: the tournament data goes nowhere.

In practice that means the pairs come out not “looking about right” but exactly as arbiting software would produce them: splitting into score groups, floating players between groups when the field is odd, alternating colours and forbidding a repeat meeting. With an odd number of players the engine assigns the bye (a missed round with a point) itself and does not give it to the same person twice while other candidates remain. How many rounds to set for your size is described in the article how many rounds in a Swiss.

Exporting a tournament in TRF format

A finished tournament is exported as a single file in TRF format - the official FIDE data exchange format, also known as the Krause format, which arbiting software works with and federations accept. Everything goes into the file: the tournament header with the dates, the city, the time control and the chief arbiter, and for every player the results of every round with their opponents and colours.

There are two ways to export it: a button in the app on the card of a finished tournament (the file arrives in the chat or downloads to your device), and the organiser also receives it automatically along with the final standings. So that the report carries the players' details, the profile now has a section for the FIDE and federation standards: FIDE ID, federation code, chess title, sex, date of birth and federation. Filling them in is only compulsory for people who play in rated tournaments.

Pairings, results and the table

Once a round starts the bot sends every player their opponent and table number privately - /my_pairing will show your pairing at any moment. The players record the results themselves with buttons (win, loss, draw, no-show). If only one of them records it, the opponent gets a confirmation request; if they say nothing the bot accepts it automatically, and if the two differ the dispute goes to the organiser with buttons for entering the result by hand.

The table (/standings) with points and the Buchholz score is recalculated after every round. A player sees their place in real time. How the tie-break works is in the article on the Buchholz score.

Guests without Telegram, and a chess clock

Two practical advantages. The first is guest mode: the organiser adds a player without Telegram by name, they play on equal terms with everyone else, and the organiser enters their results. That makes the bot usable in schools, camps and workplaces - see a guest without Telegram. The second is free a chess clock on your phone with a Fischer increment and a move counter, for timing the games. They can be opened separately from the bot too - a chess timer with a move counter works from a direct link, with no registration and nothing to install.

The bot speaks 11 languages

The bot's interface is translated into 11 languages: Russian, English, Spanish, Portuguese, German, French, Italian, Turkish, Indonesian, Hindi and Persian. Every player sees the bot in their own language, chosen in their profile.

Thanks to that a tournament can be run not only in Russia but in mixed international groups and in other countries: players from different countries each use the bot in their native language while the organiser runs one shared tournament. For an international club, a student group with foreign members or a tournament abroad, that removes the language barrier.

What the bot does not do

Honestly about the limits, so that nobody expects the wrong thing. The TRF export gives you a file, not a rating: for a tournament to count towards an official national or FIDE rating it has to be registered with the federation in advance, run with a licensed arbiter and submitted with a package of documents - the report is only one of them. The app itself has not been through endorsement by the FIDE pairing programs commission: the rules of the Dutch system are followed in it, but it holds no certificate.

The entry fee in the settings is an informational field: the service takes no payments and the organiser collects the money themselves. The round robin is supported for small groups (see a tournament for 8), but the main mode is the Swiss.

And the main thing: the service is developed continuously around real tournaments. If a feature you need is not there yet, you can suggest it with the command /support - there is more in the article the bot is developed around you.

Try it at your own tournament

Open @vibechessbot, create a tournament with the command /create_tournament - and see for yourself how the FIDE-rules pairing and the table work by themselves. Free, with no subscriptions and no limits.

Frequently asked questions

What does Vibe Chess cost?

Nothing. All of it is free: the app, the bot, pairing by FIDE rules, the TRF report export, the chess clock and the live table. No subscription, no paid tiers and no limit on the number of tournaments or players. The entry fee in the tournament settings is an informational field for the players: the service takes no payments, and the organiser collects the money (for a prize, say) however suits them.

How does the app differ from the bot?

They are two parts of one service, with a shared login through Telegram. The app shows what is awkward to read as messages: the city event listing, the field of a tournament, the live table, the state of the round, your profile and your game history. The bot handles the immediate things: it sends your pairing and table number privately and takes your result at the touch of a button. You can use either or both.

By what rules is the pairing calculated?

By the FIDE rules for Swiss tournaments: the pairs for each round are calculated by the open bbpPairings engine, which implements the Dutch system. It splits players into score groups, floats players between groups when the field is odd, alternates colours and never pairs people who have already met. The engine runs locally on our server, and the tournament data goes nowhere.

Can I export the tournament for a federation?

Yes. A finished tournament is exported as a file in TRF format - the official FIDE data exchange format that arbiting software works with. The button is in the app on the card of a finished tournament, and the organiser also receives the file automatically along with the final standings. For the report to be complete, players should fill in the FIDE and federation standards section of their profile: FIDE ID, federation code, title, sex and date of birth.

Does every player need Telegram?

No. Anyone who wants to signs up and records their own results, and the organiser adds the rest as guests by name. One smartphone with the bot - the organiser's - is enough.

How many people can the bot handle?

From a small group to a mass tournament. The number of rounds grows slowly: 16 people means 5 rounds, 32 means 6, a hundred means 8-9. The bot keeps the pairing correct at any size.

Does the service calculate an official rating?

Not the rating itself, but it prepares the document for it. The export gives a report in TRF format, which arbiting software and federations accept. For a tournament to count towards an official national or FIDE rating it has to be registered with the federation in advance and run with a licensed arbiter - the report is only one document in the package. The app has no endorsement from the FIDE pairing programs commission: the rules of the Dutch system are followed, but no certificate was issued.

What languages does the service work in?

The interface is translated into 11 languages: Russian, English, Spanish, Portuguese, German, French, Italian, Turkish, Indonesian, Hindi and Persian. Every player chooses their own language in their profile, so a tournament can be run in mixed international groups and in other countries.

How do I try it?

Open @vibechessbot on Telegram, give your city and create a trial tournament with the command /create_tournament; the app opens from the bot's menu. The best way to find your feet is with a small group of 6-8 people - the whole mechanism makes sense in under an hour.

How to run a tournament without being an arbiter

No arbiter skills required. The app takes over the part that usually stops people from running tournaments at all: who plays whom in each round and who finishes first.

  • Swiss system
    works for ten players and for fifty
  • Round robin
    for a small group that wants to play everyone
  • Free meetup
    for those who do not need a bracket at all

More than a bot: the app, FIDE rules and a TRF report

  • The app. Besides the bot there is an app - inside Telegram and simply at playvibechess.com/app: what is on in your city, the player list, a live table, the current round, your profile and game history - everything that is awkward to read as chat messages.
  • Pairings by FIDE rules. Pairings are computed by bbpPairings, an open-source engine implementing the Dutch system: score groups, floats on an odd field, colour alternation, no rematches, and no player gets a bye twice.
  • A TRF report. A finished tournament exports as a single file in the FIDE data exchange format - the one arbiter software and federations accept. Your profile stores the FIDE ID, national federation code, title, sex and date of birth for it.
  • Free. All of the above, with no subscriptions, paid plans or limits on the number of tournaments and players.

Missing a feature? Message the developers

The bot is constantly improved based on real tournaments. If you need a feature that isn't there yet, message the developers right inside the bot with the /support command. Many features appeared exactly because organizers asked for them, and useful ideas get added quickly.

What to read next

Where to start is in the organiser's guide. How the bot is developing is in the bot is developed around you. The big FAQ is in questions about running tournaments. General preparation is in how to run a tournament.

Alexey Mudry
Alexey Mudry · hosted 24 events for Vibe Chess · 106 reviews · rating 5.0

At the board since childhood: hazy about his rating, precise about every rook he has blundered. Counts an evening as a good one if the opponent stayed to talk afterwards instead of rushing off to check with an engine. Message →