Linear Integration
This page describes Otto Builder, Otto's ticket-driven workflows that work from Linear or Jira tickets. It is separate from Otto Detective, the pull request reviewer, which never commits, pushes, or merges. Start with the Introduction for Otto Detective.
Connect Otto to Linear to automatically respond to tickets and updates.
Connecting Linear
- Go to Settings → Integrations in your Otto dashboard
- Click Connect Linear
- Sign in to Linear and authorize Otto
- Select which teams Otto should have access to
Webhook Events
Otto listens for these Linear events:
| Event | Description |
|---|---|
| Issue created | New ticket is created |
| Issue updated | Ticket title, description, or fields change |
| Issue status changed | Ticket moves between statuses |
| Label added/removed | Labels are modified |
| Comment created | Someone comments on a ticket |
Setting Up Triggers
Status-Based Triggers
Trigger Otto when a ticket moves to a specific status:
- Go to Triggers → Create Trigger
- Select Linear status change
- Choose the status (e.g., "In Progress")
- Select which agent should handle it
- Optionally filter by team or project
Label-Based Triggers
Trigger Otto when a specific label is applied:
- Create a label in Linear (e.g.,
otto:implement) - In Otto, create a trigger for Linear label added
- Select the label
- Choose the agent
Comment-Based Triggers
Trigger Otto when someone mentions it in a comment:
- Create a trigger for Linear comment created
- Set a keyword filter (e.g.,
@ottoorotto:) - Otto will respond to comments containing that keyword
Project Mapping
Map Linear projects to GitHub repositories:
- Go to Projects in Otto
- Click Add Project
- Select a Linear project
- Select the corresponding GitHub repository
- Choose the default branch
Now Otto knows where to create PRs for tickets in that project.
Best Practices
Use Dedicated Statuses
Create a status specifically for Otto-handled work:
Backlog → Todo → Otto Working → In Review → Done
Prefix Labels
Use a consistent prefix for Otto-related labels:
otto:implement— Full implementationotto:plan— Planning onlyotto:review— Review existing code
Team Isolation
If you have multiple teams, consider separate agents for each with team-specific context.
