A terminal user interface for Linear project management. Manage issues, triage your inbox, and track projects without leaving the terminal.
- 3-panel TUI: Navigate projects/cycles in the sidebar, browse issues in the list, and view details in the right panel
- Kanban board: Visual board view grouped by workflow state
- Triage workflow: Dedicated mode for processing untriaged issues with quick actions
- CLI commands: Scriptable interface for listing, viewing, creating, and searching issues
- Offline-ready: SQLite cache for instant startup and offline browsing
- Themeable: 9 built-in color schemes
pip install linear-termSet your Linear API key via environment variable:
export LINEAR_API_KEY=lin_api_xxxxxOr create a config file at ~/.config/linear-term/config.yaml:
api_key: lin_api_xxxxxapi_key: $LINEAR_API_KEY # Uses env var
appearance:
theme: material-dark # See themes below
layout:
sidebar_width: 28
detail_panel_width: 40
show_detail_panel: true
show_sidebar: true
defaults:
view: my-issues # Starting view
sort_by: priority # priority, status, updated, created
sort_order: asc
columns: # Issue list columns
- identifier
- title
- status
- priority
- assignee
kanban:
columns: # Custom column order (empty = all states)
- Backlog
- Todo
- In Progress
- In Review
- Done
hide_done: false # Hide completed/canceled
cache:
ttl_minutes: 30
recent_issues_limit: 5 # Number of recent issues to track
editor:
command: vim # For editing descriptions (defaults to $EDITOR)material-dark (default), gruvbox-dark, linear, dracula, nord, solarized-dark, catppuccin-mocha, one-dark, tokyo-night
Launch the full terminal interface:
linear-termThe TUI provides three main views:
- List view: Traditional issue list with sortable columns
- Kanban view: Board layout grouped by status (press
bto toggle) - Triage view: Process untriaged issues from your inbox
Use standalone commands for quick operations or scripting:
# List issues
linear-term list # All issues (20 max)
linear-term list --mine # Only issues assigned to you
linear-term list --limit 50 # Specify max results
linear-term list --json # Output as JSON
# View issue details
linear-term view ENG-123 # By identifier
linear-term view ENG-123 --json # JSON output
# Create issues
linear-term create "Fix login bug"
linear-term create "Add feature" --description "Details here"
linear-term create "Task" --team Engineering --priority high
# Search
linear-term search "auth bug"
linear-term search "payment" --limit 10 --json| Command | Aliases | Description |
|---|---|---|
list |
ls |
List issues |
view |
show |
View issue details |
create |
new |
Create a new issue |
search |
— | Search issues |
| Option | Commands | Description |
|---|---|---|
--json |
all | Output as JSON for scripting |
--limit N |
list, search | Maximum results (default: 20) |
--mine |
list | Only your assigned issues |
--team NAME |
create | Target team name or key |
--priority LEVEL |
create | urgent, high, medium, low, none |
--description TEXT |
create | Issue description |
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest tests/ -v
# Lint
ruff check src/
# Format check
ruff format --check src/
