Minimal configuration
| Section | Required fields |
|---|---|
twitch | nick, oauth, channels |
helix | Optional client_id and client_secret for live-status checks |
{
"twitch": {
"nick": "<bot-login>",
"oauth": "${TWITCH_OAUTH}",
"channels": ["<channel-login>"],
"refresh_token": "${TWITCH_REFRESH_TOKEN}",
"client_id": "${TWITCH_CLIENT_ID}"
}
}Sign in with setup
Run go run . -setup -config ./client/config.json from packages/bridge and choose Twitch. Enter the bot account and channel, then choose device login. Open the displayed verification page, enter its code, and sign in as the bot account. The wizard can instead store an existing OAuth token.
Refresh the device token
Device-login tokens last about four hours. Configure twitch.refresh_token and twitch.client_id to let the bridge refresh the token; setup writes those values when device login returns them. Twitch rotates refresh tokens, so the newest pair is saved in twitch.token_file. If a refresh token is rejected, run setup again.
Offline status and EventSub
When helix.client_id and helix.client_secret are configured, the bridge stays silent while the Twitch channel is offline.
For follow and subscription reactions, configure proactive.eventsub and a public HTTPS callback URL. The broadcaster account—not the bot—must authorize the Helix app once with moderator:read:followers and channel:read:subscriptions. Raid reactions do not need those scopes; setup prints the authorization URL.