Devin
Devin is a hosted AI software engineering agent. Beeps creates a Devin session when an alert fires, sends a prompt built from the alert, polls Devin until the session finishes, and surfaces the PR URL on the alert responder.
Prerequisites
Section titled “Prerequisites”- A Devin account with API access.
- A Devin service-user token (
cog_*prefix).
Provider-side setup
Section titled “Provider-side setup”- In the Devin web app, navigate to
https://app.devin.ai/org/<your-org-slug>/settings/org-service-users. Replace<your-org-slug>with your Devin org. - Create a service user and generate its token. It will look like
cog_.... - Save the token; you’ll paste it into beeps as
apiKey.
Beeps verifies the token against Devin’s API at integration-creation time, so a bad token is caught immediately rather than failing on the first alert.
Beeps-side setup
Section titled “Beeps-side setup”Create the integration:
const devinIntegration = await client.integration.create({ name: "Devin Production", provider: "devin", apiKey: process.env.DEVIN_SERVICE_TOKEN, // cog_*});Beeps captures the Devin org id from the token and stores it on the integration metadata. You don’t need to provide it yourself.
Reference the integration from a relay rule:
await client.relay.rules.create(relayId, { name: "Devin Auto-Triage", ruleType: "agent", config: { agentType: "devin", integrationId: devinIntegration.id, pollInterval: 30000, maxPollAttempts: 120, },});Configuration reference
Section titled “Configuration reference”Rule config
Section titled “Rule config”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
agentType | "devin" | yes | — | Selects the Devin agent |
integrationId | string | yes | — | The Devin integration’s id |
endpoint | string (URL) | no | composed from the integration’s org id | Override only for Devin Enterprise / self-hosted; provide a full session-create URL including the org path |
The shared polling and storm-control fields are documented in Relay Rules.
Troubleshooting
Section titled “Troubleshooting”invalid_devin_token at integration creation
Section titled “invalid_devin_token at integration creation”The token was rejected by Devin. Confirm it starts with cog_, hasn’t been revoked, and was generated from https://app.devin.ai/org/<your-org>/settings/org-service-users.
Session stuck “waiting for user”
Section titled “Session stuck “waiting for user””Devin sometimes pauses for human input or approval mid-session. Beeps marks the job completed with a blocked result so the alert isn’t left dangling. Open the Devin session URL (logged when beeps creates the session) to unblock it.
Session ended with “quota_exceeded”
Section titled “Session ended with “quota_exceeded””When your Devin account hits a credit, quota, or billing limit, the session terminates and beeps surfaces it as quota_exceeded on the alert responder. Possible underlying reasons:
out_of_credits— purchased credit pool is empty.out_of_quota/no_quota_allocation— plan-level quota exhausted.usage_limit_exceeded/org_usage_limit_exceeded— per-user or per-org cap hit.total_session_limit_exceeded— concurrent session cap hit.payment_declined— billing failure on file.
Top up or adjust the limit at https://app.devin.ai/settings/usage, then retry the failed alert (or wait for the next one). Beeps doesn’t auto-retry quota failures.