macOS · Windows · for Claude Code

Several coding agents, several projects, one window.

Lineside is a cockpit for the agents you run side by side. Each task gets its own lane — a git worktree, a terminal, an agent — and the rail tells you at a glance who is working, who is done, and who is waiting on you.

Read the guide Install Not distributed yet
The Lineside window. On the left, the rail: three projects and a lane, each agent with its state, and Your turn at the top. On the right, the dashboard of atlas-api: its lane and agent, its last commits.
Three agents on three projects: one working on a lane, one waiting for a permission, one done.

Who’s waiting on you

Every agent sits on the rail, under its project, and its node says what it is doing. Two states move — working, and waiting on you — so the rail reads at a glance.

  • ⚡️ Working — the agent has the floor.
  • ⌛️ Waiting on you — a question, or a permission to grant.
  • 🛑 API error — a quota or an outage stopped its turn.
  • 🟢 Turn finished — its answer is ready to read.

Your turn lists the agents waiting on you, oldest first, and ⌘⇧A / Ctrl+Shift+A takes you to the next one. A permission can be granted straight from the rail.

The banner shows how full the agent’s context is, and the foot of the rail your five-hour and seven-day quotas, read from your Claude Code status line. A notification warns you past 90 %.

One task, one lane

A lane is a git worktree filed under its project, with its own terminal and its own agent. Several agents work on the same project without stepping on each other.

Hand over a task

⌘T / Ctrl+Shift+T takes a brief — several lines, pasted screenshots — creates the lane, opens its terminal and starts the agent on it.

Nothing gets lost

Deleting a lane first checks for changes, a lock or an unmerged branch, and refuses rather than stopping anything.

Gone once merged

A task’s lane leaves the rail by itself once its work is merged and it is at rest. ⌘L / Ctrl+Shift+L opens a lane without an agent.

Read what the agent changed

⌘D / Ctrl+Shift+D opens the review beside the terminal: what changed, file by file, with its diff. Tick the files you keep, write the message, commit, push — Push counts the commits about to leave.

Pull only fast-forwards and refuses a branch that has diverged. ⌘⇧H / Ctrl+Shift+H opens the history and the branches, the project’s lanes drawn in the graph.

A lane’s terminal beside the review panel, which shows the uncommitted diff of ratelimit.go, the files to tick and the commit message field.
The review beside the terminal: what the agent changed, file by file.

From an issue to a merge

Lineside reads your forge through glab or gh — GitLab or GitHub, hosted or self-hosted.

  1. ⌘Y / Ctrl+Shift+Y writes an issue: a title, a Markdown body with live preview, labels, pasted screenshots. Claude can draft it for you.
  2. ⌘G / Ctrl+Shift+G lists the open issues and merge requests. ⌘↩ / Ctrl+Enter on an issue hands it to an agent, on its own lane issue/12-….
  3. The merge request leaves from the lane’s branch with Closes #12. Opening it, like closing an issue, is confirmed first, and the confirmation names what leaves.

Keyboard first

Everything has a key, and nothing asks you to remember it.

Hold ⌘ (Ctrl+Shift on Windows) and the shortcuts of the moment appear, grouped, like which-key in Neovim. A bar at the bottom of the window keeps those of what you are doing.

⌘K / Ctrl+Shift+K finds any project, command, lane or file; ⌥Tab / F6 moves the keyboard to the next panel.

Designed on an AZERTY keyboard: no shortcut sits on a shifted digit or symbol, and ⌘1…⌘9 read the key where it is — ⌘& is enough.

It orchestrates, it doesn’t reimplement

Your tools, as they are

git, glab, gh and claude are run, not replaced. What you know of them still holds.

Nothing out of sight

Everything that runs does so in a terminal you can see on the rail.

Nothing behind your back

Pushing and merging are explicit, confirmed gestures: nothing leaves on its own. Nothing runs in a repository you have not adopted.

Where it stands

Lineside runs on macOS (Apple silicon) and Windows (x64). It is not distributed yet: no signed build, no update channel outside its sources. What that means, and how to run it anyway.