Install Lineside
Where Lineside stands, what it needs, and how to run it on macOS and Windows.
Not distributed yet
There is no download, and no installer. On macOS, Lineside is signed locally, without an identity, and is not notarized: downloaded from a browser, Gatekeeper would block it — and SmartScreen would on Windows. It updates itself from its source repository, not from a release channel.
What follows is for those who have the sources. Downloads will come with a release channel.
Requirements
- macOS on Apple silicon, or Windows on x64;
- Node.js 22.6 or later, and Git;
- Claude Code — the
claudecommand; - for the forge,
glab(GitLab) orgh(GitHub), logged in to your host.
Run from the sources
At the root of the sources:
npm install
npm start
npm start downloads the Electron binary if it is missing, builds, then opens the window. npm test runs the tests.
Build the standalone application
npm install
npm run package
The command produces out/Lineside-<platform>-<arch>/ for the machine it runs on: Lineside.app on macOS, Lineside.exe on Windows. The application then starts without a terminal; on macOS, copy it into ~/Applications.
Follow your agents
Agents ▸ Install Claude Code Hooks… adds Lineside’s hooks to ~/.claude/settings.json, keeps a backup of it, and is undone from the same menu. Only the Claude Code sessions started afterwards are followed.
The hooks reach Lineside on 127.0.0.1, port 48711, with a token that only Lineside’s terminals carry: a session started elsewhere is ignored.
Gauges
The context gauge and the quotas come from Claude Code’s status line. Your status line script must drop its payload in ~/.claude/statusline/<session>.json; Lineside does not provide that script. The script receives LINESIDE_CONTEXT_ID from Lineside’s terminals.
macOS: the local network
macOS keeps an application away from the local network until you allow it, and the refusal applies to everything its terminals start: ssh to a machine on your network fails with “No route to host”, while it works from another terminal.
At launch, Lineside brings up the request; if access stays refused, it says so and opens System Settings ▸ Privacy & Security ▸ Local Network. After a rebuild, macOS may ask again, or keep an authorisation that no longer applies: untick Lineside, then tick it again.
Updating
With "updateSource": "~/git/lineside" in lineside-settings.json, Lineside checks at launch, then every hour, whether origin/main has moved, and says so at the foot of the rail.
Prepare builds that commit in a rail terminal, tests included: a red commit does not install. Restart to update waits for the agents to finish their turn, counts ten seconds, replaces the application, then resumes each session with claude --resume. An application started from its sources (npm start) does not update this way.
Known limits
- On Windows, the “working” state is unknown: node-pty does not report the foreground process. Closing a context always asks first.
- Only Claude Code is followed. For other agents, Your turn falls back on the terminal bell (BEL, OSC 9, OSC 777): an agent that does not ring does not show up.
- Lineside listens to the agents on port 48711. If that port is taken, no agent is followed, and the application says so at launch.
- The shell’s folder is followed under zsh, PowerShell and Git Bash; plain bash and fish are not wired, unless they emit OSC 7 themselves.