# tmux and cmux Repository Comparison Wiki > A fast, source-anchored comparison of tmux as a portable terminal multiplexer daemon and cmux as a native macOS terminal, browser, and agent workflow shell. The structure emphasizes reusable design ideas, BYOC/BYOK-friendly automation surfaces, and differences that matter when porting concepts between repositories. This is a Grok-Wiki source-grounded repository wiki. Use the complete Markdown link when an agent needs the full repo context. ## Context Links - [Complete Markdown wiki](https://grok-wiki.com/public/wiki/tmux-tmux-with-manaflow-ai-cmux-62db34dfaddc/llms-full.txt) - [Complete Markdown alias](https://grok-wiki.com/public/wiki/tmux-tmux-with-manaflow-ai-cmux-62db34dfaddc.md) - [Human interactive wiki](https://grok-wiki.com/public/wiki/tmux-tmux-with-manaflow-ai-cmux-62db34dfaddc) - [GitHub repository](https://github.com/tmux/tmux) ## Repository - Repository: tmux/tmux-with-manaflow-ai-cmux - Generated: 2026-05-24T19:18:32.447Z - Updated: 2026-05-24T19:31:16.130Z - Runtime: Codex CLI - Format: Repo Comparison - Pages: 10 ## Pages - [Comparison Frame](https://grok-wiki.com/public/wiki/tmux-tmux-with-manaflow-ai-cmux-62db34dfaddc/pages/01-comparison-frame.md): The comparison lens: tmux optimizes a cross-platform C daemon and terminal protocol core, while cmux builds a macOS-native orchestration surface around terminals, browser panes, notifications, and agent hooks. No local STRATEGY.md or docs/solutions context was present, so repository code and tests are the source of truth. - [Platform & Build Boundaries](https://grok-wiki.com/public/wiki/tmux-tmux-with-manaflow-ai-cmux-62db34dfaddc/pages/02-platform-build-boundaries.md): How each repository encodes portability: tmux uses autotools, feature checks, compat sources, and C dependencies; cmux uses Xcode targets, Swift packages, bundled app resources, and a separate web backend surface. - [Lifecycle & Socket Control](https://grok-wiki.com/public/wiki/tmux-tmux-with-manaflow-ai-cmux-62db34dfaddc/pages/03-lifecycle-socket-control.md): Contrasts tmux's client-server fork, lock, imsg, and Unix socket lifecycle with cmux's in-app socket listener, access modes, CLI client behavior, and local automation guardrails. - [Panes, Workspaces & Layout](https://grok-wiki.com/public/wiki/tmux-tmux-with-manaflow-ai-cmux-62db34dfaddc/pages/04-panes-workspaces-layout.md): Compares tmux's sessions, windows, panes, split commands, and layout tree mechanics with cmux's workspaces, panels, Bonsplit-backed layout state, terminal panels, and persisted surface snapshots. - [Command & Config Surfaces](https://grok-wiki.com/public/wiki/tmux-tmux-with-manaflow-ai-cmux-62db34dfaddc/pages/05-command-config-surfaces.md): Shows how tmux exposes a grammar, command queue, options, key bindings, and config loading, while cmux layers JSONC project config, command execution, Ghostty config compatibility, and CLI configuration commands. - [Agent Notifications & Hooks](https://grok-wiki.com/public/wiki/tmux-tmux-with-manaflow-ai-cmux-62db34dfaddc/pages/06-agent-notifications-hooks.md): Explains the shift from tmux's terminal alerts and control notifications to cmux's agent-aware notification queue, unread state, CLI hook definitions, and extensible hook formats for multiple coding agents. - [Browser Automation vs Terminal Control](https://grok-wiki.com/public/wiki/tmux-tmux-with-manaflow-ai-cmux-62db34dfaddc/pages/07-browser-automation-vs-terminal-control.md): Contrasts tmux's terminal-only control and capture model with cmux's browser pane automation, WebKit-backed panels, screenshots, profiles, and socket-addressable browser actions for local dev workflows. - [Remote SSH & Provider Neutrality](https://grok-wiki.com/public/wiki/tmux-tmux-with-manaflow-ai-cmux-62db34dfaddc/pages/08-remote-ssh-provider-neutrality.md): Compares tmux's shell, job, and spawn portability with cmux's SSH workspace, remote PTY attach, loopback routing, and daemon bridge design. The portable lesson is to keep orchestration file, socket, and repository based so BYOC/BYOK workflows do not depend on one model provider or hosted connector. - [Regression & Fuzz Boundaries](https://grok-wiki.com/public/wiki/tmux-tmux-with-manaflow-ai-cmux-62db34dfaddc/pages/09-regression-fuzz-boundaries.md): Maps the quality signals that make each project maintainable: tmux has shell regressions and fuzzers around command parsing, input, style, and formats; cmux has Swift unit and UI tests around sockets, browser panes, sessions, hooks, and app regressions. - [Comparison Verdict](https://grok-wiki.com/public/wiki/tmux-tmux-with-manaflow-ai-cmux-62db34dfaddc/pages/10-comparison-verdict.md): The closing synthesis: tmux is strongest as a small, portable, protocol-deep multiplexer; cmux is strongest as a native agent-workflow shell that combines terminal, browser, notifications, remote access, and local automation. The most portable ideas are explicit socket contracts, source-backed command/config schemas, provider-neutral hooks, and focused regression boundaries. ## Source Files - `manaflow-ai-cmux:CLI/cmux.swift` - `manaflow-ai-cmux:CLI/CMUXCLI+AgentHookDefinitions.swift` - `manaflow-ai-cmux:cmux.xcodeproj/project.pbxproj` - `manaflow-ai-cmux:cmuxTests/BrowserPanelTests.swift` - `manaflow-ai-cmux:cmuxTests/CLIGenericHookPersistenceTests.swift` - `manaflow-ai-cmux:cmuxTests/TerminalControllerSocketSecurityTests.swift` - `manaflow-ai-cmux:cmuxUITests/AutomationSocketUITests.swift` - `manaflow-ai-cmux:Packages/CMUXAgentLaunch/Package.swift` - `manaflow-ai-cmux:Packages/CMUXWorkstream/Package.swift` - `manaflow-ai-cmux:README.md` - `manaflow-ai-cmux:Sources/cmuxApp.swift` - `manaflow-ai-cmux:Sources/CmuxConfig.swift` - `manaflow-ai-cmux:Sources/CmuxConfigExecutor.swift` - `manaflow-ai-cmux:Sources/GhosttyConfig.swift` - `manaflow-ai-cmux:Sources/NotificationsPage.swift` - `manaflow-ai-cmux:Sources/Panels/BrowserAutomation.swift` - `manaflow-ai-cmux:Sources/Panels/BrowserPanel.swift` - `manaflow-ai-cmux:Sources/Panels/BrowserScreenshotPipeline.swift` - `manaflow-ai-cmux:Sources/Panels/CmuxWebView.swift` - `manaflow-ai-cmux:Sources/Panels/TerminalPanel.swift` - `manaflow-ai-cmux:Sources/RemoteLoopbackRuntimeBridge.swift` - `manaflow-ai-cmux:Sources/RemoteRelayZshBootstrap.swift` - `manaflow-ai-cmux:Sources/SocketControlSettings.swift` - `manaflow-ai-cmux:Sources/TabManager.swift` - `manaflow-ai-cmux:Sources/TerminalController.swift` - `manaflow-ai-cmux:Sources/TerminalNotificationQueue.swift` - `manaflow-ai-cmux:Sources/TerminalNotificationStore.swift` - `manaflow-ai-cmux:Sources/Workspace.swift` - `manaflow-ai-cmux:Sources/WorkspaceRemoteConfiguration.swift` - `manaflow-ai-cmux:Sources/WorkspaceRemoteSSHBatchCommandBuilder.swift` - `manaflow-ai-cmux:web/README.md` - `tmux-tmux:alerts.c` - `tmux-tmux:cfg.c` - `tmux-tmux:client.c` - `tmux-tmux:cmd-capture-pane.c` - `tmux-tmux:cmd-new-session.c` - `tmux-tmux:cmd-parse.y` - `tmux-tmux:cmd-queue.c` - `tmux-tmux:cmd-split-window.c` - `tmux-tmux:compat.h` - `tmux-tmux:configure.ac` - `tmux-tmux:control-notify.c` - `tmux-tmux:control.c` - `tmux-tmux:environ.c` - `tmux-tmux:fuzz/cmd-parse-fuzzer.c` - `tmux-tmux:fuzz/input-fuzzer.c` - `tmux-tmux:input-keys.c` - `tmux-tmux:input.c` - `tmux-tmux:job.c` - `tmux-tmux:key-bindings.c` - `tmux-tmux:layout-set.c` - `tmux-tmux:layout.c` - `tmux-tmux:Makefile.am` - `tmux-tmux:notify.c` - `tmux-tmux:options.c` - `tmux-tmux:proc.c` - `tmux-tmux:README` - `tmux-tmux:regress/control-client-sanity.sh` - `tmux-tmux:regress/input-keys.sh` - `tmux-tmux:server.c` - `tmux-tmux:spawn.c` - `tmux-tmux:tmux.h` - `tmux-tmux:window.c`