Skip to main content
Experimental version.This is the latest in-development version of AI-Implement. Features may change without notice and behavior is not guaranteed. Switch to the latest stable version here.
AI-Implement can send notifications to Slack or Microsoft Teams when issues are dispatched and when runs complete. Notifications are optional — if you do not configure a webhook URL, the orchestrator continues to work normally and simply skips sending notifications.

Configuration

Two environment variables control notifications: Set these on your orchestrator’s Fly app (or in your .env file when running locally):
If NOTIFY_WEBHOOK_URL is not set, notifications are silently skipped. No error is raised and the orchestrator continues to dispatch and poll normally.

What triggers a notification

AI-Implement notifies on two kinds of event. Run lifecycle
  • Dispatch — the orchestrator picks up an issue and dispatches a run. Includes the issue identifier, title, and target repository.
  • Completion — a run finishes. Includes the outcome (completed, failed, or timed_out), a link to the pull request if one was opened, a link to the GitHub Actions run, and the duration.
Orchestrator lifecycle
  • Restarting — the orchestrator is shutting down, so dispatches are paused until it returns.
  • Back up — it is serving again, saying whether this is a new version or the same one.

Deploy notifications

When the orchestrator restarts, it announces the fact itself, so a pause in dispatches doesn’t look like a fault.
This needs no configuration beyond the webhook you already set — the same NOTIFY_TYPE and NOTIFY_WEBHOOK_URL.
You get a matched pair. The outgoing process posts Orchestrator restarting as it shuts down — the only one of these that sends an @channel, since the message that follows answers it. The incoming process replies once it’s serving again:
  • Orchestrator redeployed — a new version is live.
  • Orchestrator back up — the same version came back, so this was a restart rather than a deploy.
Each message names the app, its region, and how long it was down. The restarting notice omits the version deliberately: it is sent by the process being replaced, so the only version it knows is the one going away. These are sent only where the orchestrator can identify its own image, which in practice means Fly.io — running locally is silent. The first deploy after enabling this is silent too, by design: the outgoing process is still running the older build and has no shutdown handler, while the incoming one has no previous version to compare against. Restart the app once afterwards to see the full pair.

Setting up Slack

1

Create a Slack app with an incoming webhook

Go to api.slack.com/apps and create a new app. Choose From scratch, give it a name, and select your workspace.
2

Activate incoming webhooks

In the app settings, open Incoming Webhooks and toggle Activate Incoming Webhooks on.
3

Add a webhook to your workspace

Click Add New Webhook to Workspace, choose the channel where you want notifications to appear, and click Allow.
4

Copy the webhook URL

Copy the webhook URL that appears on the Incoming Webhooks page. It looks like https://hooks.slack.com/services/T.../B.../....
5

Set the environment variables

Setting up Microsoft Teams

1

Open the target Teams channel

In Microsoft Teams, navigate to the channel where you want notifications to appear.
2

Add an incoming webhook connector

Click the (More options) next to the channel name, select Connectors, find Incoming Webhook, and click Configure.
3

Name the webhook and save

Give the webhook a name (e.g. AI-Implement), optionally upload an icon, and click Create.
4

Copy the webhook URL

Copy the webhook URL shown on the confirmation screen.
5

Set the environment variables

Teams notifications use Adaptive Cards, which render a structured fact-set with the issue, repo, PR link, and run duration — the same information as Slack, formatted for the Teams card UI.