Chess
Chess in a channel, against each other or the computer at three levels.
JMThomas00/concord-chess
Plugins are programs.
A plugin is its own program that a server runs alongside itself. It adds channels with games, boards or bots, and never needs a change to Concord.
Concord launches the plugin, and it connects back to the server as a privileged client. Concord's part is giving people a way to use it: a chat channel, or a pane in the channel view.
A bot that answers in its channel, a game table with seats and spectators, a full-screen pane you drive from the keyboard, or an existing terminal program shown in a channel.
No config files for admins. A plugin's settings appear as forms in Concord, for the whole server or per channel. Secrets are encrypted at rest, and only the plugin sees them.
Some plugins ship code that runs in each viewer's client, for instant keys and exact timing: no files, no network, no other programs. You're asked first, and you can turn it off in Settings → Display.
Every plugin we've made also runs on its own in a terminal. The games play hotseat, against the computer, or over the network.
For server admins. Concord downloads the right build for your server, checks it, and starts it, with no restart.
On your server, press Ctrl+B, open Plugins, then press I.
Like JMThomas00/concord-chess. Concord fetches the latest release.
The plugin adds a channel kind, like a chess table. Later, U updates it.
The real client · Ctrl+B → Plugins
The ones we've made. Each game has seats, challenges, spectators, a computer opponent, achievements and a leaderboard, and each also plays standalone in a terminal, even over the network.
Chess in a channel, against each other or the computer at three levels.
JMThomas00/concord-chess
American checkers (English draughts), hotseat, computer or network.
JMThomas00/concord-checkers
The abstract strategy game, on boards from 3×3 to 8×8.
JMThomas00/concord-tak
X and O drawn as pictures in your theme's colors, with a sound for each move. The hardest computer never loses.
JMThomas00/concord-tictactoe
How fast are you? It runs on each player's own computer, so the timing is exact however far away the server is. Each channel keeps a leaderboard.
JMThomas00/concord-reflex
A keyboard-driven kanban board: lanes, cards, and moving them along without touching the mouse.
JMThomas00/Tukan
AI personas that chat. Point it at any OpenAI-compatible model, hosted or local like Ollama, and replies stream into the channel as they're written.
JMThomas00/Mynah
The plugin SDK handles the connection, panes, game tables and testing. One command gives you a working repo, with a release workflow that Concord's installer understands.
go install github.com/JMThomas00/Concord/sdk/cmd/concord-plugin@latest concord-plugin new concord-trivia --template game
Push it to GitHub, tag a release, and anyone can install it by typing you/concord-trivia.
Not using Go? sdk/PROTOCOL.md covers the wire protocol for any language.
We know your agent does all the work, but at the end of the day you're the one calling the shots.
The Concord skill teaches an AI agent everything in this page and more: the SDK, every plugin.toml field, the game table kit, pictures and sounds, sandboxed client code, packaging, testing, and the mistakes that cost real debugging time.
It installs into Claude Code's skills folder. Other agents that read SKILL.md skills can use the same folder.
"Make me a Concord plugin that runs trivia night in a channel, with a leaderboard."
git clone --depth 1 --filter=blob:none --sparse --branch pre-v0.1.0-fixes https://github.com/JMThomas00/Concord.git /tmp/concord-skill git -C /tmp/concord-skill sparse-checkout set .claude/skills/concord mkdir -p ~/.claude/skills && cp -R /tmp/concord-skill/.claude/skills/concord ~/.claude/skills/ rm -rf /tmp/concord-skill
git clone --depth 1 --filter=blob:none --sparse --branch pre-v0.1.0-fixes https://github.com/JMThomas00/Concord.git /tmp/concord-skill git -C /tmp/concord-skill sparse-checkout set .claude/skills/concord mkdir -p ~/.claude/skills && cp -R /tmp/concord-skill/.claude/skills/concord ~/.claude/skills/ rm -rf /tmp/concord-skill
git clone --depth 1 --filter=blob:none --sparse --branch pre-v0.1.0-fixes https://github.com/JMThomas00/Concord.git "$env:TEMP/concord-skill" git -C "$env:TEMP/concord-skill" sparse-checkout set .claude/skills/concord New-Item -ItemType Directory -Force "$HOME/.claude/skills" | Out-Null Copy-Item -Recurse -Force "$env:TEMP/concord-skill/.claude/skills/concord" "$HOME/.claude/skills/" Remove-Item -Recurse -Force "$env:TEMP/concord-skill"
Then open your agent and ask for a plugin. In Claude Code, /concord calls it up directly.
man concord-plugins
A plugin is its own program that a server runs alongside itself. Concord launches it, and it connects back as a privileged client. It adds channels with games, boards or bots, and never needs a change to Concord.
botanswers in its channel, or when @mentioned
gamea table: seats, challenges, spectators, a computer opponent
panea full-screen app in a channel, driven from the keyboard
ptyan existing terminal program shown in a channel
Forms in Concord, server-wide or per channel. No config files. Secrets are encrypted at rest; only the plugin sees them.
Optional WebAssembly that runs in each viewer's client, sandboxed: no files, no network, no other programs. Members are asked first; Settings → Display turns it off.
# in Concord: Ctrl+B → Plugins → I
install a plugin repo JMThomas00/concord-chess ✓ found the latest release for this server ✓ checked ✓ started # no restart · U updates it later
» for server admins: Ctrl+B → Plugins → I, then type owner/repo.
# a chess table in a channel
╭─ SERVERS ──────────╮╭─ CHANNELS ─────────────╮╭─ # chess · Esc leaves ───────────────────────────────────────────────╮╭─ MEMBERS ──────────────────╮ │▶ The Vineyard ● ││ The Vineyard ││ ││── ONLINE (1) ── │ │ ││ ││ ▸ White: merlot Black: Computer ││ (M) ● merlot Admin │ │ ││ # general ││ ││ │ │ ││ ▼ WELCOME ││ 8 ♜︎ ♝︎ ♛︎ ♚︎ ♝︎ ♜︎ ││── OFFLINE (6) ── │ │ ││ # announcements ││ ││ (B) ○ bramble │ │ ││ ▼ THE VINEYARD ││ ││ (J) ○ juniper │ │ ││ # show-and-tell ││ 7 ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ││ (N) ○ nova │ │ ││ # terminal-setups ││ ││ (P) ○ pixel │ │ ││ # help ││ ││ (S) ○ sage │ │ ││ ▼ HANGOUT ││ 6 ♞︎ ││ (V) ○ vex │ │ ││ # games ││ ││ │ │ ││ # music ││ ││ │ │ ││ ♪︎ Lounge ││ 5 ││ │ │ ││ ♪︎ Late Night ││ ││ │ │ ││ >♞︎ chess ││ ││ │ │ ││ ││ 4 ♝︎ ♞︎ ││ │ │ ││ ││ ││ │ │ ││ ││ ││ │ │ ││ ││ 3 ♞︎ ││ │ │ ││ ││ ││ │ │ ││ ││ ││ │ │ ││ ││ 2 ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ││ │ │ ││ ││ ││ │ │ ││ ││ ││ │ │ ││ ││ 1 ♜︎ ♞︎ ♝︎ ♛︎ ♚︎ ♜︎ ││ │ │ ││ ││ ││ │ │ ││ ││ a b c d e f g h ││ │ │ ││ ││ your move: Enter picks a piece · : to type a move ││ │ │ ││ ││ M: menu ││ │ │ ││ ││ ││ │ │ ││ ││ ││ │ │ ││ │╰──────────────────────────────────────────────────────────────────────╯│ │ │ ││ │╭──────────────────────────────────────────────────────────────────────╮│ │ │ ││ ││Keys are going to Chess Table — Ctrl+] to leave ││ │ │ ││ │╰──────────────────────────────────────────────────────────────────────╯│ │ │ ││ │ │ │ │ ││ │ │ │ │ ││ │ │ │ ╰────────────────────╯╰────────────────────────╯ ╰────────────────────────────╯ ● Connected | merlot#3327 Moving channel... Tab: Navigate | Ctrl+S: Settings | Ctrl+B: Server Settings | Type /help | Ctrl+Q: Quit
# the plugins we've made
| kind | repo | what it is |
|---|---|---|
| game | JMThomas00/concord-chess | chess, three computer levels |
| game | JMThomas00/concord-checkers | American checkers |
| game | JMThomas00/concord-tak | Tak, 3×3 to 8×8 |
| game | JMThomas00/concord-tictactoe | pictures and sounds in your theme |
| game | JMThomas00/concord-reflex | reaction time, runs on your computer |
| board | JMThomas00/Tukan | kanban, keyboard-driven |
| bot | JMThomas00/Mynah | AI personas, any OpenAI-compatible model |
every game: seats · challenges · spectators · computer opponent · achievements · leaderboard · plays standalone too
concord-plugin new concord-trivia --template game
go install github.com/JMThomas00/Concord/sdk/cmd/concord-plugin@latest concord-plugin new concord-trivia --template game
» tag a release, and admins install it as you/concord-trivia. other languages: sdk/PROTOCOL.md
ls ~/.claude/skills/concord
SKILL.md sdk.md manifest.md games.md media.md client-code.md passthrough.md packaging.md testing.md gotchas.md
We know your agent does all the work, but at the end of the day you're the one calling the shots.
The Concord skill teaches an AI agent the SDK, every plugin.toml field, the game table kit, pictures and sounds, sandboxed client code, packaging and testing.
— macOS and Linux
git clone --depth 1 --filter=blob:none --sparse --branch pre-v0.1.0-fixes https://github.com/JMThomas00/Concord.git /tmp/concord-skill git -C /tmp/concord-skill sparse-checkout set .claude/skills/concord mkdir -p ~/.claude/skills && cp -R /tmp/concord-skill/.claude/skills/concord ~/.claude/skills/ rm -rf /tmp/concord-skill
— Windows (PowerShell)
git clone --depth 1 --filter=blob:none --sparse --branch pre-v0.1.0-fixes https://github.com/JMThomas00/Concord.git "$env:TEMP/concord-skill" git -C "$env:TEMP/concord-skill" sparse-checkout set .claude/skills/concord New-Item -ItemType Directory -Force "$HOME/.claude/skills" | Out-Null Copy-Item -Recurse -Force "$env:TEMP/concord-skill/.claude/skills/concord" "$HOME/.claude/skills/" Remove-Item -Recurse -Force "$env:TEMP/concord-skill"
» then ask your agent: "make me a Concord plugin that runs trivia night in a channel." in Claude Code, /concord calls it up.