linear-tui
May 31, 2026 · View on GitHub
A terminal user interface (TUI) for Linear built with Go and tview.
Screenshots



Demo

Features
- 3-pane layout (navigation tree + issues list + details view)
- Command palette for quick actions with keyboard shortcuts
- Vim-style keyboard navigation (j/k, h/l, g/G)
- Mouse support (click to focus, scroll to navigate)
- Issue descriptions with markdown rendering
- Sub-issues support (expand/collapse, create, view parent)
- Issue management (create, edit title, edit labels, archive)
- Comments (view and add)
- Status management (change status, assign/unassign)
- Search and filtering
- Sorting (by updated, created, or priority)
- My Issues vs Other Issues sections
- Agent runs via command palette (Claude or Cursor Agent)
- Agent prompt templates and streaming output with copy/resume
- Real-time issue fetching from Linear API
- Comprehensive logging system for debugging
- Settings modal with live config updates
- Themes (linear, high_contrast, color_blind) and density modes
- Status bar with context and search info
- Clipboard actions (issue ID, issue URL, agent output)
Requirements
- Linear API key (set as
LINEAR_API_KEYenvironment variable) - Agent CLI for the agent command:
- Claude provider:
claude - Cursor provider:
cursor-agent(preferred) oragent
- Claude provider:
Configuration
LINEAR_API_KEYis required (the API key is not stored on disk).- Settings are stored in
~/.linear-tui/config.jsonand created on first start. - Use the Settings modal from the command palette (
:->Settings) to edit and apply settings immediately. - UI settings in
config.json:theme(linear,high_contrast,color_blind) anddensity(comfortable,compact). - Search settings in
config.json:search_debouncecontrols the live search debounce delay (default300ms). - Agent settings live in
config.json:agent_provider(cursororclaude),agent_sandbox(enabledordisabled),agent_model(optional), andagent_workspace(optional). - Prompt templates are stored in
~/.linear-tui/prompts.jsonand edited via the "Edit agent prompt templates" command. agent_workspaceis the default workspace for agent runs and can be overridden per run in the Ask Agent modal (overrides are not persisted).
Example ~/.linear-tui/config.json:
{
"api_endpoint": "https://api.linear.app/graphql",
"timeout": "30s",
"page_size": 50,
"cache_ttl": "5m",
"search_debounce": "300ms",
"log_file": "/Users/you/.linear-tui/app.log",
"log_level": "warning",
"theme": "linear",
"density": "comfortable",
"agent_provider": "cursor",
"agent_sandbox": "enabled",
"agent_model": "",
"agent_workspace": ""
}
Installation
Homebrew (macOS)
brew install roeyazroel/linear-tui/linear-tui
From Source
Requires Go 1.24 or later:
go install github.com/roeyazroel/linear-tui/cmd/linear-tui@latest
Or clone and build locally:
git clone https://github.com/roeyazroel/linear-tui.git
cd linear-tui
go build ./cmd/linear-tui
Download Binary
Download pre-built binaries from the Releases page.
Usage
Set your Linear API key before starting the app.
Homebrew
export LINEAR_API_KEY="your-api-key-here"
linear-tui
Local Build
If you cloned the repository and built the binary locally, run the local executable:
export LINEAR_API_KEY="your-api-key-here"
./linear-tui
Advanced Configuration
Example ~/.linear-tui/config.json:
{
"api_endpoint": "https://api.linear.app/graphql",
"timeout": "30s",
"page_size": 50,
"cache_ttl": "5m",
"search_debounce": "300ms",
"log_file": "/Users/you/.linear-tui/app.log",
"log_level": "warning",
"theme": "linear",
"density": "comfortable",
"agent_provider": "cursor",
"agent_sandbox": "enabled",
"agent_model": "",
"agent_workspace": ""
}
Disable Logging
To disable logging, set log_file to an empty string in the settings file or via the Settings modal:
{
"log_file": ""
}
Keyboard Shortcuts
Navigation
j/↓- Move downk/↑- Move uph/←- Focus left panel/→- Focus right paneg- Jump to topG- Jump to bottomTab/Shift+Tab- Cycle between panesSpace- Toggle expand/collapse sub-issuesEnter- Select issue / Execute commandEsc- Close palette / Cancel / Clear searchq- Quit
Command Palette
:- Open command palette/- Open search paletteask agent- Run a terminal agent on the selected issue
Quick Commands
r- Refresh issuesn- Create new issuee- Edit issue titleg- Edit issue labelss- Change statusa- Assign to userm- Assign to meu- Unassign issuet- Add commento- Open in browsery- Copy issue IDw- Copy issue URLx- Archive issueb- Create sub-issuep- View parent issuei- Set parent issued- Remove parent]- Expand all sub-issues[- Collapse all sub-issues
Development
Run tests:
go test ./...
Build:
go build ./cmd/linear-tui