Kai is a virtual card table. It lets you arrange cards in a 3D space, build and save decks, and share a table with other players. It is written in Rust and uses Bevy, a game engine, to draw the table.
Kai is under active development. Desktop, browser, and Android clients exist; they do not yet have identical capabilities or a finished installation experience.
- Move cards around a free-form table, where players handle the rules themselves.
- Use a game plugin to validate actions and guide play.
- Build, import, save, and share Riftbound decks.
- Host a table or join another player using an invitation.
- Find an opponent searching for a two-player table with the same settings.
- Undo table actions with the other players' agreement.
- Add an AI opponent on desktop, Android, or in your browser, using your own OpenRouter/NanoGPT key or a keyless random player.
Rules support depends on the selected plugin. Kai is not an official client for the card games it supports, and a supported deck does not guarantee that every interaction is implemented correctly.
You can try Kai in your browser without installing development tools. The browser app uses a public content gateway to load game content; availability depends on the service and your network connection.
For Android, download the latest APK or a
development prerelease. Android may ask
you to allow installation from your browser. In Obtainium, use
https://github.com/abysl/kai, enable prereleases, use Name (smart) ordering,
and select the kai-0.1.*-android.apk asset. Use the version shown in Settings
when reporting a problem.
This repository contains source code, not a bundled card collection. Building from source currently requires development tools and a neighboring checkout of the game framework.
Start with the development guide to build from source. Once it is running, the player guide explains the screens, decks, invitations, and controls without assuming you know Kai.
For a bug report, include your operating system, the version shown in Settings, what you expected, and steps to reproduce it. Do not include account keys, invitation secrets, or private game logs.
Kai handles what players see and do. Agni checks and records game actions. agni-rfb contains the separately maintained Riftbound plugin. Spirit Library stores and exchanges content between devices. You do not need to understand those libraries to use the table.
The repository split is still in progress: Kai currently reads some deck data from Agni and its build helpers still build game modules there. See the development guide before changing dependencies.
- Player guide: use an already-running application.
- Contributing: prepare your first change.
- Development guide: setup, builds, tests, and troubleshooting.
- Architecture: find the code responsible for a behavior.
- Documentation index: specialist references and their audiences.
Project code is licensed under GNU GPL version 3. Third-party game names, rules, artwork, fonts, and dependencies are not automatically covered by that license. Do not add card scans, downloaded catalogs, signing keys, or personal stores to a contribution. Content needed during play must be obtained separately with appropriate permission.