Lanes

macOS 15+ read-only MIT FR

A Git dashboard for macOS, all monospace, built around one rule: never run Git at launch. It maps a snapshot built last time, draws, then checks in the background. The whole repository is on screen in about half a second, even on git/git and its 85,000 commits.

Download for Mac Source on GitHub

Lanes on the git/git repository: commit graph with its lanes, repository health, 53-week activity, authors and hot files.

Developer ID signed and notarized by Apple. Apple Silicon, macOS 15 or later. git from Xcode or the Command Line Tools.

525 ms
median to a full dashboard on git/git (M2, 8 GB, 20 launches, warm cache)
85,557
commits in git/git, virtualized graph, smooth
0.24 ms
to open a 30 MB snapshot
1.1 MB
binary, no dependency outside the system

What it shows

The commit graph with its lanes, branches, tags and HEAD, virtualized.

All your repositories in one frame: switch with a click, ⌘1…⌘9, ⌘[ and ⌘].

Since your last visit: commits, authors, files touched.

The working tree: modified, staged, untracked. Ahead/behind and stashes in the header.

The selected commit in detail, with its files and lines added and removed.

Repository health: size, loose objects, stale branches, largest files.

53 weeks of activity, authors and their monthly river, hot files, who owns what.

Clone (⌘⇧O) by URL, owner/repo or GitHub keywords. Open in Finder, Terminal or your editor.

Why it is fast

The app never reads Git at launch. It memory-maps a binary snapshot built the previous time, draws, then checks in the background whether the repository changed and rebuilds if needed. While it is open, FSEvents triggers the same check.

Modules allowed on the critical path cannot import the ones that do heavy work: making the first frame wait is a compile error, not a regression.

Read-only: no command that modifies a repository, and GIT_OPTIONAL_LOCKS=0 so it never even takes a lock on the index.

Build it yourself

git clone https://github.com/menufactory43/lanes
cd lanes
Scripts/build-app.sh        # release → ~/Applications/Lanes.app
swift test                  # 18 tests