GitHub
Connect Archon to GitHub so you can interact with your AI coding assistant from issues and pull requests.
Prerequisites
Section titled “Prerequisites”- Archon server running (see Getting Started)
- GitHub repository with issues enabled
GITHUB_TOKENset in your environment (see Getting Started)- Public endpoint for webhooks (see ngrok setup below for local development)
Step 1: Generate Webhook Secret
Section titled “Step 1: Generate Webhook Secret”On Linux/Mac:
openssl rand -hex 32On Windows (PowerShell):
-join ((1..32) | ForEach-Object { '{0:x2}' -f (Get-Random -Maximum 256) })Save this secret — you’ll need it for steps 3 and 4.
Step 2: Expose Local Server (Development Only)
Section titled “Step 2: Expose Local Server (Development Only)”Using ngrok (Free Tier)
Section titled “Using ngrok (Free Tier)”# Install ngrok: https://ngrok.com/download# Or: choco install ngrok (Windows)# Or: brew install ngrok (Mac)
# Start tunnelngrok http 3090
# Copy the HTTPS URL (e.g., https://abc123.ngrok-free.app)# Free tier URLs change on restartKeep this terminal open while testing.
Using Cloudflare Tunnel (Persistent URLs)
Section titled “Using Cloudflare Tunnel (Persistent URLs)”# Install: https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/cloudflared tunnel --url http://localhost:3090
# Get persistent URL from Cloudflare dashboardPersistent URLs survive restarts.
For production deployments, use your deployed server URL (no tunnel needed).
Step 3: Configure GitHub Webhook
Section titled “Step 3: Configure GitHub Webhook”Go to your repository settings:
- Navigate to:
https://github.com/owner/repo/settings/hooks - Click “Add webhook”
- Note: For multiple repositories, you’ll need to add the webhook to each one individually
Webhook Configuration:
| Field | Value |
|---|---|
| Payload URL | Local: https://abc123.ngrok-free.app/webhooks/githubProduction: https://your-domain.com/webhooks/github |
| Content type | application/json |
| Secret | Paste the secret from Step 1 |
| SSL verification | Enable SSL verification (recommended) |
| Events | Select “Let me select individual events”: - Issues - Issue comments - Pull requests |
Click “Add webhook” and verify it shows a green checkmark after delivery.
Step 4: Set Environment Variables
Section titled “Step 4: Set Environment Variables”WEBHOOK_SECRET=your_secret_from_step_1Important: The WEBHOOK_SECRET must match exactly what you entered in GitHub’s webhook configuration.
Step 5: Configure Streaming (Optional)
Section titled “Step 5: Configure Streaming (Optional)”The GitHub adapter always uses batch mode (hardcoded) since GitHub issues and PRs are best served by single complete comments rather than streaming updates.
Interact by @mentioning your bot in issue or PR comments:
@archon can you analyze this bug?@archon prime the codebase@archon review this implementationFirst mention behavior:
- Automatically clones the repository to
~/.archon/workspaces/ - Detects and loads commands from
.archon/commands/if present - Injects full issue/PR context for the AI assistant
Subsequent mentions:
- Resumes existing conversation
- Maintains full context across comments
Adding Additional Repositories
Section titled “Adding Additional Repositories”Once your server is running, add more repos by creating a webhook with the same secret.
Via GitHub UI: Repo Settings > Webhooks > Add webhook
- Payload URL: Your server URL +
/webhooks/github - Content type:
application/json - Secret: Same
WEBHOOK_SECRETfrom your.env - Events: Issues, Issue comments, Pull requests
Via CLI:
# Get your existing webhook secretWEBHOOK_SECRET=$(grep WEBHOOK_SECRET .env | cut -d= -f2)
# Add webhook to new repo (replace OWNER/REPO)gh api repos/OWNER/REPO/hooks --method POST \ -f "config[url]=https://YOUR_DOMAIN/webhooks/github" \ -f "config[content_type]=json" \ -f "config[secret]=$WEBHOOK_SECRET" \ -f "events[]=issues" \ -f "events[]=issue_comment" \ -f "events[]=pull_request"Important: The webhook secret must be identical across all repos.