Linear
@openmatter/integration-linear verifies Linear webhook signatures and
freshness, uses Linear-Delivery for idempotency, and uses organizationId as
credential authority.
import { makeCredentialResolver } from "@openmatter/credentials";import { makeLinearHttpEndpoint, makeLinearIntegration,} from "@openmatter/integration-linear";
const linear = makeLinearIntegration({ credentials: makeCredentialResolver(({ authority }) => vault.linearInstallation(authority), ),});
const endpoint = makeLinearHttpEndpoint({ signingSecret: env.LINEAR_WEBHOOK_SECRET, submit: (native) => app.acceptFrom("linear", native),});Surface
Section titled “Surface”- Events: issue, comment, project, document, Agent notification/session facts, and a generic observation fallback.
- Context: issue, cursor-paged comments, project, and document.
- Effects: issue create/update, issue-comment create/update/delete, project update, and document update.
There is no arbitrary GraphQL Effect. Agent activation, per-issue continuity, proactive sweeps, MCP tools, and OAuth control-plane lifecycle remain explicit Loop or deployment composition.
Provider writes are durable at-least-once. Linear does not expose a universal mutation idempotency key, so a crash between provider success and receipt persistence can repeat a write such as issue or comment creation.
See Linear’s official webhook, GraphQL, and OAuth documentation.