Docs Start
Getting started
Install easl, open a folder, and run your first agent in a terminal tile.
All docs pages
easl is a native macOS app. It needs macOS 14 or later on Apple silicon.
Install
-
Download
easl-<version>.zipfrom the GitHub Releases page, unzip it, and moveeasl.appto/Applications. -
The app is ad-hoc signed, not notarized, so Gatekeeper blocks the first launch. Clear the quarantine flag:
xattr -dr com.apple.quarantine /Applications/easl.appOr open it once, then choose Open Anyway in System Settings › Privacy & Security. On macOS 14, right-clicking the app and choosing Open also works; macOS 15 removed that shortcut.
-
Install the runtime tools. Terminal tiles need zmx; the
easlCLI and the omp extension need bun.brew install neurosnap/tap/zmx oven-sh/bun/bun -
Optional, for omp: link the easl extension (see Agents).
-
Optional, for code navigation: install the language servers you use (see Language servers).
Or build from source
To run main, build the app yourself; the changelog says what each release has. The Command Line Tools are enough; Xcode is not required.
git clone https://github.com/twaldin/easl.git
cd easl
swift build # debug build
scripts/bundle.sh release # assemble .build/easl.app (ad-hoc signed)
You still need zmx and bun from step 3.
Open a folder
easl keeps one board per repository: every worktree and branch of it opens the same board, rooted at the main checkout. Opened from a worktree, it reads that worktree’s code: Go to (⌘P) lists its files and symbols, and its language server and call graphs work in it. A folder outside git gets a board of its own. Choose File › Open Board… (⇧⌘O) and pick the folder. Each board opens as a tab of the window, and the tab bar’s + opens another.
An empty board shows a short hint in the middle: press ⌘T for a terminal, then run any agent CLI.
Run an agent
- Press ⌘T for a new terminal tile, or right-click the canvas and choose New Terminal Here.
- Run your agent as you would in any terminal:
omp,claude,codex,gemini,opencode,aider, or anything else.
The tile is a real terminal (libghostty, with your Ghostty config), so the agent’s own interface, commands, login flow and questions all work as usual. You prompt the agent in its terminal; easl has no composer of its own.
What the dots mean
Each agent terminal has a dot in its title bar. The same colors show on zoomed-out cards, on the board’s tab and in Go to (⌘P).
| Dot | State | Means |
|---|---|---|
| Blue | working | The agent is busy. |
| Orange, with a ring and a ✋ bubble | blocked | It waits for you to approve or answer. Click the bubble to answer in its terminal. |
| Green | done | It finished and you haven’t looked yet. |
| Grey | idle | Waiting for your next prompt. |
| No dot | No agent is reporting in that terminal. |
A green dot turns grey once you’ve seen the terminal: you focused it, or it was visible at readable zoom for a few seconds. A pink ring and bubble is different: an attention marker, an agent (or a program’s bell) saying “look here”.
Press ⌘J to go to the next thing that needs you: blocked agents first, then markers, then agents that finished while you looked elsewhere. With nothing pending, easl says “Nothing needs you”.
easl Basics
Help › easl Basics (⌥⌘/) opens a one-screen legend inside the window: the dots, rings and markers, the follow tile, the tray, reviewing changes, zoom, and the keys, with a section for people coming from Linux or Windows. It stays open while you work beside it; its ×, the menu item or ⌥⌘/ again close it. The same words appear as tooltips on the dots, the tray and the markers.
Your agents keep running
Quitting easl, or closing a board’s tab, doesn’t stop your terminals. Agents and shells keep running in their zmx sessions and are back when you open the folder again. Closing a terminal tile ends its session. See Agents for what happens after a reboot.