Skip to content

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.

  • A Devin account with API access.
  • A Devin service-user token (cog_* prefix).
  1. 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.
  2. Create a service user and generate its token. It will look like cog_....
  3. 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.

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,
},
});
FieldTypeRequiredDefaultDescription
agentType"devin"yesSelects the Devin agent
integrationIdstringyesThe Devin integration’s id
endpointstring (URL)nocomposed from the integration’s org idOverride 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.

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.

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.

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.