Self-hosting the verifier bot
The verifier bot lives at services/verifier-bot in the Polycentric monorepo.
With Docker Compose (local development)
The repo's root compose.yml includes a verifier-bot service built from
services/verifier-bot/Dockerfile.dev. That image is self-contained: it
builds every dependency from source (the Rust→wasm rs-core-uniffi-web, the JS
SDKs, and the bot), so no prebuilt artifacts are needed.
# from the repo root
cp services/verifier-bot/.env.example services/verifier-bot/.env # then edit
docker compose up -d verifier-bot
The bot listens on port 3002 by default (POLYCENTRIC_VERIFIER_BOT_PORT).
Production image
services/verifier-bot/Dockerfile is the production image built in CI. Unlike
the dev image, it consumes the js-core / js-node / rs-core-uniffi-web
dist/ produced by the CI SDK jobs rather than building them. Both images
compile the bot with tsc and run it with node dist/app.js (no tsx at
runtime).
Environment variables
All configuration is via environment variables prefixed with
POLYCENTRIC_VERIFIER_BOT_. Copy services/verifier-bot/.env.example to .env
and fill it in.
Core
| Variable | Description |
|---|---|
POLYCENTRIC_VERIFIER_BOT_SERVERS | Polycentric server(s) to sync with. Comma-delimited for multiple. |
POLYCENTRIC_VERIFIER_BOT_ALLOWED_ORIGINS | Comma-delimited CORS allow-list. |
POLYCENTRIC_VERIFIER_BOT_WEB_APP_URL | Base URL of the web app (OAuth callbacks redirect back here). |
POLYCENTRIC_VERIFIER_BOT_OAUTH_CALLBACK_DOMAIN | Public base domain of this bot, used to build OAuth callback URLs. |
POLYCENTRIC_VERIFIER_BOT_PUPPETEER_EXECUTABLE_PATH | Path to a Chrome/Chromium binary for the headless-browser verifiers (e.g. Kick). |
OAuth credentials
Only needed for the OAuth platforms you enable. Each is a
_CLIENT_ID / _CLIENT_SECRET pair (X uses _API_KEY / _API_SECRET):
POLYCENTRIC_VERIFIER_BOT_DISCORD_CLIENT_ID/_CLIENT_SECRETPOLYCENTRIC_VERIFIER_BOT_X_API_KEY/_API_SECRETPOLYCENTRIC_VERIFIER_BOT_SPOTIFY_CLIENT_ID/_CLIENT_SECRETPOLYCENTRIC_VERIFIER_BOT_INSTAGRAM_CLIENT_ID/_CLIENT_SECRETPOLYCENTRIC_VERIFIER_BOT_PATREON_CLIENT_ID/_CLIENT_SECRET
.env.example is the authoritative, up-to-date list.