Skip to content

Installation

Prebuilt binaries for macOS (Apple Silicon and Intel) and Linux (x64 and arm64), by any of three routes. All three install the same binary: the one attached to the latest release, verified against its SHA256SUMS.

Terminal window
brew install candril/tap/lane

The tap is candril/homebrew-tap; brew upgrade picks up new releases.

Terminal window
nix run github:candril/lane # run it once
nix profile install github:candril/lane # keep it

Or as a flake input — inputs.lane.url = "github:candril/lane", then inputs.lane.packages.${system}.default. The flake packages the release binary; the release workflow writes its release.json, so nix run and nix flake update land on the newest release.

Terminal window
curl -fsSL https://raw.githubusercontent.com/candril/lane/main/scripts/install.sh | bash

The installer detects your platform, downloads the latest release, verifies its SHA256 against the release’s SHA256SUMS, and puts lane in /usr/local/bin. Two variables change that:

Terminal window
LANE_INSTALL_DIR=~/.local/bin # somewhere else on your PATH
LANE_VERSION=0.1.0 # a specific release

Or download lane-<os>-<arch>.gz from the releases page by hand, gunzip it, and put it on your PATH.

lane is a Bun application, so a clone runs as it is:

Terminal window
git clone https://github.com/candril/lane.git
cd lane
bun install
bun scripts/build.ts # → dist/lane, a standalone binary

With just: just build, or just install-bin to build and copy it to ~/.local/bin. just dev runs from source with hot reload, just mock the same against the demo board.

  • A Jira Cloud account and an API token.
  • A terminal with truecolor and a decent Unicode set. Anything modern (WezTerm, Ghostty, kitty, iTerm2, Alacritty) is fine.
  • Bun 1.x only if you build from source.
Terminal window
lane --mock

opens an offline demo board — a fictional web shop’s sprint, with sub-tasks, epics, sprints, a backlog, and seeded descriptions and history — so you can learn the keymap before touching a real board. Press ? for the shortcut dialog, q to quit.

lane needs three things: the instance URL, your account email, and an API token.

The token comes from the environment, and only from there — it is never read from or written to a config file:

Terminal window
export JIRA_API_TOKEN="" # https://id.atlassian.com/manage-profile/security/api-tokens

The server URL and account email are read from the jira CLI YAML, so if you already use that tool there is nothing new to set up:

~/.config/.jira/.config.yml
server: https://acme.atlassian.net
login: you@acme.com

Point elsewhere with JIRA_CONFIG_FILE, or per board with jira_config — which is how a single lane session can span two Jira instances.

lane always starts, whatever the state of your credentials. If Jira is unreachable — no token, no server:, no network — it says so on the normal screen and opens the demo board instead of dying. With Jira reachable but no config.toml, it says that too: there is nothing to build tabs from until you describe a board.

To see your own work, write a config.toml — start from Getting Started.

Path What
$XDG_CONFIG_HOME/lane/config.toml Your config. lane only reads this.
$XDG_CACHE_HOME/lane/cache.json Last snapshot per board, for instant boot.
$XDG_CACHE_HOME/lane/state.json Active tab and each tab’s view/filter/grouping.
$XDG_STATE_HOME/lane/tabs.json The tabs you made yourself.

XDG_CONFIG_HOME defaults to ~/.config, XDG_CACHE_HOME to ~/.cache, XDG_STATE_HOME to ~/.local/state. The cache and state files are best-effort: deleting them costs you one refresh and your restored session, nothing more.