cmux for QA/SDET

Run many coding agents without losing the test story.

A Mac-first HTML deck for teaching agentic development, test automation, and parallel QA investigations.

Mac-nativeSwift/AppKit terminal
Agent-readyClaude, Codex, OpenCode, Gemini and more
QA-readyBrowser, CLI, notifications, and splits

Based on the requested cmux video topic plus current official cmux documentation.

Workspaces
bug-421waiting
auth-flowtests passing
api-mockneeds review
ci-redfailure
Agent pane$ codex
Investigate flaky checkout spec
Status: waiting
Test runner$ npm test -- checkout
23 passed
1 flaky
Checkout
Order summary
Payment form
Submit
DOM ready
Sources: cmux.com; github.com/manaflow-ai/cmux
01
The teaching problem

The hard part is not starting an agent. It is supervising several.

QA work naturally splits into logs, UI, tests, code, CI, and review. cmux makes those streams visible.

Before

Terminal tabs hide status
Agent waits unnoticed
Browser testing is separate
Logs, branch, and port context drift
Parallel work causes Git collisions

After cmux

Workspace per task
Split panes per investigation
Attention routing
Scriptable control
The instructor move: assign one visible lane to each agent task.
Source: cmux docs and README
02
What cmux is

cmux is a Mac terminal that adds agent supervision primitives.

It stays close to the terminal, but adds the missing cockpit pieces around it.

cmuxnative macOS terminal

Ghostty rendering

GPU-accelerated terminal surface.

Split panes

Agent, tests, server, and browser together.

Vertical tabs

Task queue with branch, cwd, ports, and notifications.

In-app browser

Scriptable UI inspection and DOM actions.

CLI + socket

Programmatic workspace, surface, input, and status control.

Mac-only for now
Sources: cmux homepage; GitHub README
03
Mental model

Teach cmux as four nested units: workspace, pane, surface, process.

Once students know the hierarchy, every feature has a home.

Workspace: one bug, feature, PR, or lab task
Pane A
Surface: Agent
codex / claude / opencode
Surface: Test Runner
npm test, playwright, pytest
Pane B
Surface: Dev Server
localhost:3000
Surface: Browser
DOM, console, screenshots
Workspacetask boundary
Panescreen region
Surfacetab inside pane
Processagent / command / browser
Source: cmux docs concepts synthesized
04
Mac setup

Install cmux, then wire it into the agents your students already use.

Keep setup boring: one install path, one hook pass, one small verification.

recommended Mac setup
$ brew tap manaflow-ai/cmux
$ brew install --cask cmux
$ cmux hooks setup
$ cmux hooks setup codex
$ cmux ping
pong: true
Platform note: macOS only for now Theme note: reads Ghostty config
1
Install

DMG or Homebrew cask. The README recommends DMG for auto-updates.

2
Launch

macOS may ask for first-launch confirmation from an identified developer.

3
Confirm agents

Install Claude Code, Codex, OpenCode, Gemini, or your preferred terminal agent.

4
Add hooks

Hook setup lets supported agents report resumable session IDs and attention events.

Source: cmux GitHub README install section
05
Vertical tabs

Each task becomes a visible lane instead of a hidden terminal tab.

For students, this is the difference between multitasking and chaos.

Git branch visible

Students can see which lane owns which branch or worktree.

Working directory visible

No more asking which folder the terminal is currently in.

Ports visible

Useful when dev server, mock server, and app server run together.

Latest notification text

The sidebar explains why an agent is waiting.

Source: cmux homepage and README
06
Split panes

Put the entire QA investigation on one screen.

A strong cmux layout makes every pane answer one question.

Workspaces
bug-421waiting
auth-flowtests passing
api-mockneeds review
ci-redfailure
Agent paneInvestigate flaky checkout spec
Status: waiting for decision
Test runner$ npm test -- checkout
1 flaky test
Checkout page
Order summary
Payment form
Submit button
DOM snapshot ready
1
Agent

What change should we make?

2
Tests

Is the failure stable?

3
Server

What is running locally?

4
Browser

What does the user see?

Cmd+D split right; Cmd+Shift+D split down
Source: cmux keyboard shortcuts docs
07
Notifications

cmux turns agent waiting time into an explicit queue.

This is the feature students will feel immediately when several agents are running.

Agent emits event

cmux notify or OSC 9/99/777.

Pane lights up

Blue ring around the surface.

Sidebar marks unread

Badge and latest message.

Instructor jumps in

Cmd+Shift+U to latest unread.

manual notification
$ cmux notify --title "Codex" \
  --subtitle "Waiting" \
  --body "Review locator strategy"

Teaching tip

Tell each agent when to notify: after test completion, permission request, failing build, or handoff. Students should never poll every pane manually.

Source: cmux notifications docs
08
In-app browser

The browser pane makes UI testing part of the same agent workspace.

For QA/SDET, this is where cmux becomes more than a terminal.

Snapshot

accessibility tree

Click/fill

DOM actions

Console/errors

debug evidence

Screenshot

failure artifact

automation commands
cmux browser open-split http://localhost:3000
cmux browser surface:2 wait --text "Login"
cmux browser surface:2 fill "#email" --text [email protected]
cmux browser surface:2 click "button[type=submit]" --snapshot-after
cmux browser surface:2 errors list
cmux browser surface:2 screenshot --out failure.png

QA lesson

Students can ask an agent to inspect the UI, reproduce a user journey, collect console errors, and return evidence before proposing a fix.

Source: cmux browser automation docs
09
CLI and socket

cmux is controllable enough for agents and test scripts.

Every important workspace action can be driven by the CLI or JSON socket.

Workspace

list-workspaces new-workspace select-workspace close-workspace

Surface

new-split right list-surfaces focus-surface send-surface

Notify

notify list-notifications clear-notifications

Status

set-status set-progress log sidebar-state

System

ping capabilities identify
Unix socket JSON request
{"id":"ws","method":"workspace.list","params":{}}
{"id":"notify","method":"notification.create", ...}

Why this matters for SDET

Your build script can set status, progress, logs, and failure notifications while agents continue working in their own panes.

Source: cmux CLI reference
10
Claude teams

cmux claude-teams turns teammate agents into native splits.

Claude thinks it is using tmux; cmux translates those pane commands into its own socket API.

Run

cmux claude-teams

Enable

CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1

Shim

tmux commands intercepted

Translate

split-window -> surface.split
send-keys -> surface.send_text

Display

Teammates appear as cmux panes with sidebar metadata.

Instructor framing

Use teammate mode when one root agent should delegate sub-tasks: inspect tests, explore code, generate patch, or review changes. cmux keeps those teammates visible instead of hiding them inside tmux panes.

Source: cmux Claude Code Teams docs
11
Parallel agents

Use Git worktrees so multiple agents can code without stepping on each other.

cmux custom workspace commands can create a repeatable multi-agent layout.

Worktree topology

main repo

clean source of truth

wt/bug-ui

Codex

wt/test-gen

Claude

wt/review

OpenCode

.cmux/cmux.json
"commands": [
  {
    "name": "Worktree Agents",
    "workspace": {
      "layout": { "direction": "horizontal", ... }
    }
  }
]

Classroom rule

Give each agent a branch, a worktree, and one owner. Merge only after tests and review pass. cmux gives the layout; Git gives the isolation.

Source: cmux custom commands docs
12
Session restore

Long QA investigations can survive a restart.

cmux restores app-owned layout first, then supported agents can resume from saved session IDs.

1
Save snapshot

windows, workspaces, panes, cwd, browser URL/history

2
Hooks capture

supported agent session ID and sanitized launch command

3
Relaunch

layout rebuilds before commands run

4
Resume agents

native resume command starts when trusted/enabled

Supported agent examples

Claude Code - claude --resume <id>
Codex - codex resume <id>
OpenCode - opencode --session <id>
Gemini - gemini --resume <id>
Copilot - copilot --resume <id>

Important: cmux does not checkpoint arbitrary process memory.

Source: cmux session restore docs
13
SSH

Mac users can supervise remote dev/test boxes as cmux workspaces.

The local app shows the workspace; the compute can live on a server.

MacBook running cmux

local sidebar, panes, browser, notifications

Remote machine

agent process, dev server, test runner, repo

cmux ssh user@remote

Browser panes

localhost:3000 routes through remote network

Drag and drop

files upload via scp

Notifications

remote cmux notify appears locally

Reconnect

backoff and reattach on drops

Source: cmux SSH docs
14
QA workflow 1

Reproduce, inspect, patch, and verify a bug in parallel.

This is a practical classroom demo because each agent has a narrow job.

1

Lane 1: Reproducer

Browser pane drives the user journey, captures screenshot, console, and DOM snapshot.

browser
2

Lane 2: Test writer

Agent creates a failing Playwright/Cypress test in an isolated worktree.

test
3

Lane 3: Fix agent

Agent inspects code, proposes patch, runs targeted tests.

code
4

Lane 4: Reviewer

Separate agent checks locator quality, race conditions, and regression risk.

review
Definition of done: one failing test becomes one passing test, with evidence attached.
QA/SDET workflow pattern derived from cmux primitives
15
QA workflow 2

Use agents as specialized SDET roles, not a single magic worker.

cmux makes role separation visible enough for students to practice.

RoleAgent taskHuman checkpoint
Test designerCreate edge-case matrix and prioritize by risk.Teacher approves coverage before code.
Automation builderImplement tests and page objects in worktree.Run locally and inspect failures.
Flake hunterReview waits, selectors, retries, timing, network assumptions.Reject brittle locators.
ReviewerDiff review, security concerns, missing assertions.Merge only after test + review.
QA/SDET workflow pattern derived from cmux primitives
16
Safety model

Parallel agents need explicit ownership and review gates.

cmux improves visibility, but the instructor still defines the operating rules.

One branch per agent

Use worktrees or separate branches. Never let two agents edit the same files casually.

One task per lane

A workspace should answer one ticket, one bug, or one lab goal.

No blind approvals

Review permission prompts, shell commands, and network actions before accepting.

Test before merge

Require targeted tests, full relevant suite, and human review.

Capture evidence

Screenshots, console errors, failing test output, and final passing run.

Instructor mantra: fast parallelism, slow merge.

Instructor guidance for agentic QA work
17
45-minute demo

Teach cmux through one small web app and one real bug.

This agenda keeps the class moving from concept to hands-on workflow.

0-5 min
Why terminal tabs fail with agents
5-12 min
Install, launch, create first workspace
12-20 min
Split panes: agent, tests, dev server, browser
20-30 min
Reproduce bug with browser automation
30-38 min
Spawn specialist agents in worktrees
38-45 min
Review, run tests, merge decision
demo commands
npm run dev
cmux browser open-split localhost:3000
cmux notify --title "Tests" --body "Done"
cmux claude-teams

Demo asset

Use any small Todo, Login, Cart, or Dashboard app with one seeded bug and one existing test suite.

Instructor demo plan
18
Student lab

Spawn three agents, then converge on one tested patch.

The goal is not agent spectacle. The goal is disciplined parallel QA.

Agent A

Reproduce bug
Collect browser evidence
Write failing test

Agent B

Inspect code path
Patch the defect
Run targeted tests

Agent C

Review diff
Find flaky assumptions
Suggest missing assertions

Evidence

screenshot + console + DOM notes

Patch

minimal diff in owned worktree

Tests

one failing test now passing

Review

human-approved merge plan

Lab submission: screenshot of cmux workspace + PR/diff + test output.

Student lab plan
19
Cheat sheet

The commands students should remember first.

Keep this as the final reference slide while they work.

Workspaces

Cmd+N new workspace Cmd+1..9 jump Cmd+Shift+W close

Splits

Cmd+D split right Cmd+Shift+D split down Option+Cmd+Arrow focus

Browser

Cmd+Shift+L open browser cmux browser snapshot cmux browser errors list

Notifications

Cmd+I panel Cmd+Shift+U latest unread cmux notify --title ...

Agents

cmux hooks setup codex cmux claude-teams worktree per agent

Restore/remote

Cmd+Shift+O reopen cmux restore-session cmux ssh user@remote

Primary references: cmux.com, cmux docs, GitHub README, and the requested YouTube topic URL.

Sources: cmux docs; GitHub README; user YouTube URL
20