Sauron: A free and open source terminal development environment Matt Olson released Sauron 0.1.0, a free and open-source terminal development environment (TDE) for macOS that manages multiple coding agents across multiple projects using tmux sessions, with features like background agents, worktrees, and commit attribution. The app, available as a signed and notarized DMG for Apple silicon Macs on macOS 15 or later, requires tmux, git, and at least one agent CLI such as Claude or Codex. A "super terminal" desktop app for running a lot of coding agents across a lot of projects, built on tmux. I like running agents in the terminal. Claude Code, Codex, Opencode, Picode, local AI, cloud providers, etc. What I did not like was keeping track of fifteen of them across six repositories. Which ones are waiting on me? What did that one agent commit? Where was I on this project three weeks ago? Sauron is the thing I built to answer those questions without giving up the terminal. It is not quite an IDE and it is not quite a terminal. I call it a TDE terminal development environment . It is free and open source and always will be Download: Sauron-0.1.0-arm64.dmg https://github.com/mlolson/sauron/releases/latest/download/Sauron-0.1.0-arm64.dmg for Apple silicon Macs on macOS 15 or later, signed and notarized. Other builds are on the releases page https://github.com/mlolson/sauron/releases . It needs tmux , git , and at least one agent CLI such as claude or codex on your PATH. Every session Sauron starts is a tmux session. Quit the app and they keep running. Reboot and resume them. Attach from any terminal with tmux attach there is a button that copies the command . Nothing you run is trapped inside the app. Sauron can also see sessions that are started in external terminal. The principal is low coupling between Sauron and your tmux sessions. Sauron does not include skills, a task framework, a planning routine, or instructions for your agents. It does not put anything in your repository except a post-commit hook, an entry in .git/info/exclude , and the ignored .sauron/ directory that entry covers. An agent is a profile: an executable and its arguments. Claude and Codex come preconfigured; add anything else that runs in a terminal, including a plain shell. Run agents the way you already do, with the flags you already use. Sauron just keeps track of them. Run Claude, Codex, Openrouter, and a local model side by side under the same project. Fork a session into a worktree. Hand a session's work to a different agent: Sauron writes a briefing from the recent transcript, the session's commits, and the state of the working tree, and starts the other agent with it. No model in the loop, so it takes a fraction of a second. Hit a usage limit on one vendor, carry on with another. Sauron allows you to define "background" agents and attach them to any project. Background agetns run headless in a fresh worktree on its own branch, manually, on a schedule, or after commits with a cooldown, and it runs whether or not the app is open. When it finishes, its commits wait on the agent's page with a diff viewer and Merge. Or they can run on your main repo and just do whatever. A post-commit hook records which session was behind each commit, so an agent's work is never just "Matt Olson, 4d ago" in the log. Each session shows its last commit under its name in the sidebar. The Commits pane lists everything a session committed, with the diff, or switches to the whole project so you can see who did what across every agent and branch. It works for you too: commits you make by hand inside a Sauron terminal are attributed to that terminal. The hook only ever exits 0, so it cannot break a commit. - Project summaries. A built-in background agent rewrites a short status for each project after commits: what it is, what changed, what is open or blocked. It lives in