AO

GitHub SCM

PRs, reviews, and CI status via the gh CLI. Optional webhook for real-time events.

Slot: scm · Name: github
macOSSupported
LinuxSupported
WindowsSupported

The default SCM. Uses gh for PR + review + CI polling. Optional webhook support for reduced poll latency.

Setup

gh auth login
agent-orchestrator.yaml
scm: github
projects:
  myproject:
    repo: owner/repo

Webhook endpoint

AO's dashboard receives webhook events at:

POST /api/webhooks

The absolute URL is https://<your-ao-host>/api/webhooks. To expose your local dashboard publicly, see Remote access.

GitHub repo settings

In your GitHub repo go to Settings → Webhooks → Add webhook:

  • Payload URL: https://<your-ao-host>/api/webhooks
  • Content type: application/json
  • Secret: the value of your secretEnvVar environment variable
  • Events: Pull requests, Push, Workflow runs, Pull request reviews, Check suites

Config

scm: github
projects:
  myproject:
    repo: owner/repo
    scm:
      webhook:
        secretEnvVar: GITHUB_WEBHOOK_SECRET    # env var holding the HMAC secret

Full webhook.* sub-object:

FieldDefaultDescription
enabledtrueEnable or disable webhook processing
path/api/webhooksOverride the receive path
secretEnvVarName of the env var holding the HMAC secret
signatureHeaderx-hub-signature-256Header carrying the HMAC-SHA256 signature
eventHeaderx-github-eventHeader carrying the event type
deliveryHeaderx-github-deliveryHeader carrying the delivery UUID
maxBodyBytesunlimitedReject payloads larger than this (bytes)

Signature: HMAC-SHA256 over the raw request body. AO compares the computed digest against the value in x-hub-signature-256 using a constant-time comparison.

Polling is still active as a fallback — webhooks are a latency optimisation, not a hard dependency.

Batch enrichment (performance)

On every poll cycle AO issues a single batched GraphQL query that fetches PR state, CI check results, review decisions, and merge readiness for all active sessions in a project at once. This replaces N × 3 REST calls with a single request.

For rate-limit debugging: even with dozens of concurrent sessions, AO stays well under GitHub's primary rate limit. If you do hit limits, the batch enricher backs off and queues — see Troubleshooting.

Rate limits

AO paces gh calls per-project. If you hit limits anyway, batch-enrichment backs off and queues — see Troubleshooting for the diagnostic steps.