clankie

Clankie
A persistent agent with a life of his own.
Clankie hangs out in your Discord — text and voice — plays Pokemon live on a watch surface, draws pictures, makes videos, browses the web, remembers people and what happened yesterday, and codes. When work is bigger than one pair of hands, he leads a fleet of coding agents through herdr panes you can watch.
What he does
- Discord teammate. A real member of your server: bounded text turns, consented group voice, pictures ride his replies, and he remembers the people he talks to. Ask him to search or play YouTube music in voice; he can also stay silent — silence is a real answer. Each media-enabled active Discord body owns one native Vox child for voice capture, TTS, and audible music; a text-only official-bot process does not spawn Vox.
- Plays games on stream. Pokemon FireRed/Emerald from his own credentialed seat in a hosted PokeAgents world, watchable live in a Discord Activity with voice commentary over the run. Other agents join the same world through PokeAgents' own MCP, CLI, or skill — parent conversation plus a driver (MCP Task, subagent, or CLI loop) — and get their own seats; nobody takes Clankie's body or receives his room input.
- Makes things. Image and video generation behind one provider-neutral seam (OpenAI, Google, Grok); a browser via the agent-browser MCP host.
- Codes and leads. The same pi coding tools every agent has, plus the herdr CLI for fanning work out to visible agent panes — from the console, and from Discord when the person asking is on the system-actor allowlist. No mission protocol — he delegates, watches, and reports what actually happened.
- One Clankie everywhere. The TUI, Discord, voice, and gameplay are rooms, not separate agents: he can read his other rooms, and his persona is owner-authored settings, never caller input.
Get started
On a Mac running macOS 14 or newer on Apple silicon:
curl -fsSL https://raw.githubusercontent.com/Volpestyle/clankie/main/install.sh | sh
clankie
The launcher starts the service and opens the console. In it, /auth stores a
provider key or OAuth login in the Keychain-backed credential broker and
/model picks the captain model. That is the whole setup; talk to him.
/persona, /image-model, /discord, and /connect are optional.
clankie doctor prints the install card whenever you want to know what is
configured.
Reach him from your phone
The iPhone and iPad app is a companion that reaches your Mac through
api.clankie.bot; nothing of his runs in the cloud. Four more steps:
-
Sign the Mac in.
/gateway, choose Enable remote access, enter the email your invitation named, then the one-time code it receives. That enrolls this Mac at the public doorway under your account. There are no URLs, host ids, or tokens to copy. -
Keep him running.
clankie autostart enableClankie and his relay now start when you log in. Leave the Mac awake and on power if you want him reachable while you are away.
-
Install the app from your TestFlight invitation and open it.
-
Pair the phone.
clankie pairScan the QR, or type the code, in the app; review the access it offers and connect. Each offer is single-use.
clankie deviceslists and revokes paired devices.
From here the app is Messages, the fleet, and the terminal on your Mac.
To invite someone, an operator runs infra/aws/accounts/deploy.sh invite <email>
before that person reaches step 1
(infra/aws/accounts).
Reference
Every headless noun's flags, JSON, and exit codes are in
docs/cli.md; clankie help prints the index. Where each
secret lives and who verifies it is in
docs/credentials.md. The installed layout and version
pinning are in docs/distribution.md.
From a checkout
Install Node 24+, pnpm 11+, Git, Rust 1.88+, and CMake, then:
corepack enable
pnpm install
pnpm doctor # toolchain and credential status
pnpm cli:install # symlink the `clankie` launcher into ~/.local/bin
clankie
The steps above are the same from a checkout.
Apps
| App | What it is |
|---|---|
apps/clankie | The service: captain, tools, bodies, API (:4310). HTTP catalog |
apps/tui | Operator console and the clankie launcher |
apps/menu-bar | Native macOS menu bar: private local voice and operator conversation tails |
apps/discord-bridge | Official bot: text, voice, attachments |
apps/discord-user-session | Personal-lab voice, screen-watch, and Go Live body (off by default) |
apps/discord-activity | The watch-me-play surface |
apps/relay | Remote access for the phone/desktop app |
apps/gateway | The public AWS doorway that routes back to a configured Mac |
apps/vox | Sole native Discord media owner behind an AGPL process boundary |
packages/play is the play mind above the body
seam; packages/ holds the shared contracts. The body itself is his seat in a
PokeAgents world (ADR 0145, and
ADR 0129 for the identity boundary).
The iPhone, iPad, and macOS companion app is a separate private repo
(clankie-app).
Development
pnpm typecheck
pnpm deadcode
pnpm test
pnpm check # required final check: fmt, lint, docs links, typecheck, tests
pnpm play:live # watch a playthrough without the service or a Discord ask
pnpm discord:readiness
If you drive agent panes with herdr, link Clankie's
plugin once to get his fleet board, operator console, and status popup as
first-class herdr panes — pnpm doctor (checkout) or clankie doctor
(any install) reports whether it is linked:
herdr plugin link "$PWD/integrations/herdr-plugin"
An installed release ships the same plugin; clankie doctor reports
herdrPlugin.bundlePath.
Requirements, keybindings, and troubleshooting live in
integrations/herdr-plugin/README.md.
See docs/architecture.md for the system shape,
docs/cli.md for the headless clankie command contract,
docs/distribution.md for binary installation,
docs/credentials.md for bot/user/internal token
boundaries, and docs/discord-media.md for YouTube
music, the Activity, Go Live, and share watching. Read AGENTS.md
before pointing a coding agent at this repo.
License
Apache-2.0 except apps/vox, which is AGPL-3.0-or-later under its own
LICENSE. Third-party dependencies retain their own
licenses; see THIRD_PARTY_NOTICES.md.
