Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
manaflow-ai avatar

Cmux Debugging

  • 2.5k installs
  • 25.6k repo stars
  • Updated August 5, 2026
  • manaflow-ai/cmux

cmux-debugging is an agent skill that diagnoses stuck panes, broken agent sessions, IPC failures, and race conditions for developers who run cmux terminal workflows locally or in CI.

About

cmux-debugging is a task-scoped agent skill in the manaflow-ai/cmux repository for diagnosing runtime issues in cmux, a Ghostty-based macOS terminal with vertical tabs built for AI coding agents. The skill documents DEBUG event log destinations and ring-buffer behavior guarded by #if DEBUG, Debug menu extension patterns, and runtime pitfalls including UTTypes registration, terminal rendering latency, hit-testing guards, SwiftUI list snapshot boundaries, and body-time mutation prohibitions. Two reference files—debug-event-log.md and runtime-pitfalls.md—provide deep troubleshooting context alongside agents/openai.yaml metadata. Developers reach for cmux-debugging when cmux panes freeze, agent sessions break, IPC socket communication fails, or CI agent workflows show race conditions. Install via npx skills add manaflow-ai/cmux --skill cmux-debugging.

  • Traces pane spawn and teardown failure modes
  • Isolates agent IPC and stdin/stdout routing bugs
  • Provides reproducible minimal failing session steps
  • Covers log locations and diagnostic commands
  • Documents recovery paths for corrupted session state

Cmux Debugging by the numbers

  • 2,536 all-time installs (skills.sh)
  • +301 installs in the week ending Aug 5, 2026 (Skillselion tracking)
  • Ranked #34 of 596 Debugging skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/manaflow-ai/cmux --skill cmux-debugging

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs2.5k
repo stars25.6k
Last updatedAugust 5, 2026
Repositorymanaflow-ai/cmux

How do you debug cmux stuck panes and agent sessions?

Diagnose stuck panes, broken agent sessions, IPC failures, and race conditions when cmux misbehaves in local or CI agent workflows.

Who is it for?

Developers running cmux locally or in CI who hit stuck panes, broken agent sessions, IPC socket failures, or SwiftUI terminal rendering bugs.

Skip if: Developers not using cmux or those needing general application debugging unrelated to cmux terminal panes and agent IPC.

When should I use this skill?

cmux panes freeze, agent sessions disconnect, IPC or socket errors appear, or terminal rendering and hit-testing bugs occur in cmux workflows.

What you get

Debug event log interpretation, runtime pitfall fixes, IPC diagnosis notes, and validated cmux session recovery steps

  • Debug diagnosis report
  • Runtime pitfall fix steps
  • Event log interpretation

By the numbers

  • Includes 2 reference files: debug-event-log.md and runtime-pitfalls.md
  • SKILL.md spans 54 lines with agents/openai.yaml metadata

Files

SKILL.mdMarkdownGitHub ↗

cmux Debugging

Debug event log

When adding debug event instrumentation, put events (keys, mouse, focus, splits, tabs) in the unified DEBUG build log. This is not a blanket requirement to add logs to every new code path. Most temporary probes should be added only during the dogfood debug loop and removed before merge.

tail -f "$(cat /tmp/cmux-last-debug-log-path 2>/dev/null || echo /tmp/cmux-debug.log)"
  • Untagged Debug app: /tmp/cmux-debug.log
  • Tagged Debug app (./scripts/reload.sh --tag <tag>): /tmp/cmux-debug-<tag>.log
  • reload.sh writes the current path to /tmp/cmux-last-debug-log-path
  • reload.sh writes the selected dev CLI path to /tmp/cmux-last-cli-path
  • reload.sh updates /tmp/cmux-cli and $HOME/.local/bin/cmux-dev to that CLI
  • Implementation: Packages/macOS/CMUXDebugLog/Sources/CMUXDebugLog/DebugEventLog.swift
  • App shim: Sources/App/DebugLogging.swift
  • Free function cmuxDebugLog("message") logs with timestamp and appends to file in real time from cmux code
  • The package implementation and app shim are #if DEBUG; all call sites must be wrapped in #if DEBUG / #endif
  • 500-entry ring buffer; CMUXDebugLog.DebugEventLog.shared.dump() writes full buffer to file
  • Key events logged in AppDelegate.swift (monitor, performKeyEquivalent)
  • Mouse/UI events logged inline in views (ContentView, BrowserPanelView, etc.)
  • Focus events: focus.panel, focus.bonsplit, focus.firstResponder, focus.moveFocus
  • Bonsplit events: tab.select, tab.close, tab.dragStart, tab.drop, pane.focus, pane.drop, divider.dragStart

Debug menu

The app has a Debug menu in the macOS menu bar only in DEBUG builds. Use it for visual iteration.

  • Debug > Debug Windows contains panels for tuning layout, colors, and behavior. Entries are alphabetical with no dividers.
  • To add a debug toggle or visual option: create an NSWindowController subclass with a shared singleton, add it to the "Debug Windows" menu in Sources/cmuxApp.swift, and add a SwiftUI view with @AppStorage bindings for live changes.
  • When the user says "debug menu" or "debug window", they mean this menu, not defaults write.

Runtime pitfalls

  • Custom UTTypes for drag-and-drop must be declared in Resources/Info.plist under UTExportedTypeDeclarations.
  • Do not add an app-level display link or manual ghostty_surface_draw loop; rely on Ghostty wakeups/renderer to avoid typing lag.
  • WindowTerminalHostView.hitTest() is typing-latency-sensitive. All divider/sidebar/drag routing is gated to pointer events only. Do not add work outside the isPointerEvent guard.
  • TabItemView uses Equatable conformance plus .equatable() to skip body re-evaluation during typing. Do not add environment/store/binding reads without updating equality and the call site.
  • TerminalSurface.forceRefresh() is called on every keystroke. Do not add allocations, file I/O, or formatting there.
  • SurfaceSearchOverlay must be mounted from GhosttySurfaceScrollView in Sources/GhosttyTerminalView.swift, not from SwiftUI panel containers.
  • List subtrees with LazyVStack, LazyHStack, List, or ForEach must pass immutable row snapshots plus closures below the boundary. Do not pass observable stores into row views.
  • Functions called from SwiftUI body must not mutate state or schedule store writes.
  • Foundation, SwiftUI, AttributeGraph, and WebKit semantics can change between macOS major versions. Test on the reporter's macOS before declaring a user repro disproven.

Detailed references

  • Read references/debug-event-log.md when adding or interpreting debug log probes.
  • Read references/runtime-pitfalls.md before touching terminal rendering, hit testing, tab rows, list virtualization, search overlay layering, or OS-version-sensitive code.

Related skills

How it compares

Pick cmux-debugging over cmux-diagnostics when the issue is runtime rendering or IPC bugs rather than CLI health checks and settings validation.

FAQ

What runtime issues does cmux-debugging cover?

cmux-debugging covers stuck panes, broken agent sessions, IPC failures, and race conditions in cmux. Reference docs detail UTTypes registration, terminal rendering latency, hit-testing guards, SwiftUI list boundaries, and body-time mutation errors.

How do you install cmux-debugging?

Install cmux-debugging with npx skills add manaflow-ai/cmux --skill cmux-debugging. The skill lives in skills/cmux-debugging/ with reference docs for debug event logs and runtime pitfalls in the cmux repository.

Debuggingtestingdevopsintegrations

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.