Skip to main content

Overview

The Tracker interface defines how the orchestrator integrates with issue tracking systems. Tracker plugins fetch issue details, generate branch names, and create prompts for agents to work on specific issues. Plugin Slot: tracker
Default Plugin: github

Interface Definition

Methods

string
required
Plugin name identifier (e.g. "github", "linear", "jira").
(identifier: string, project: ProjectConfig) => Promise<Issue>
required
Fetch issue details from the tracker.Parameters:
  • identifier - Issue identifier (e.g. "42", "INT-1327", GitHub URL)
  • project - Project configuration
Returns: Issue object with id, title, description, state, etc.
(identifier: string, project: ProjectConfig) => Promise<boolean>
required
Check if issue is completed/closed.Parameters:
  • identifier - Issue identifier
  • project - Project configuration
Returns: true if issue is closed/done
(identifier: string, project: ProjectConfig) => string
required
Generate a URL for the issue.Parameters:
  • identifier - Issue identifier
  • project - Project configuration
Returns: Full URL to issue
(url: string, project: ProjectConfig) => string
Optional: Extract a human-readable label from an issue URL (e.g. "INT-1327", "#42").Parameters:
  • url - Issue URL
  • project - Project configuration
Returns: Short label for display
(identifier: string, project: ProjectConfig) => string
required
Generate a git branch name for the issue.Parameters:
  • identifier - Issue identifier
  • project - Project configuration
Returns: Branch name (e.g. "fix-auth-bug-42", "int-1327-improve-performance")
(identifier: string, project: ProjectConfig) => Promise<string>
required
Generate a prompt for the agent to work on this issue.Parameters:
  • identifier - Issue identifier
  • project - Project configuration
Returns: Formatted prompt string with issue details
(filters: IssueFilters, project: ProjectConfig) => Promise<Issue[]>
Optional: List issues with filters.Parameters:
  • filters - Filter criteria (state, labels, assignee, limit)
  • project - Project configuration
Returns: Array of issues
(identifier: string, update: IssueUpdate, project: ProjectConfig) => Promise<void>
Optional: Update issue state.Parameters:
  • identifier - Issue identifier
  • update - Fields to update (state, labels, assignee, comment)
  • project - Project configuration
(input: CreateIssueInput, project: ProjectConfig) => Promise<Issue>
Optional: Create a new issue.Parameters:
  • input - Issue fields (title, description, labels, assignee, priority)
  • project - Project configuration
Returns: Created issue

Issue

string
required
Unique issue identifier
string
required
Issue title
string
required
Full issue description (may be markdown)
string
required
URL to view issue
string
required
Issue state: "open", "in_progress", "closed", or "cancelled"
string[]
required
Array of label strings
string
Username of assignee
number
Priority level (higher = more urgent)

IssueFilters

IssueUpdate

CreateIssueInput

Usage Examples

Implementing a Tracker Plugin

Using Tracker in Session Manager

Implementation Notes

Issue Identifier Normalization

Trackers should accept flexible identifier formats:
  • GitHub: "42", "#42", "https://github.com/owner/repo/issues/42"
  • Linear: "INT-1327", "https://linear.app/team/issue/INT-1327"
  • Jira: "PROJ-123", "https://company.atlassian.net/browse/PROJ-123"

Prompt Generation

The generatePrompt() method should:
  1. Include issue title and description
  2. Add issue URL for reference
  3. Include relevant metadata (labels, priority)
  4. Format for agent consumption (markdown preferred)

Authentication

Trackers typically rely on environment variables or CLI tools:
  • GitHub: gh CLI (uses ~/.config/gh/hosts.yml)
  • Linear: LINEAR_API_KEY environment variable
  • Jira: JIRA_TOKEN + JIRA_URL

Built-in Plugins

  • github - GitHub Issues (default, uses gh CLI)
  • linear - Linear (uses GraphQL API)
Future plugins could support Jira, Asana, ClickUp, etc.

See Also

  • Session - Session interface
  • SCM - Source control and PR lifecycle interface