Install ThrillhouseBot

This creates the GitHub App and gives you the credentials the bot needs to run (App ID, private key, webhook secret, OAuth client ID/secret). Do this first — the bot can't start until these values are in your .env.

1. Where will the bot run?

Enter the public hostname where GitHub will reach your bot (for local dev with Smee.io, use your Smee channel URL — webhooks are then registered at the channel root, which the smee client forwards to the bot's local /api/webhook, and the OAuth callback points at http://localhost:8080, where your browser reaches the bot directly). The manifest is built right here in your browser; nothing is sent anywhere until you submit it to GitHub.


App URL
Webhook URL
Callback URL

2. Create the app

3. Collect the credentials

On the confirmation page, note the App ID, generate a private key, and create a webhook secret. Copy the Client ID and Client secret from the app's Identifying and authorizing users settings (needed for dashboard login), then follow the getting started guide to put them in .env and start the bot.

GitHub also redirects to your host with a one-time ?code= parameter (the bot isn't running yet, so the page won't load — that's fine). You can exchange it for a ready-made .env instead of copying values by hand:

gh api --method POST /app-manifests/<code>/conversions \
  | java scripts/GenEnv.java --host <your-host>

Using Smee? Don't pass the Smee URL as --host (that writes DASHBOARD_URL=https://<host>); run it without --host and then set DASHBOARD_URL=http://localhost:8080 in the generated .env — dashboard login only works when DASHBOARD_URL matches the callback registered above (http://localhost:8080 for Smee installs).