Baylee

Closed beta · free · open source · unofficial fan content Geschlossene Beta · kostenlos · quelloffen · inoffizieller Fan-Content

A table that knows the rules.

Ein Tisch, der die Regeln kennt.

Baylee is a rules engine and a 3D table for playing Magic: The Gathering with friends or against the house AI. The engine enforces the Comprehensive Rules, so nobody has to. Free, open source under the AGPL, and it stays that way.

Baylee ist eine Regel-Engine und ein 3D-Spieltisch für Magic: The Gathering – mit Freunden oder gegen die Haus-KI. Die Engine setzt die Comprehensive Rules durch, damit es niemand am Tisch tun muss. Kostenlos, quelloffen unter der AGPL, und das bleibt so.

Download BayleeBaylee herunterladen

Windows · macOS (Apple silicon) · Linux. The latest release is on GitHub. Windows · macOS (Apple Silicon) · Linux. Die neueste Version liegt auf GitHub.

Plays offline against the house AI without an account. Online play on the Sanctuary gateway is a closed beta and needs a key. Offline gegen die Haus-KI geht ohne Konto. Online auf dem Sanctuary-Gateway ist eine geschlossene Beta und braucht einen Schlüssel.

What Baylee isWas Baylee ist Where the cards standStand der Karten

Latest buildNeueste Version see releasessiehe Releases
CI on mainCI auf main see on GitHubauf GitHub ansehen
Last commitLetzter Commit see on GitHubauf GitHub ansehen
Sanctuary gatewaySanctuary-Gateway closed betageschlossene Beta

What it isWas es ist

Two halves, one game

Zwei Hälften, ein Spiel

An engine that enforces the game

Eine Engine, die das Spiel durchsetzt

Priority and the stack, the layer system, replacement effects, triggers, state-based actions and combat: the engine applies the Comprehensive Rules and lists, at every step, exactly the choices a player has. The client offers those and nothing else. It never decides what is legal.

Priorität und Stapel, das Schichtensystem, Ersetzungseffekte, Trigger, zustandsbasierte Aktionen und Kampf: Die Engine wendet die Comprehensive Rules an und zählt bei jedem Schritt genau die Entscheidungen auf, die ein Spieler hat. Der Client bietet genau diese an und sonst nichts. Er entscheidet nie, was erlaubt ist.

It is deterministic: a seeded random-number generator, no clock and no hash-map order in the rules, so the same game with the same answers always ends the same way. Every hosted game is recorded move by move and can be replayed to the same state, which is also what a bug report carries.

Sie ist deterministisch: ein geseedeter Zufallsgenerator, keine Uhr und keine Hash-Map-Reihenfolge in den Regeln. Dasselbe Spiel mit denselben Antworten endet immer gleich. Jedes gehostete Spiel wird Zug für Zug aufgezeichnet und lässt sich auf denselben Zustand zurückspielen – das ist auch, was eine Fehlermeldung mitbringt.

A 3D table built with Bevy

Ein 3D-Tisch auf Bevy

Battlefield, hands, stack and graveyards on a table you can read at a glance, plus a lobby for accounts, decks and rooms. Card images come from Scryfall while you play; a text view draws every card from its rules text instead, and T switches between the two.

Schlachtfeld, Hände, Stapel und Friedhöfe auf einem Tisch, den man auf einen Blick lesen kann, dazu eine Lobby für Konten, Decks und Räume. Die Kartenbilder kommen beim Spielen von Scryfall; eine Textansicht zeichnet jede Karte stattdessen aus ihrem Regeltext, und T schaltet um.

You can play with the mouse or entirely from the keyboard: Space passes, Tab fast-forwards to the next phase while every decision stays yours, L opens a game log that reads like a chat. Every key can be rebound.

Mit der Maus oder ganz über die Tastatur: Leertaste passt, Tab spult zur nächsten Phase vor, wobei jede Entscheidung bei dir bleibt, L öffnet ein Spielprotokoll, das sich wie ein Chat liest. Jede Taste lässt sich umbelegen.

  • Hidden information stays hidden

    Verdeckte Information bleibt verdeckt

    Your client is sent only what you may see. Libraries and other hands arrive as counts, a face-down card carries no identity. A modified client cannot peek, because the data never reaches it.

    Dein Client bekommt nur, was du sehen darfst. Bibliotheken und fremde Hände kommen als Zahlen an, eine verdeckte Karte trägt keine Identität. Ein manipulierter Client kann nicht spicken, weil die Daten ihn nie erreichen.

  • Two to eight seats

    Zwei bis acht Plätze

    Duels, free-for-all and team tables. The host puts chairs on sides, and the sides need not be even. Teams keep separate turns and life totals; teammates can choose to show each other their hands.

    Duelle, Jeder-gegen-jeden und Teamtische. Der Gastgeber verteilt die Stühle auf Seiten, und die Seiten müssen nicht gleich groß sein. Teams haben eigene Züge und Lebenspunkte; Teamkollegen können sich gegenseitig die Hand zeigen.

  • Commander and freeform

    Commander und Freiform

    A deck that names a commander plays Commander; any other deck plays freeform. Banlists and format-legality checks do not exist yet. That is a gap, not a feature.

    Ein Deck mit Commander spielt Commander, jedes andere spielt frei. Banlisten und Formatprüfungen gibt es noch nicht. Das ist eine Lücke, kein Feature.

  • A house AI at five levels

    Eine Haus-KI in fünf Stufen

    Novice, casual, steady, sharp and expert. It plays from the same view a human gets, so it cannot see your hand either.

    Novice, casual, steady, sharp und expert. Sie spielt aus derselben Sicht wie ein Mensch und sieht deine Hand genauso wenig.

  • One process per game

    Ein Prozess pro Spiel

    Each game runs in its own engine process. The gateway that handles accounts and rooms runs no rules at all, so one broken game is one broken game.

    Jedes Spiel läuft in einem eigenen Engine-Prozess. Das Gateway für Konten und Räume kennt keine Regeln, also ist ein kaputtes Spiel genau ein kaputtes Spiel.

  • Card text in 19 languages

    Kartentext in 19 Sprachen

    When the gateway carries the card catalog, cards read in your language with English as the fallback. The interface itself is in English and German.

    Hat das Gateway den Kartenkatalog, lesen sich Karten in deiner Sprache, Englisch als Rückfall. Die Oberfläche selbst gibt es auf Englisch und Deutsch.

  • Watch a running table

    Einem laufenden Tisch zuschauen

    The lobby's Watch button seats you as a spectator. You see what the whole table sees and nobody's hand. A host can switch spectators off for a room.

    Der Knopf Zuschauen in der Lobby setzt dich als Zuschauer an den Tisch. Du siehst, was der ganze Tisch sieht, und keine Hand. Ein Gastgeber kann Zuschauer für seinen Raum abschalten.

  • A lost connection is not a lost game

    Verbindung weg, Spiel nicht verloren

    When a player drops, the table shows a countdown while their chair waits for them. If time runs out, the house AI plays for them until they are back; with nobody else at the table, the game simply pauses.

    Fällt ein Spieler heraus, zeigt der Tisch einen Countdown, solange sein Platz auf ihn wartet. Läuft die Zeit ab, spielt die Haus-KI für ihn, bis er zurück ist; sitzt sonst niemand am Tisch, pausiert das Spiel einfach.

  • Tables your way

    Tische nach deinen Regeln

    A Mixed table seats decks of any format together, and fourteen decision clocks run from a 15-second bullet to untimed. Starting life and mulligans are the host's to set.

    Ein Tisch „Gemischt“ setzt Decks jedes Formats zusammen, und vierzehn Entscheidungsuhren reichen von 15 Sekunden bis ohne Uhr. Startleben und Mulligans legt der Gastgeber fest.

At the tableAm Tisch

What it looks like

So sieht es aus

These pictures show the text view, which draws each card from its rules text rather than the printed card image, because we do not redistribute Scryfall's scans. In the game you see the real card images. The screenshots were taken with 0.1.0-beta.2 on a local test gateway with made-up players; the current build looks a little different.

Die Bilder zeigen die Textansicht, die jede Karte aus ihrem Regeltext zeichnet statt aus dem gedruckten Kartenbild, weil wir Scryfalls Scans nicht weiterverbreiten. Im Spiel siehst du die echten Kartenbilder. Die Aufnahmen entstanden mit 0.1.0-beta.2 auf einem lokalen Test-Gateway mit erfundenen Spielern; die aktuelle Version sieht etwas anders aus.

  • A duel against the house AI; a hovered card is shown large in the text view
    A duel against the house AI. Hovering a card shows it large.Ein Duell gegen die Haus-KI. Eine Karte unter dem Zeiger wird groß gezeigt.
  • The game log beside the table, each card name a link
    The game log (L) reads like a chat; every card name opens its preview.Das Spielprotokoll (L) liest sich wie ein Chat; jeder Kartenname öffnet die Vorschau.
  • A four-seat table, the seats in a ring around the felt
    Four seats. Larger tables sit in a ring around the felt.Vier Plätze. Größere Tische sitzen im Ring um den Filz.
  • The lobby: decks on the left, open tables on the right
    The lobby. Your decks, the open tables, and Play the house for a quick game.Die Lobby. Deine Decks, die offenen Tische und Play the house für ein schnelles Spiel.
  • A room being arranged: seats, AI levels, starting life
    Arranging a table. Chairs, starting life, mulligans, and a level for each AI chair.Einen Tisch einrichten. Stühle, Startleben, Mulligans und eine Stufe für jeden KI-Stuhl.
  • The deck builder with statistics and a search over the pool
    The deck builder. Mana curve, land statistics, a search over the whole pool, and a warning for cards that will not play as printed.Der Deckbauer. Manakurve, Länderstatistik, eine Suche über den ganzen Pool und eine Warnung für Karten, die nicht wie gedruckt spielen.

CardsKarten

The cards, honestly

Die Karten, ehrlich

Every card in Baylee is code: one file per card, written in a small rules language and played in a test. There is no "close enough" interpreter guessing at card text. That is why the pool grows batch by batch instead of all at once.

Jede Karte in Baylee ist Code: eine Datei pro Karte, in einer kleinen Regelsprache geschrieben und in einem Test gespielt. Es gibt keinen Interpreter, der Kartentext ungefähr errät. Deshalb wächst der Pool Stapel für Stapel statt auf einmal.

3,2023.202
cards that play exactly as printedKarten, die genau wie gedruckt spielen
68
more that are partly implemented and marked as suchweitere, teilweise umgesetzt und so markiert
33,68133.681
cards in the whole corpus we are working towardsKarten im gesamten Korpus, auf den wir hinarbeiten

Counted in the repository on 13 October 2026, on main after 0.1.0-beta.7 (the pool list, the README). The deck builder can show only playable cards, and it warns when a deck holds cards that will not play as printed.

Gezählt im Repository am 13. Oktober 2026, auf main nach 0.1.0-beta.7 (die Pool-Liste, die README). Der Deckbauer kann nur spielbare Karten zeigen und warnt, wenn ein Deck Karten enthält, die nicht wie gedruckt spielen.

The plan

Der Plan

Sets go in release order, starting with Alpha, because every set introduces its mechanics on top of the older ones. Alpha is complete: every playable card of it plays as printed. Arabian Nights and Antiquities come next, and the rest follows set by set. Bugs found at the table come before new cards, every time.

Die Sets kommen in Erscheinungsreihenfolge, beginnend mit Alpha, weil jedes Set seine Mechaniken auf die älteren setzt. Alpha ist vollständig: Jede spielbare Karte daraus spielt wie gedruckt. Als Nächstes kommen Arabian Nights und Antiquities, der Rest folgt Set für Set. Fehler, die am Tisch auffallen, gehen immer vor neuen Karten.

That means a modern deck will often hold cards Baylee does not know yet. We would rather tell you that in the deck builder than let a card resolve wrongly. Cards that cannot be played at all (ante, dexterity, subgames) are on a named skip list and never silently dropped.

Das heißt: Ein modernes Deck enthält oft Karten, die Baylee noch nicht kennt. Wir sagen dir das lieber im Deckbauer, als eine Karte falsch verrechnen zu lassen. Karten, die gar nicht spielbar sind (Ante, Geschicklichkeit, Teilspiele), stehen auf einer benannten Auslassungsliste und fallen nie stillschweigend weg.

Sets and card status

Sets und Kartenstatus

Every set in release order, each card counted under the set it first appeared in. Open a set to see its cards: whether each plays as printed, plays but is not yet tested, plays in part, is not playable yet, or will never be built. Rest the pointer on a card, or focus it, to see it large with the reason; a click opens its page on Scryfall, with artist and printing. On a touch screen a tap shows it large first.

Jedes Set in Erscheinungsreihenfolge, jede Karte unter dem Set gezählt, in dem sie zuerst erschien. Öffne ein Set, um seine Karten zu sehen: ob jede wie gedruckt spielt, spielt, aber noch ungetestet ist, teilweise spielt, noch nicht spielbar ist oder nie gebaut wird. Lass den Zeiger auf einer Karte ruhen oder fokussiere sie, um sie groß mit dem Grund zu sehen; ein Klick öffnet ihre Seite bei Scryfall, mit Künstler und Druck. Auf einem Touchscreen zeigt ein Tippen sie zuerst groß.

  • Full: plays as printedVoll: spielt wie gedruckt
  • Untested: playable, every sentence is read by the rules engine, but no test plays it yetUngetestet: spielbar, jeder Satz wird von der Regel-Engine gelesen, aber noch kein Test spielt sie
  • Partial: plays, one part missing (the reason is shown with the card)Teilweise: spielt, ein Teil fehlt (der Grund steht bei der Karte)
  • Not yet: not playable yetNoch nicht: noch nicht spielbar
  • Never: ante, dexterity or a subgame; a set counts as complete without itNie: Ante, Geschicklichkeit oder ein Teilspiel; ein Set gilt ohne sie als vollständig

The percentage is full cards out of all cards of the set that will ever be built. Untested and partial cards are the other parts of the bar and are not counted as done.

Der Prozentwert ist der Anteil voller Karten an allen Karten des Sets, die je gebaut werden. Ungetestete und teilweise umgesetzte Karten sind die übrigen Teile des Balkens und zählen nicht als fertig.

The set list loads with JavaScript from data/sets.json.

Die Set-Liste wird per JavaScript aus data/sets.json geladen.

Card images are loaded from Scryfall only when you open a set or show a card large, unaltered. Card data and images provided by Scryfall; Baylee is not affiliated with Scryfall. The counts are measured from the repository by baylee-tools site card-status.

Card images © Wizards of the Coast, shown unaltered from Scryfall. Cards not yet in Baylee's pool, and Universes Beyond cards, are listed by name only.

Kartenbilder werden erst beim Öffnen eines Sets oder beim Großzeigen einer Karte und unverändert von Scryfall geladen. Kartendaten und -bilder bereitgestellt von Scryfall; Baylee ist nicht mit Scryfall verbunden. Die Zahlen misst baylee-tools site card-status im Repository.

Kartenbilder © Wizards of the Coast, unverändert von Scryfall geladen. Karten, die noch nicht in Baylees Pool sind, und Universes-Beyond-Karten stehen nur mit Namen hier.

OpponentsGegner

Opponents: the house, or a language model

Gegner: das Haus, oder ein Sprachmodell

The house AI

Die Haus-KI

Five levels from novice to expert, available offline and at any online table. It plays from the same view a human gets, so hidden information stays hidden from it too. It is a heuristic player, not a trained one: good enough to learn a deck against, not a tournament opponent.

Fünf Stufen von novice bis expert, offline und an jedem Online-Tisch. Sie spielt aus derselben Sicht wie ein Mensch, verdeckte Information bleibt also auch vor ihr verdeckt. Sie spielt heuristisch, nicht trainiert: gut genug, um ein Deck dagegen zu lernen, kein Turniergegner.

A chair for a language model

Ein Stuhl für ein Sprachmodell

A seat bridge lets a model sit at the table as an ordinary player: a local model in LM Studio, one behind an OpenAI-compatible or Anthropic API, or an agent CLI on your own login. API keys never go in a file; a settings file names the environment variable they come from, and daily and monthly spending caps hold across games. When the model times out or answers something illegal, the house answers that question and the transcript says so.

Eine Sitzbrücke lässt ein Modell als gewöhnlichen Spieler am Tisch sitzen: ein lokales Modell in LM Studio, eines hinter einer OpenAI-kompatiblen oder Anthropic-API oder ein Agent-CLI mit deinem eigenen Login. API-Schlüssel stehen nie in einer Datei; die Einstellungsdatei nennt die Umgebungsvariable, aus der sie kommen, und Tages- und Monatslimits gelten über alle Spiele. Wenn das Modell nicht antwortet oder etwas Unerlaubtes versucht, antwortet das Haus für diese Frage, und das Protokoll sagt es.

At a gateway table the host seats one from the room: any open chair offers language model on a desktop client, which starts the bridge (it ships beside the game) with your own settings and key. Where the gateway's operator runs hosted models, a registered host can also pick one of those instead, and it plays on the operator's machine, so no key or bridge is needed on yours.

How to set it up.

An einem Gateway-Tisch setzt der Gastgeber es im Raum hin: Jeder freie Stuhl bietet im Desktop-Client Sprachmodell an, und der Client startet die Brücke (sie liegt dem Spiel bei) mit deinen eigenen Einstellungen und deinem Schlüssel. Wo der Betreiber des Gateways gehostete Modelle anbietet, kann ein registrierter Gastgeber stattdessen eines davon wählen; es spielt auf dem Rechner des Betreibers, auf deinem braucht es dann weder Schlüssel noch Brücke.

So richtest du es ein (englisch).

Get itHolen

Download

Herunterladen

Every download goes straight to the file on GitHub, nothing in between. Where a release has installers, they are the easy way; the archives hold the same game to unpack anywhere. An installed Baylee updates itself from the signed archives wherever it may write its own folder. Every package carries the seat bridge for language models beside the game.

Jeder Download geht direkt zur Datei auf GitHub, nichts dazwischen. Wo eine Version Installer hat, sind sie der einfache Weg; die Archive enthalten dasselbe Spiel zum Entpacken an beliebiger Stelle. Ein installiertes Baylee aktualisiert sich selbst aus den signierten Archiven, wo es seinen eigenen Ordner beschreiben darf. Jedes Paket enthält neben dem Spiel die Sitzbrücke für Sprachmodelle.

Loading the latest release from GitHub …Lade die neueste Version von GitHub …

Without JavaScript this page cannot list the files. They are on the releases page: an installer and an archive for Windows (x64 and ARM64), macOS (Apple silicon) and Linux (x86-64 and ARM64), each with a .sha256 beside it.

Ohne JavaScript kann diese Seite die Dateien nicht auflisten. Sie liegen auf der Releases-Seite: ein Installer und ein Archiv für Windows (x64 und ARM64), macOS (Apple Silicon) und Linux (x86-64 und ARM64), jeweils mit einer .sha256 daneben.

First start

Erster Start

The builds are not code-signed, because signing costs money. Windows and macOS therefore warn the first time. On Windows, click More info and Run anyway. On macOS, open System Settings → Privacy & Security and click Open Anyway. The install notes have every step and the Linux packages.

Die Builds sind nicht signiert, weil Signieren Geld kostet. Windows und macOS warnen deshalb beim ersten Mal. Unter Windows: Weitere Informationen und Trotzdem ausführen. Unter macOS: Systemeinstellungen → Datenschutz & Sicherheit und Dennoch öffnen. Die Installationshinweise haben jeden Schritt und die Linux-Pakete.

Checking a download

Einen Download prüfen

Beside each file there is a .sha256; the archives also carry a .sig, the Ed25519 signature the client checks before it installs an update by itself. sha256sum -c on Linux, shasum -a 256 -c on macOS, certutil -hashfile … SHA256 on Windows.

Neben jeder Datei liegt eine .sha256; die Archive tragen zusätzlich eine .sig, die Ed25519-Signatur, die der Client prüft, bevor er ein Update selbst installiert. sha256sum -c unter Linux, shasum -a 256 -c unter macOS, certutil -hashfile … SHA256 unter Windows.

What it needs

Was es braucht

  • Windows 10 or 11, x64 or ARM64. The x64 build needs a CPU with x86-64-v2 (SSE4.2), as Windows 11 24H2 does.Windows 10 oder 11, x64 oder ARM64. Der x64-Build braucht eine CPU mit x86-64-v2 (SSE4.2), wie Windows 11 24H2 auch.
  • macOS 11 or later on Apple silicon (M1 and later). There is no Intel build yet.macOS 11 oder neuer auf Apple Silicon (M1 und neuer). Einen Intel-Build gibt es noch nicht.
  • Linux with glibc 2.35 or newer (Ubuntu 22.04 and up), a Vulkan driver, and ALSA, udev, X11/Wayland and xkbcommon; the .deb pulls them in.Linux mit glibc 2.35 oder neuer (ab Ubuntu 22.04), einem Vulkan-Treiber sowie ALSA, udev, X11/Wayland und xkbcommon; das .deb zieht sie mit.
  • Browser: the browser version is paused for this beta and comes back later; until then, take the desktop client above.Browser: Die Browser-Version pausiert in dieser Beta und kommt später wieder; bis dahin nimm den Desktop-Client oben.
  • Phones and tablets: no builds to download yet. Android runs but cannot be used by touch; iOS runs only in the simulator.Handy und Tablet: noch keine Builds zum Herunterladen. Android läuft, ist aber per Touch nicht bedienbar; iOS läuft nur im Simulator.

OnlineOnline

The closed beta

Die geschlossene Beta

The public gateway, Baylee Sanctuary, is where online tables live. It is a closed beta: a new account and a new guest each need a key of the form BAYLEE-XXXX-XXXX-XXXX-XXXX, handed out by the project owner. There is no public sign-up form, and we are not pretending otherwise.

Das öffentliche Gateway Baylee Sanctuary ist der Ort für Online-Tische. Es ist eine geschlossene Beta: Ein neues Konto und ein neuer Gast brauchen je einen Schlüssel der Form BAYLEE-XXXX-XXXX-XXXX-XXXX, den der Projektinhaber vergibt. Ein öffentliches Anmeldeformular gibt es nicht, und wir tun auch nicht so.

Signing up asks for no e-mail address: an account is a username and a password. Other players see only your display name and a short tag. A guest needs just a display name and is deleted when it signs out or after 30 days without use. You can delete your account from the client at any time.

Die Anmeldung fragt nach keiner E-Mail-Adresse: Ein Konto ist ein Benutzername und ein Passwort. Andere Spieler sehen nur deinen Anzeigenamen und ein kurzes Kürzel. Ein Gast braucht nur einen Anzeigenamen und wird beim Abmelden oder nach 30 Tagen ohne Nutzung gelöscht. Dein Konto kannst du jederzeit aus dem Client löschen.

Keys come from the project owner, @AceVik on GitHub. Without one, Baylee still plays offline against the house AI, with the deck builder and your own decks, and you can run a gateway of your own for your group.

Schlüssel kommen vom Projektinhaber, @AceVik auf GitHub. Ohne Schlüssel spielt Baylee trotzdem offline gegen die Haus-KI, mit Deckbauer und eigenen Decks, und du kannst für deine Runde ein eigenes Gateway betreiben.

The gateway right now

Das Gateway gerade jetzt

NameName
[CLOSED BETA] Baylee Sanctuary
AddressAdresse
https://baylee.acevik.de
VersionVersion
–
Sign-upAnmeldung
with a keymit Schlüssel
GamesSpiele
–

Read live from the gateway's own /info and /health when this page is served by it. Live gelesen aus /info und /health des Gateways, wenn diese Seite von ihm ausgeliefert wird.

Self-hostingSelbst hosten

Run your own gateway

Ein eigenes Gateway betreiben

You do not need our server. A gateway is three kinds of process: baylee-gateway handles accounts, decks, rooms and routing and needs PostgreSQL; baylee-agent starts one engine process per game; baylee-engine-server is one game. The first two run no rules at all.

Du brauchst unseren Server nicht. Ein Gateway sind drei Arten von Prozessen: baylee-gateway verwaltet Konten, Decks, Räume und das Routing und braucht PostgreSQL; baylee-agent startet pro Spiel einen Engine-Prozess; baylee-engine-server ist ein Spiel. Die ersten beiden kennen keine Regeln.

Put a TLS proxy in front, set BAYLEE_REGISTRATION=invite if you want your own closed circle, create keys with baylee-gateway invite create, and the client's front door takes your address like any other. Card text in 19 languages is an optional ingest of Scryfall's bulk data into the same database.

Setz einen TLS-Proxy davor, setz BAYLEE_REGISTRATION=invite, wenn du einen eigenen geschlossenen Kreis willst, erzeuge Schlüssel mit baylee-gateway invite create, und die Eingangstür des Clients nimmt deine Adresse wie jede andere. Kartentext in 19 Sprachen ist ein optionaler Import von Scryfalls Bulk-Daten in dieselbe Datenbank.

The self-hosting guide walks through it; docs/protocol.md is the reference.

Die Anleitung geht alles durch; docs/protocol.md ist die Referenz.

docker compose up -d
export DATABASE_URL=postgres://baylee:baylee@127.0.0.1:5432/baylee
cargo build --release -p baylee-gateway -p baylee-agent -p baylee-engine-server

export BAYLEE_AGENT_TOKEN=$(openssl rand -hex 32)
RUST_LOG=info BAYLEE_GATEWAY_NAME="My table" ./target/release/baylee-gateway
RUST_LOG=info ./target/release/baylee-agent

Every gateway answers GET /source with its licence, version and commit, without sign-in. The AGPL asks you to offer your source to the people who use your server; that route does it for you.

Jedes Gateway beantwortet GET /source mit Lizenz, Version und Commit, ohne Anmeldung. Die AGPL verlangt, dass du den Leuten, die deinen Server nutzen, den Quellcode anbietest; diese Route erledigt das für dich.

SourceQuellcode

Open source, and it stays that way

Quelloffen, und das bleibt so

Baylee will always be open source and free. No paywall, no paid features, no ads. Not now, not later. The code is under the GNU Affero General Public License, which means anyone who runs a modified gateway for other people must offer them its source too.

Baylee bleibt immer quelloffen und kostenlos. Keine Bezahlschranke, keine kostenpflichtigen Funktionen, keine Werbung. Nicht jetzt, nicht später. Der Code steht unter der GNU Affero General Public License: Wer ein verändertes Gateway für andere betreibt, muss auch ihnen den Quellcode anbieten.

It is written in Rust, one person's project with a lot of help from coding agents, and every change goes through the same gate: formatting, lints, the test suite, and a validation of every card against its printed text. Issues and pull requests are welcome; AGENTS.md and CLAUDE.md are the working rules for people and agents alike.

Geschrieben in Rust, das Projekt einer Person mit viel Hilfe von Coding-Agenten, und jede Änderung geht durch dasselbe Gate: Formatierung, Lints, die Testsuite und eine Prüfung jeder Karte gegen ihren gedruckten Text. Issues und Pull Requests sind willkommen; AGENTS.md und CLAUDE.md sind die Arbeitsregeln für Menschen und Agenten.

The repository right now

Das Repository gerade jetzt

CI on mainCI auf main
–
Last commitLetzter Commit
–
StarsSterne
–
Open issues and pull requestsOffene Issues und Pull Requests
–

Read from GitHub's public API when the page loads, cached in this tab for a while. Nothing about you is sent anywhere but to GitHub. Beim Laden aus GitHubs öffentlicher API gelesen und in diesem Tab eine Weile gemerkt. Über dich geht nichts irgendwohin außer zu GitHub.

ReportsMeldungen

Found something wrong? Tell us

Etwas gefunden? Sag es uns

Press F8 at the table or in the lobby. A report carries its kind, your text, the client version and, at a table, the game's id. Everything more has a checkbox of its own, and every box starts ticked, so untick what you would rather keep before you press Send: system and hardware, the table as you see it, your log (other players renamed "Player A", "Player B", …), your settings, a picture of the Baylee window only, and at a table the game's whole record (every move and every seat's cards, no names). Show what is sent shows every byte. Session tokens are never sent.

While you play offline, the client says once a minute that a game is running: no account, no device id, nothing about the game. Send anonymous usage count under Settings › Privacy & Data switches it off.

Drück F8 am Tisch oder in der Lobby. Eine Meldung enthält ihre Art, deinen Text, die Client-Version und am Tisch die Spiel-ID. Alles Weitere hat ein eigenes Kästchen, und jedes Kästchen ist anfangs angehakt; nimm vor dem Senden das Häkchen weg, wo du etwas lieber behältst: System und Hardware, der Tisch wie du ihn siehst, dein Protokoll (andere Spieler als „Player A“, „Player B“, …), deine Einstellungen, ein Bild nur des Baylee-Fensters und am Tisch die ganze Aufzeichnung des Spiels (jeder Zug und die Karten jedes Platzes, keine Namen). Zeigen, was gesendet wird zeigt jedes Byte. Sitzungs-Tokens werden nie gesendet.

Beim Offline-Spielen sagt der Client einmal pro Minute, dass ein Spiel läuft: kein Konto, keine Geräte-ID, nichts über das Spiel. Anonyme Nutzungszahl senden unter Einstellungen › Datenschutz & Daten schaltet das ab.

Want to talk, find opponents or hear first about new builds? Join the Baylee community on Discord. Anything else, or something only for us: the contact form below.

Lust zu reden, Gegner zu finden oder als Erstes von neuen Builds zu erfahren? Komm in die Baylee-Community auf Discord. Alles andere, oder etwas nur für uns: das Kontaktformular unten.

Rules questions, wrong card behaviour, ideas: open an issue on GitHub. A card that resolved wrongly is the most useful report we can get, because every card has a test and yours becomes one.

Regelfragen, falsches Kartenverhalten, Ideen: eröffne ein Issue auf GitHub. Eine Karte, die falsch verrechnet wurde, ist die nützlichste Meldung, die wir bekommen können, denn jede Karte hat einen Test, und deine wird einer.

docs/privacy.md lists everything the client, the gateway and the feedback service keep. This page keeps nothing: no cookies, no analytics, no fonts from anyone else's server. It asks GitHub for the release list and the CI status; when you open a set in the card status, your browser loads that set's card images from Scryfall; and a message you send with the contact form goes to our feedback service. Those are the only other hosts it talks to.

docs/privacy.md listet alles, was Client, Gateway und Feedback-Dienst speichern. Diese Seite speichert nichts: keine Cookies, keine Analyse, keine Schriften von fremden Servern. Sie fragt GitHub nach der Release-Liste und dem CI-Status; wenn du im Kartenstatus ein Set öffnest, lädt dein Browser dessen Kartenbilder von Scryfall; und eine Nachricht aus dem Kontaktformular geht an unseren Feedback-Dienst. Das sind die einzigen anderen Hosts, mit denen sie spricht.

ContactKontakt

Write to us

Schreib uns

A question, an idea, a game you would like to see, or something you would rather not post in public: this form goes straight to the people behind Baylee. Leave an e-mail address if you want an answer; without one we can only read it.

Eine Frage, eine Idee, ein Spiel, das du gern sehen würdest, oder etwas, das du lieber nicht öffentlich schreibst: Dieses Formular geht direkt an die Leute hinter Baylee. Lass eine E-Mail-Adresse da, wenn du eine Antwort willst; ohne können wir es nur lesen.

A card that resolved wrongly is best reported from the game with F8, because the report can carry the whole game.

Eine Karte, die falsch verrechnet wurde, meldest du am besten im Spiel mit F8, weil die Meldung das ganze Spiel mitnehmen kann.

Who runs this site, with a postal address: the legal notice.Wer diese Seite betreibt, mit Postanschrift: das Impressum.

The form needs JavaScript. Without it, write to us on Discord or GitHub.Das Formular braucht JavaScript. Ohne schreib uns auf Discord oder GitHub.

0 / 5000

I keep your message, and your name and e-mail address only if you give them, to read and answer it: no IP address, no cookie, no tracker. It is deleted 90 days after I have dealt with it, after a year at the latest. More in the privacy notice.Ich speichere deine Nachricht, und Namen und E-Mail-Adresse nur, wenn du sie angibst, um sie zu lesen und zu beantworten: keine IP-Adresse, kein Cookie, kein Tracker. Sie wird 90 Tage, nachdem ich sie erledigt habe, gelöscht, spätestens nach einem Jahr. Mehr in der Datenschutzerklärung.

Thank you, it is on its way.Danke, sie ist unterwegs.

If you left an address, the answer comes from a person, by mail.Wenn du eine Adresse dagelassen hast, kommt die Antwort von einem Menschen, per Mail.