A desktop UI for your coding agents.
Works with your subscriptions on Claude Code, Codex, Cursor, Grok Build, OpenCode, Antigravity, Pi, omp, fx, and Hermes Agent. If they’re installed and logged in, MonoCode can run them. Tabs are sessions. The composer is the input. MonoCode does not sell tokens.
Install and log in to at least one provider first:
- Claude Code -
claude auth login- Codex -
codex login- Cursor CLI -
agent login- Grok Build -
curl -fsSL https://x.ai/cli/install.sh | bashthengrok login- OpenCode -
opencode auth login- Antigravity (macOS/Linux) -
curl -fsSL https://antigravity.google/cli/install.sh | bash, then runagyonce to sign in- Pi -
npm install -g @earendil-works/pi-coding-agent- omp -
curl -fsSL https://omp.sh/install | sh- fx -
curl -fsSL https://fx.sh/setup.sh | bashthenfx login- Hermes Agent - macOS/Linux:
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash; Windows PowerShell:iex (irm https://hermes-agent.nousresearch.com/install.ps1); then runhermes model
macOS (Apple Silicon): download MonoCode.dmg, open it, drag MonoCode to Applications.
macOS (Intel): download MonoCode_x64.dmg, open it, drag MonoCode to Applications.
Linux (x86_64): download the .deb or AppImage from GitHub Releases. Install the .deb with sudo apt install ./MonoCode_*.deb. The AppImage needs WebKitGTK 4.1 on the host, the same as the .deb (libwebkit2gtk-4.1-0 on Debian/Ubuntu, webkit2gtk4.1 on Fedora, webkit2gtk-4.1 on Arch); make it executable with chmod +x MonoCode_*.AppImage and run it. The AppImage updates itself from Settings → General; the .deb and .rpm update through apt or dnf. Keep the AppImage somewhere you can write to (for example ~/Applications) so updates can replace it. On Fedora and Enterprise Linux 10, download the .rpm from the same release page — see Fedora / Enterprise Linux packages for the one extra repository step Enterprise Linux needs.
Windows (x86_64): download the NSIS installer from GitHub Releases and run it.
Experimental remote sessions: run agents on an always-on Windows, Linux, or macOS machine and connect from the desktop. See remote access setup and current limitations.
This is very early and you should expect bugs.
Type /operator at the start of a composer message to enable MonoCode access in that thread. For example, /operator start two Codex sessions: one to inspect the API and one to review the UI, or /operator list my notes. The slash picker also offers this command. The transcript shows only the request text in a translucent amber bubble; MonoCode removes the command from the request sent to the agent and supplies the local app CLI path and instructions on that turn. Later turns in the same thread can use the CLI without repeating /operator; other threads receive no CLI instructions or app access. The CLI can act only during an active agent turn. The agent can run the shown app --help command for the exact JSON input fields.
models.listshows available providers, models, settings, and permission modes.sessions.startopens a tab in the current project with a prompt. Setplacement: "right"orplacement: "down"to split the calling session's pane instead;besideSessionIdselects another visible session pane in the project. Reuse the returned session ID as the nextbesideSessionIdto build nested layouts. By default it submits the prompt; setdraft: trueto save it unsent without starting an agent turn. It accepts a provider, model, effort or other model settings, permission mode, and current checkout or new worktree choice. SetworktreeCwdto a path fromworktrees.listfor a specific existing checkout. Useworktrees.createto create a worktree on a named new or existing local branch, then pass its path asworktreeCwd. OmitruntimeModeto inherit the calling session's permission mode, or set it explicitly to override. It returns the new session ID as soon as the pane and prompt are accepted, so the agent can move it into a folder immediately.sessions.listshows project sessions and their archived status.sessions.readreturns up to three recent user/assistant exchanges, with a cursor for older exchanges and a per-message character cap.sessions.sendsubmits a follow-up to an idle session, whilesessions.draftsaves an unsent message for the user to review.folders.listandfolders.moveorganize project sessions in sidebar folders, including a new folder.sessions.stop,sessions.archiveandsessions.deletetake asessionIdto manage another session in the project. Monos can select an assigned project withproject. Stop cancels the current turn and pauses queued messages; archive stops and saves the conversation for later restoration; delete stops and permanently removes the conversation. Open files, terminals and worktrees are kept. These actions cannot target the caller, Mono chats, habit runs or orchestration workers. Reuse the same request ID when retrying a call.- When a Mono successfully stops, archives or deletes a session it is monitoring, its pending completion report for that session is dismissed, including any queued report. The Mono confirms the action in its current reply. Reports for other sessions and other Monos are kept. Rejected launches or follow-ups return a CLI error without a later completion report.
notes.listreturns titles and short previews;notes.readreturns one full note by ID.
Orchestration workers keep their existing scoped control workflow and do not receive this app access.
Small, focused pull requests are welcome. Anything large is worth an issue first - see CONTRIBUTING.md.
Supports macOS, Linux, and Windows.
Need Node.js 20+ and a current stable Rust toolchain. On Linux, ensure standard Tauri prerequisites are installed (e.g. libwebkit2gtk-4.1-dev, libgtk-3-dev, libsoup-3.0-dev, libjavascriptcoregtk-4.1-dev). On Windows, the installer bootstraps the WebView2 runtime when it is missing.
npm install
npm run tauri devOn an Ubuntu/Debian workstation, the repository can install the native Tauri prerequisites and build distributable Linux packages directly:
npm run setup:linux:deb
npm ci
npm run build:linuxThe Linux build emits .deb and AppImage bundles under target/release/bundle/.
build:linux repacks the AppImage so it uses the host WebKitGTK 4.1 stack instead of bundled Ubuntu libraries.
Prerelease tags such as v0.9.1-beta.1 publish to beta/latest.json, and beta builds use that feed even when a stable updater endpoint is configured. Beta releases leave the stable feed and macOS download links unchanged. To trial AppImage updates, install a beta AppImage in a writable directory, publish a newer beta, and verify the update downloads, installs, and relaunches successfully before publishing a stable version.
Tauri loads src-tauri/tauri.linux.conf.json automatically for Linux development and builds.
On Fedora, or on an Enterprise Linux 10 system (registered RHEL, Rocky, Alma, CentOS Stream, Oracle), install the release .rpm from GitHub Releases. Enterprise Linux needs EPEL first, because webkit2gtk4.1 is an EPEL package there — CRB is not needed to run MonoCode. On Oracle Linux 10, epel-release does not enable ol10_developer_EPEL, which is the repository that provides that package. Enable it before installing the rpm:
# Enterprise Linux 10 only; skip on Fedora.
sudo dnf install -y epel-release # RHEL: sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm
# Oracle Linux 10, instead of epel-release:
# sudo dnf install -y oracle-epel-release-el10 dnf-plugins-core
# sudo dnf config-manager --set-enabled ol10_developer_EPEL
sudo dnf install ./MonoCode-*.rpmThe .rpm declares its own runtime dependencies, so dnf pulls the WebKitGTK stack for you. GitHub Releases builds that package on Enterprise Linux 10 so it loads on Fedora and EL 10. The AppImage also uses the host WebKitGTK 4.1 stack (webkit2gtk4.1 on Fedora).
To build it yourself instead — which also enables EPEL 10 and CRB automatically, since the -devel packages need CRB:
npm run setup:linux:fedora
npm ci
npm run build:fedoraThat emits a .rpm under target/release/bundle/rpm/, installable with sudo dnf install ./target/release/bundle/rpm/MonoCode-*.rpm. EL 9 and older are unsupported (webkit2gtk4.1-devel only exists in EPEL 10).
The AppImage uses the host WebKitGTK 4.1 stack and native Wayland, like the .deb and .rpm. Install WebKit with sudo dnf install webkit2gtk4.1 if the launcher asks for it. Set GDK_BACKEND=x11 to keep the previous X11-forced behavior (for example NVIDIA plus Wayland). Older AppImages that bundled Ubuntu-built libraries aborted with Could not create default EGL display: EGL_BAD_PARAMETER; current builds do not.
npm ci
npm run build:windowsThe Windows build emits an NSIS installer under target/release/bundle/nsis/.
Tauri loads src-tauri/tauri.windows.conf.json automatically for Windows development and builds.
Thanks to everyone who contributes to MonoCode!
MIT. Provider names and logos are trademarks of their owners - see NOTICE.
Special thanks to the project that helps us recognize MonoCode's contributors:

