v0.1.0
The first release of lin - the Linear CLI for humans and AI agents. One fast
native binary over the Linear GraphQL API, JSON-first and headless-friendly.
Docs: https://lin.alexgrais.dev
Added
- Full-spectrum command surface (MCP parity + staged waves): issue (CRUD, relations,
sub-issues, archive lifecycle), comment, label, team, state, project (+ labels),
milestone, initiative (+ labels, project linking), cycle, user, status-update,
document, attachment (3-step signed upload dance), release / release-note /
release-pipeline, customer / customer-need, whoami, version, describe. - Agent-friendly contract: JSON-first output (
--output json|ndjson|table),
--fieldsmasking,--dry-runon every mutation, raw--jsonpayloads,
cursor pagination (--limit/--cursor/--all), sysexits exit codes,
lin describeruntime introspection, input hardening,--confirmon deletes. lin authwith named profiles (login,status,logout,switch), stored in
~/.config/lin/config.jsonat mode 0600 and selected with--profile. Secrets
are read from stdin, a hidden TTY prompt, or--from-env, never from a flag, and
are validated against the API before being written.- Retrying GraphQL transport (Authorization without Bearer, backoff + jitter,
Retry-After, mutation-safe retry policy, null pruning to avoid field clears). - Vendored Linear GraphQL schema with genqlient codegen and refresh tool.
- Documentation site generated from
lin describe, so the command reference
cannot drift from the binary. - Token benchmark against the Linear MCP under
bench/: ~8,300 tokens for a
40-turn agent session, against ~69,800 through a lazy MCP client. Methodology,
raw payloads, and scripts are reproducible.
Install
go install github.com/alexgrais/lin/cmd/lin@v0.1.0Or download a binary for your platform from the assets below. Verify with
checksums.txt.
A Homebrew tap is not published yet; it will land as alexgrais/tap/lincli.
Getting started
lin auth login # store a Linear API key, validated before saving
lin issue list --team ENG --fields identifier,title,state
lin issue create --team ENG --title "Fix login" --labels bug --assignee me