Skip to content

Repository files navigation

Multiplex

A spatial SSH terminal for remote tmux — visionOS first, with iPadOS and iPhone alongside. Its deck is a fleet-wide monitor wall: hosts probe concurrently, sessions appear as live capture-pane tiles, and each attach opens in its own window. herdr is also available per host.

App Store · multiplexterm.dev · Design rationale · Contributing · Contributor guide

The deck: a live monitor wall of tmux and herdr sessions

What it does

  • Fleet-wide deck: live tmux and herdr sessions across every host, with password, OpenSSH-key, or mpx bind setup and iCloud Keychain sync.
  • Real terminal windows: spatial scenes on visionOS, Stage Manager on iPad, and an adaptive iPhone shell. Tabs can move or merge without reconnecting.
  • Agent awareness: detects Claude Code, Codex, Pi, Grok Build, Antigravity CLI, and Hermes; surfaces questions, permissions, and completed turns on the wall and through notifications.
  • Purpose-built input: keyboard-focus arbitration, key rail with hold-CTRL Key Commands (saved chords and text macros) and a drag-to-arrange key order, IME, dictation, remote scrolling, tmux Copy Mode, and text selection.
  • More than a shell: confirmed web links and remote paths open in a floating side panel beside the live terminal on iPad and Vision Pro (or move into a tab), alongside SFTP uploads, optional clean-room mosh, widgets, Shortcuts, deep links, and custom themes.

Some features require Multiplex Pro; see docs/store-metadata.md. This repository contains the complete app.

Demo

Vision Pro iPad
multiplex-visionpro-demo.mp4
multiplex-ipad-demo.mp4

Vision Pro: Run Claude Code in herdr, open the File Viewer and inline browser (using serve-sim), then send a "create PR" message by pressing an Agent Bar key.

iPad: Run Claude Code in tmux, use tmux shortcuts to split and resize panes, see diff in the File Viewer, then send a "commit in current branch" message by pressing an Agent Bar key.

Screenshots

Bind Deck Terminal Shortcuts
Bind Host screen Deck screen Terminal screen Shortcut editor

Bind a host with mpx-cli or manually. Host settings sync to all your devices through iCloud Keychain.

Deck: See every tmux and herdr session.

Terminal: Use the Agent Bar with supported CLI agents. Long-press CTRL to access commands. Tap the chat button to open the composer.

Shortcuts: Set up Multiplex shortcuts to quickly open a session or agent from a widget or the Action Button.

Building

Requires Xcode with the visionOS SDK and XcodeGen. Install the command-line prerequisites with Homebrew:

brew install xcodegen swiftlint

The Xcode project is generated, so edit project.yml, not the .xcodeproj. Regenerate it after project configuration changes:

xcodegen generate
xcodebuild -project Multiplex.xcodeproj -scheme Multiplex \
  -destination 'platform=visionOS Simulator,name=Apple Vision Pro' \
  -derivedDataPath DerivedData build

Use the MultiplexTests scheme for unit tests and ./Tools/build.sh lint for linting. Keep -derivedDataPath DerivedData, and do not build visionOS and iOS against it concurrently. Minimum visionOS 1.0 / iOS 17. See AGENTS.md for the contributor workflow and architecture.

End-to-end without a remote server

The local harness runs a user-mode sshd on 127.0.0.1:2222 without touching ~/.ssh:

./Tools/dev-sshd/harness.sh start   # keys + sshd + writes state/seed.json
./Tools/dev-sshd/harness.sh demo    # tmux sessions: main, scratch, deploy, agent
./Tools/dev-sshd/harness.sh herdr   # herdr sessions with deterministic states
./Tools/dev-sshd/harness.sh stop

Point MULTIPLEX_SEED_HOST at Tools/dev-sshd/state/seed.json to seed a DEBUG build. See docs/agents/e2e-headless.md for the full headless workflow.

mpx CLI

mpx is the companion CLI for binding a machine. Run mpx bind on the remote host and it appears on the deck with the app's SSH key enrolled and the host key fingerprints pinned from the first connection — nothing typed. The offer reaches the app by QR, local-network announcement with a PIN, or --copy to the clipboard; the default handshake never moves a private key.

Install and usage: multiplex-term/mpx-cli.

Third-party code

Library Version Role
SwiftTerm 1.18.0, vendored Terminal emulator
Citadel 0.12.0, exact SSH, exec, SFTP, and key parsing
swift-nio-ssh 0.3.5, vendored SSH transport dependency

Citadel 0.12.0 is pinned because 0.12.1 changed its swift-nio-ssh source to an unaudited fork. The mosh client is a clean-room implementation. The complete audited inventory and license texts live in Multiplex/Models/LicenseCatalog.swift.

Credits

License

Apache License 2.0 — see LICENSE and NOTICE.

About

An SSH / tmux / herdr terminal for Vision Pro, iPad and iPhone

Topics

Resources

Contributing

Stars

11 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages