Prerequisites
- Active Pyckle Pro subscription (your API key is at dashboard.html)
- A GitHub repository you own or admin access to
- Pyckle deployed to Fly.io (pyckle app name)
Step 1 — Get your webhook URL
Your webhook URL encodes your API key in the path. Copy it from the dashboard, or construct it:
https://pyckle.co/webhooks/github/YOUR_API_KEY/issues
Tip
Your API key is the same key you use in your MCP config. Find it at dashboard → API Keys.
Step 2 — Create the webhook in GitHub
Go to your repo → Settings → Webhooks → Add webhook.
Fill in:
- Payload URL: your webhook URL from Step 1
- Content type:
application/json - Secret: generate a random string (e.g.
openssl rand -hex 20) — save it, you'll need it next - Which events: select "Let me select individual events" → check Issues and Pull requests
Warning
Only check 'Issues' and 'Pull requests'. Enabling all events will flood Pyckle with noise.
Step 3 — Set the webhook secret on Fly
fly secrets set -a pyckle GITHUB_WEBHOOK_SECRET=
Why this matters
The secret verifies that webhook payloads come from GitHub, not arbitrary HTTP requests. Without it, anyone who knows your webhook URL can inject fake issues.
Step 4 — Verify it works
Open or edit any issue in the repo. Then search:
search_code("auth bug reported issue")
Results tagged with source: "git" and issue_kind: "issue" confirm it's working.
Step 5 — Bulk-import existing issues (optional)
Webhooks only capture new events. To import your backlog:
index_git_issues(
platform="github",
repo="myorg/myrepo",
state="all",
max_issues=500
)
Troubleshooting
- 401 Unauthorized: your API key in the webhook URL doesn't match a valid Pro key. Check dashboard.
- 403 Invalid signature:
GITHUB_WEBHOOK_SECRETon Fly doesn't match the secret in GitHub. Re-runfly secrets set. - Issues not appearing after webhook fires: check GitHub webhook delivery logs (repo → Settings → Webhooks → Recent Deliveries).