cmux: Native macOS terminal with scriptable browser (efficient multi-session management)
cmux is a native macOS terminal + scriptable browser offering vertical tabs, workspaces, and agent-aware notifications with automation APIs—designed for developers managing many concurrent agent-driven sessions.
GitHub manaflow-ai/cmux Updated 2026-03-30 Branch main Stars 19.5K Forks 1.5K
Swift AppKit macOS native terminal emulator scriptable browser agent-aware notifications Ghostty-compatible GPU-accelerated CLI / socket API workspaces & vertical tabs

💡 Deep Analysis

4
How exactly does cmux's notification mechanism work? What reliability and configuration requirements matter in practice?

Core Analysis

Core Issue: cmux’s notifications are not passively inferred—agents or scripts must actively emit signals (OSC 9/99/777 or call cmux notify) for cmux to show the blue ring on a pane, update the sidebar, and list items in the notification panel.

Technical Analysis

  • Notification path: agent → send OSC / call cmux notify → cmux captures and maps to pane → UI shows ring and sidebar summary.
  • Reliability points:
  • Agents must reliably emit the notification;
  • Terminal sessions must be able to output OSC sequences (some shells or terminal settings can filter/escape these);
  • Keyboard shortcut and window focus behavior affects how quickly users can jump to unread items (Cmd+Shift+U).

Practical Recommendations

  1. Encapsulate notification calls in agent scripts, e.g. use cmux notify --pane-id ... "summary" or emit OSC 9;...BEL consistently.
  2. Run an end-to-end test on install: send a simple OSC to verify sidebar and notification panel behavior before relying on it in productive runs.
  3. Log missing notifications: if users don’t see expected alerts, capture agent stdout/stderr to confirm whether the agent sent the signal.

Important Notice: Notifications are agent-driven—cmux won’t infer internal agent state nor recover notifications that were never emitted.

Summary: The mechanism is compact and effective, but its correctness depends on proper agent integration and local terminal configuration. Perform end-to-end verification for critical workflows.

86.0%
How do you integrate cmux with common coding agents (e.g., Claude Code) into a stable automation workflow?

Core Analysis

Core Issue: Combine cmux’s notification, CLI/socket APIs, and the built-in scriptable browser into the lifecycle of agents (e.g., Claude Code) to build reproducible automation workflows.

Technical Analysis

  • Integration primitives:
  • Notifications: agents call cmux notify or emit OSC at blocking points.
  • Workspace/Pane management: scripts use the cmux CLI or socket API to create/switch panes, split, and send keystrokes.
  • Browser automation: agents use the in-app browser to snapshot accessibility trees, click, fill, and run JS against local dev servers.
  • Stability factors:
  • Unique pane/workspace identifiers;
  • Permission handling and robust error handling for browser automation;
  • Logging and retries for missed notifications or unavailable panes.

Practical Steps (Workflow)

  1. Encapsulate a notify() in agent code that calls cmux notify --pane=<id> --summary="..." or emits OSC 9;....
  2. Ensure the orchestration script creates/returns the pane id before the agent attempts to notify.
  3. For web interactions, trigger browser loads via the socket API and request accessibility snapshot or evaluate JS, returning results to the agent.
  4. Implement timeouts and retries: if no confirmation within X seconds, retry or flag for manual action.

Important Notice: Browser automation may require macOS accessibility/automation permissions—grant them during setup and handle permission failures gracefully.

Summary: Encapsulate notifications, workspace control, and browser actions as explicit scripted primitives with IDs, logging, and retries to build robust agent-driven automation with cmux.

84.0%
In which scenarios should you adopt cmux? What limitations or alternative options should you consider?

Core Analysis

Core Issue: Determine when to adopt cmux and where its strengths or constraints lie.

Suitable Scenarios

  • Terminal-first developers on macOS who prefer CLI/scriptable workflows.
  • Local parallel agent management, e.g., many concurrent Claude Code/Codex sessions where fast localization of blocking sessions matters.
  • Advanced users/researchers wanting composable primitives (terminal, browser, notifications) to build custom agent workflows.

Major Limitations

  • Platform: Native Swift/AppKit—macOS only.
  • No process restore: cmux restores layout/history but not running interactive processes.
  • Licensing/compliance: AGPL-3.0 (per insights) may limit closed-source/enterprise use without a commercial license.
  • Security: Scriptable browser can execute JS and simulate clicks—exercise caution on sensitive pages.

Alternatives Comparison

  1. Electron/Tauri orchestrators: Cross-platform with richer GUIs, but heavier (memory/startup) and less terminal-like in behavior.
  2. Pure tmux/Ghostty: Lightweight and cross-platform, but lacks pane-level notifications, centralized panels, and scriptable browser automation.
  3. Remote/cloud agent platforms: Offer session persistence and enterprise features at the cost of local control and low-latency interactivity.

Important Notice: Evaluate licensing for enterprise use and consider commercial options or alternatives if AGPL is incompatible.

Summary: Treat cmux as a macOS-focused, performance-oriented set of terminal+browser primitives for power users. It’s excellent for local parallel agent workflows but not the right choice for cross-platform or strict enterprise session-persistence needs.

84.0%
What can cmux's built-in scriptable browser do? What risks and limitations exist in real automation?

Core Analysis

Core Issue: cmux’s built-in browser turns agents from read-only observers into actors, but real-world browser automation brings reliability and security challenges that must be managed.

Capability Summary

  • Accessibility snapshots: Provide structured DOM/accessibility information for agents.
  • Element refs and interactions: get element refs, click, fill allow simulating user actions on forms and controls.
  • Execute JS: evaluate JS for dynamic data access and complex client-side behaviors.
  • Local dev server integration: Useful for end-to-end debugging and letting agents operate on local pages.

Risks and Limitations

  • Permissions/privacy: macOS Accessibility/Automation prompts are common and require user consent.
  • Selector fragility: Page changes break element locators; robust identification and fallback strategies are needed.
  • Security: Agents can run arbitrary JS or submit sensitive forms—this can lead to data leaks or unintended actions.
  • Non-persistence: cmux doesn’t restore running processes; session-dependent pages may need re-initialization after restarts.

Practical Recommendations

  1. Apply least-privilege: Authorize automation only on necessary pages, avoid production-sensitive systems where possible.
  2. Audit and human confirmation: Require manual approval for high-risk actions and log all automated activities.
  3. Stabilize selectors: Use accessibility attributes and semantic hooks over brittle CSS selectors, and add timeout/retry logic.
  4. Validate in local dev: Fully test automation scripts against local dev servers before running on real targets.

Important Notice: Browser automation increases capability and responsibility—implement permissions, logging, fallbacks, and human-in-the-loop checks.

Summary: The in-app browser empowers agents with real interactions but must be paired with strict security and robustness practices for safe production use.

83.0%

✨ Highlights

  • Native Swift/AppKit app: fast startup and low memory
  • Ghostty-compatible and GPU-accelerated rendering
  • Built-in scriptable browser with agent interaction API
  • macOS-only — limited cross-platform applicability
  • No visible contributors or releases — adoption and maintenance risk

🔧 Engineering

  • Agent-aware notification system: panel aggregation, tab highlights and blue ring alerts
  • Scriptable in-app browser shown alongside terminals, exposing accessibility tree and actionable API
  • Workspaces, vertical/horizontal splits and extensive shortcuts for parallel session management
  • Reads Ghostty config (themes/fonts/colors) and uses libghostty for smooth rendering
  • Automatable via CLI and socket: create workspaces, split panes, send keystrokes, open URLs

⚠️ Risks

  • License unknown — impacts commercial use and compliance evaluation
  • Repository metadata shows no contributors/no releases — long-term maintenance and community support unclear
  • Depends on macOS-specific technologies (AppKit, Sparkle) — high porting effort
  • Docs focus on UX and shortcuts but lack in-depth API, integration, and deployment examples

👥 For who?

  • Targeted at advanced developers running many AI coding agents concurrently on macOS
  • Suitable for engineers who prefer terminal workflows and require scriptable browser interactions
  • Good fit for users who value native performance and prefer to avoid Electron-based tools
  • Less suitable for cross-platform teams or organizations requiring clear license assurances