Skip to main content

Terminal UI for orchestrating multiple coding agents

Project description

ModelMesh

ModelMesh Home Page

ModelMesh is a Textual-based terminal UI for running and switching between multiple coding-agent CLIs from one project workspace.

It currently supports:

  • Claude Code
  • Codex
  • Gemini CLI
  • Open Code
  • OpenClaw

Each agent gets its own session state, and the active agent can be started, stopped, restarted, and interacted with directly from the TUI.

What It Does

  • Shows a left sidebar with available agents and live session-state badges
  • Lets you switch the active agent without leaving the app
  • Starts each agent inside a PTY so terminal-style output is preserved
  • Forwards keyboard input to a running agent session
  • Keeps a shared project root visible in the UI
  • Persists the selected agent and project root in a config file
  • Provides a built-in config editor for command overrides
  • Uses writable runtime directories for agents that need local state isolation

Install

uv sync
uv run modelmesh

The package also exposes a console entrypoint:

modelmesh
mesh

Requirements

  • Python 3.12+
  • One or more supported agent CLIs installed and available on PATH

ModelMesh does not install agent CLIs for you.

Supported Agents

Agent Binary Notes
Claude Code claude Uses the default environment
Codex codex Uses a writable isolated HOME and XDG runtime under .modelmesh-runtime/
Gemini CLI gemini Uses the default environment
Open Code opencode Uses writable isolated XDG runtime dirs under .modelmesh-runtime/
OpenClaw openclaw Uses the default environment

If a binary is not found on PATH, ModelMesh will show a system message instead of starting that session.

Keyboard Shortcuts

Shortcut Action
F4 Make terminal taller
F5 Make terminal shorter
F6 Open config editor
F7 Start active agent session
F8 Stop active agent session
F9 Restart active agent session
Ctrl+R Select project root
Ctrl+L Clear terminal display
Ctrl+C Quit
PageUp / Mouse wheel up Scroll terminal up
PageDown / Mouse wheel down Scroll terminal down
Home Jump to top of terminal scrollback
End Jump to bottom/live terminal output

When an agent session is running, regular keys and common control/navigation keys are forwarded into the active PTY session.

Configuration

ModelMesh stores configuration at:

~/.config/modelmesh/config.toml

If platformdirs is available, the config path is resolved through that library. Otherwise it falls back to ~/.config/modelmesh/config.toml.

Example:

active_agent = "codex"
project_root = "/path/to/project"
terminal_bottom_height = 9

[agent_overrides]
claude = ["claude", "--dangerously-skip-permissions"]
codex = ["codex", "--help"]

agent_overrides lets you replace the default command used for a specific agent.

Runtime Behavior

  • Sessions are managed per agent, so switching agents does not destroy another agent's session
  • Agent processes are launched in the selected project root
  • Output is rendered through pyte, then displayed in the Textual UI
  • Stopping a session sends SIGTERM first, then escalates to SIGKILL if needed
  • Some agent-local runtime files are written under .modelmesh-runtime/ in the current working directory

Development

Run tests with:

uv run pytest

Current test coverage includes:

  • config load/save behavior
  • adapter registry and binary detection
  • session lifecycle basics
  • terminal rendering helpers
  • smoke coverage for app construction

Screenshots

Codex

ModelMesh running a Codex session

Open Code

ModelMesh running an Open Code session

Claude Code

ModelMesh running a Claude Code session

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

modelmesh-0.1.0.tar.gz (23.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

modelmesh-0.1.0-py3-none-any.whl (19.8 kB view details)

Uploaded Python 3

File details

Details for the file modelmesh-0.1.0.tar.gz.

File metadata

  • Download URL: modelmesh-0.1.0.tar.gz
  • Upload date:
  • Size: 23.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for modelmesh-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9c9c4a96878e8572d76811e32d27ff96a654e9947d53e2cee28dec96e68212e9
MD5 960525757c4e6b0635d9d9d63502a151
BLAKE2b-256 d84852e3e6a8022a8961dc8a7c1e334a983e8f3e4b3ce19cf614b7f8d1c5f3f9

See more details on using hashes here.

File details

Details for the file modelmesh-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: modelmesh-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 19.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for modelmesh-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3c513932aa83e4d97c1369b141c7da2d166e5d69824fec3d59a42536ecc81625
MD5 f75dd26b76bab7a342d7116f73c364d6
BLAKE2b-256 69dc72db274092acf11524c3f69b7f48fc589573a9d26e344fd25eee1fa9c43d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page