Linear

Connect CAF Orchestrator to Linear so your pipeline triggers automatically from ticket status.

CAF Orchestrator watches for status changes on Linear tickets via webhook, then queues the matching phase. This page adds Linear-specific setup on top of the basics covered in CAF Orchestrator.

1. Create an API key

In Linear, go to Settings → API → Personal API keys and create a new key with read access to your workspace. Add it to the Orchestrator's .env as LINEAR_API_KEY.

2. Register a webhook

Under Settings → API → Webhooks, add a new webhook:

  • URL: https://<your-vps-host>/webhooks/linear
  • Event: Issue — specifically status changes (state changed)
  • Secret: match this to the Orchestrator's WEBHOOK_SECRET

3. Agree on a status mapping

The Orchestrator triggers phases based on ticket status. A recommended convention:

Linear statusPhase triggered
Ready for PlanPlan
Ready for ImplementImplement
Ready for VerifyVerify
In ReviewWaiting for human review (no automatic trigger)

These status names are just a convention, not hardcoded — adjust them to match your team's workflow in the Orchestrator's configuration.

What happens once the webhook is received

The flow is the same as described in CAF Orchestrator: the payload gets verified, a job is queued in BullMQ, then a headless Claude Code agent for that phase runs.