Skip to content
easl

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

  1. Download easl-<version>.zip from the GitHub Releases page, unzip it, and move easl.app to /Applications.

  2. 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.app

    Or 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.

  3. Install the runtime tools. Terminal tiles need zmx; the easl CLI and the omp extension need bun.

    brew install neurosnap/tap/zmx oven-sh/bun/bun
  4. Optional, for omp: link the easl extension (see Agents).

  5. 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

  1. Press ⌘T for a new terminal tile, or right-click the canvas and choose New Terminal Here.
  2. 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.