lin

Linear CLI for humans and LLMs

TypeScript v0.6.3 MIT
View on GitHub

A modern CLI for Linear issue tracking that prioritizes structured JSON output and LLM-optimized interaction. It provides comprehensive access to Linear's project management features as a zero-dependency single binary.

Features

Structured JSON output — all output to stdout, errors to stderr

LLM-optimized docs via lin usage (under 1,000 tokens)

Zero runtime dependencies — single compiled binary

Smart ID handling — accepts issue keys, UUIDs, URL fragments, team names

Full Linear API coverage: issues, projects, documents, cycles, teams, users

Threaded comments with file attachments

Multi-workspace support with named aliases

macOS Keychain integration for API key storage

Install

Homebrew

$ brew install shhac/tap/lin

AI Agent Skill

$ npx skills add shhac/lin

GitHub Release (macOS)

$ curl -L https://github.com/shhac/lin/releases/latest/download/lin-darwin-arm64.tar.gz | tar xz

Build from Source

$ git clone https://github.com/shhac/lin.git && cd lin && bun install && bun run build

Getting Started

lin requires a Linear API key to authenticate. Generate a personal key from your Linear workspace settings.

1. Generate an API key

Go to Linear Settings > Account > Security > Personal API Keys and create a new key.

2. Authenticate

$ lin auth login lin_api_...

The key is stored in macOS Keychain when available. For CI or agent use, set LINEAR_API_KEY as an environment variable instead.

3. Verify access

$ lin auth status

Usage

Search issues
$ lin issue search "auth bug"
List filtered issues
$ lin issue list --team ENG --status "In Progress"
Create an issue
$ lin issue new "Fix login redirect" --team ENG --priority high
Add a comment with file
$ lin issue comment new ENG-123 "See attached" --file ./screenshot.png