Linear Tracker Plugin
The Linear tracker plugin integrates with Linear’s issue tracking system, allowing Agent Orchestrator to manage tasks, track progress, and update issue state as agents work.Overview
This plugin uses Linear’s GraphQL API and supports two authentication methods:- Direct API: Using
LINEAR_API_KEYenvironment variable - Composio SDK: Using
COMPOSIO_API_KEYfor integrated workflow automation
Linear uses alphanumeric identifiers (e.g.,
INT-1234) rather than numeric issue numbers. Branch names follow the convention feat/INT-1234.Configuration
Configure the Linear tracker plugin in youragent-orchestrator.yaml:
Configuration Options
Linear team UUID. Required for creating issues and filtering by team.Find your team ID in Linear’s URL or via the API.
Linear workspace URL slug for generating issue URLs.Example: If your Linear URL is
https://linear.app/my-workspace/issue/INT-123, the slug is my-workspace.Requirements
Authentication Setup
Option 1: Direct API KeyFinding Your Team ID
Features
Issue Operations
Get Issue Fetch a single issue by identifier:The Linear API automatically filters by
teamId from the project config, so you only see issues for your team.Issue State Mapping
Linear State Type → Tracker State:| Linear State | Tracker State |
|---|---|
triage | open |
backlog | open |
unstarted | open |
started | in_progress |
completed | closed |
canceled | cancelled |
Linear has rich workflow states. The plugin maps them to standardized tracker states while preserving Linear’s native state information.
Priority Levels
Linear uses numeric priorities:| Priority | Value | Typical Use |
|---|---|---|
| No priority | 0 | Unset |
| Urgent | 1 | Critical bugs |
| High | 2 | Important features |
| Normal | 3 | Standard work |
| Low | 4 | Nice-to-have |
Prompt Generation
The plugin generates context-aware prompts for agents:Branch Naming
The plugin generates branch names from issue identifiers:Issue URLs and Labels
Usage Example
Start Agent on Issue
Auto-Update on Progress
Troubleshooting
Error: LINEAR_API_KEY environment variable is required
Error: LINEAR_API_KEY environment variable is required
The plugin couldn’t find authentication credentials.Solution:
Error: Linear tracker requires 'teamId' in project tracker config
Error: Linear tracker requires 'teamId' in project tracker config
The Find your team ID in Linear’s API explorer.
teamId field is missing from project configuration.Solution:Error: Composio SDK (@composio/core) is not installed
Error: Composio SDK (@composio/core) is not installed
You’re using Or switch to direct API with
COMPOSIO_API_KEY but the SDK isn’t installed.Solution:LINEAR_API_KEY.Error: No workflow state of type 'completed' found
Error: No workflow state of type 'completed' found
Your Linear team doesn’t have a workflow state of the required type.Linear requires specific workflow state types:
unstartedfor “open”startedfor “in_progress”completedfor “closed”
Timeout errors
Timeout errors
Linear API requests have a 30-second timeout.Solutions:
- Check network connectivity
- Verify Linear API status: https://status.linear.app/
- Check API rate limits (direct API has limits)
- Use Composio SDK for better rate limit handling
User not found when setting assignee
User not found when setting assignee
The plugin looks up users by Find display names in Linear’s user settings.
displayName (not email or ID).Solution:Labels not found when creating issue
Labels not found when creating issue
The plugin looks up labels by name for your team.Solution:
- Create labels in Linear first (Settings → Labels)
- Use exact label names (case-sensitive)
- Labels are best-effort: if not found, issue is still created without them
API Reference
Tracker Interface Methods
getIssue(identifier, project)- Fetches issue details by Linear identifier
- Returns:
Issueobject with all fields including priority
- Checks if issue is in completed or canceled state
- Returns:
boolean
- Generates Linear issue URL
- Returns:
string
- Extracts issue identifier from URL
- Returns:
string(e.g.,"INT-1234")
- Generates branch name from identifier
- Returns:
string(e.g.,"feat/INT-1234")
- Creates context prompt for agent
- Returns:
string(formatted prompt with priority)
- Lists issues with optional filters
- Automatically filters by teamId
- Returns:
Issue[]
- Updates issue state/labels/assignee/comments
- Handles workflow state transitions
- Returns:
void
- Creates a new issue
- Returns:
Issue(created issue)
Advanced Usage
GraphQL Transport
The plugin uses a transport abstraction that supports two backends:Custom Workflow States
When updating issue state, the plugin:- Queries your team’s workflow states
- Finds the appropriate state by type
- Updates the issue to that state
Label Management
Labels are additive: using
updateIssue with labels merges them with existing labels, it doesn’t replace them.Priority Workflow
Comment Workflow
Integration with Other Plugins
With SCM Plugin
The tracker and SCM plugins work together for full issue-to-PR workflow:- Tracker generates prompt from Linear issue (with priority context)
- Agent writes code
- SCM creates PR with Linear issue link
- Reactions auto-close issue when PR merges
With Workspace Plugin
The tracker provides the branch name for workspace creation:With Composio
When using Composio SDK, you get additional benefits:- Centralized credential management
- Workflow automation triggers
- Multi-tool integrations
- Better rate limit handling
Performance Considerations
GraphQL Queries
The plugin uses optimized GraphQL queries:- Fetches only required fields
- Uses variables to prevent injection
- Batches related operations when possible
Caching
The Composio SDK client is cached:Timeouts
All requests have a 30-second timeout to prevent hanging:- Direct API: native timeout in
node:https - Composio SDK:
Promise.racewith timeout
Security Considerations
Source Code
Source:packages/plugins/tracker-linear/src/index.ts