Delivery loop.

Regente connects the local coordination graph to PR review and CI without a cloud relay. It signs a local GitHub App installation token, maps file-scoped signals to the agent or task that owns that path, and leaves ambiguous events unresolved instead of inventing an owner.

Sync a PR

Run this from the coordinated repo. Configure a GitHub App private key once, then poll PR metadata, issue comments, review comments, changed files, failed check runs, and failed commit statuses. Use --auth gh only when you intentionally want the GitHub CLI fallback.

regente github app configure --app-id 123 --installation-id 456 --private-key-path ~/.config/regente/github-app.pem
	regente github sync --repo owner/repo --pr 123
	regente github sync --repo owner/repo --pr 123 --auth gh
	regente github sync --repo owner/repo --pr 123 --json

The sync is idempotent by source id, so rerunning it does not duplicate the same routed event. Error messages distinguish missing App config, missing repo access, bad PR numbers, missing gh for fallback mode, and invalid API output.

Routing rules

SignalWhat Regente does
Review comment with a path Active file/symbol claim, then recent claim, then task path owner.
Issue-level PR comment Unresolved. It has no file path, so Regente does not guess.
Failed check run or commit status on a one-file PR The changed file's owner, using the same ownership lookup.
Failed check run or commit status on a multi-file PR Unresolved. A human can triage it from the dashboard.

The ownership lookup is deliberately conservative: current claim first, recently released claim next, then task ownership by path. If none of those is clear, the event is kept as unresolved for a human.

Dashboard panel

The command center's Delivery panel reads the same signed event log as the CLI. It shows routed PR comments, routed CI failures, unresolved events, repo/PR, owner, path, route source, and age. Empty state means no real PR/CI events have been synced yet.

regented
# open http://127.0.0.1:8787 and look for Delivery

Daily report

The daily report turns coordination into a readable summary: conflicts blocked, handoffs completed, PR comments routed, CI failures routed, unresolved delivery events, active agents, and an estimated time-saved number.

regente report daily
regente report daily --json

Slack and Discord alerts

Alerts are env-only in this release; Regente does not store webhook URLs in repo state. Configure one or both:

export REGENTE_SLACK_WEBHOOK_URL="https://hooks.slack.com/services/..."
export REGENTE_DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/..."
regente report daily --alerts

Alert events:

conflict blockedPosted when the matching local event is written.
auto-handoff completedPosted when the matching local event is written.
PR comment routedPosted when the matching local event is written.
CI failure routedPosted when the matching local event is written.
daily report generatedPosted when the matching local event is written.

For tests, set REGENTE_WEBHOOK_DRY_RUN_PATH=/tmp/regente-webhooks.jsonl. Regente writes payloads there as JSONL instead of posting to Slack or Discord.

Current limits

This is the local-first MVP, not a hosted webhook relay. It uses a local GitHub App installation token by default, runs only when you invoke it, and does not watch PRs continuously. Multi-file CI failures stay unresolved until a human assigns them or a later hosted loop can gather more context.