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,
},
});
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. Status polling appends the session id to this URL.

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. Beeps marks the agent responder as dropped and records a quota_exceeded result on the polling job. 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.