Skip to content
easl

Download easl

Free and open source (MIT). Three steps: get the app, let it past Gatekeeper once, install two runtime tools.

Latest release: 0.5.1 · · zip, 12.6 MB

macOS 14 or later · Apple silicon · no Intel, Linux or Windows build

Download

  1. Download easl-0.5.1.zip (12.6 MB) from GitHub Releases, 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

Build from source

Build from source to get main; the changelog says what each release has. The Command Line Tools are enough; Xcode isn’t required.

git clone https://github.com/twaldin/easl && cd easlscripts/bundle.sh release# the app lands at .build/easl.app (ad-hoc signed)

Then install the runtime tools (step 3 above). For a debug build, swift build. scripts/dev.sh runs an isolated development instance. More in the README’s Build from source.

Optional: the omp extension

omp sessions started in an easl terminal tile then report their lifecycle, drive follow tiles, and get the easl skill. Claude Code, Codex, opencode and Gemini CLI (before 0.60) need nothing: their integration loads per session, only inside easl (Agents).

mkdir -p ~/.omp/agent/extensionsln -sf /Applications/easl.app/Contents/Resources/extensions/omp/easl.ts ~/.omp/agent/extensions/easl.ts

Optional: language servers

For hover, go to definition, references and outline, install the servers you use: sourcekit-lsp (with Xcode or the Command Line Tools), pyright, typescript-language-server, gopls, rust-analyzer. Without one, Go to Definition, Find References and Outline answer by text search (Language servers).

First launch

  1. Open a folder. easl keeps one board per directory, a repo or a worktree: File › Open Board… (Shift-Command-O). Each board is a tab of the window.

  2. Start a terminal. The empty board says how: Command-T for a terminal, then run any agent CLI (omp, claude, codex, gemini, opencode, aider) as you would anywhere. It uses your Ghostty config.

  3. Codex asks first. A new Codex tile starts by asking whether to trust the folder. Answer it in the terminal.

  4. Learn the dots. Help › easl Basics (Option-Command-Slash) explains the dots, markers, tray and keys in one panel.

What easl leaves alone

easl edits no shell, agent or Ghostty config. Terminal tiles read your Ghostty config and never write it. Codex’s hooks are a per-session override, not written to ~/.codex. Quitting easl doesn’t stop your terminals: agents and shells keep running in their zmx sessions and are back when you open the folder again.

Uninstall

End the terminal sessions first, or they keep running:

zmx list# easl's sessions are named canvas-obj_…zmx kill <name>
  • Delete /Applications/easl.app and ~/Library/Application Support/Easl/ (your boards).
  • Delete the browser profile and caches under net.waldin.easl, and defaults delete net.waldin.easl.
  • Remove the omp extension symlink, ~/.omp/agent/extensions/easl.ts.

The README’s Uninstall section lists every path easl writes, step by step. So does Troubleshooting and uninstall.