OPEN BETA Actively developed — feedback welcome.
CIPHER-MUX
// 02 · Architecture

What’s inside.

Here is an overview of the core building blocks: from the grid system and personas to the built-in MCP server. Everything on one page, so you can calmly understand how the components interact.

01 Overview

The Application

CIPHER-MUX is an Electron environment. Its core is a grid with up to 21 cells for agent sessions and Markdown editors. In the background, tmux ensures that your sessions are safely preserved, even during a system restart or crash.

CIPHER-MUX — 2×2 Grid in cipher-ivory Theme CIPHER-MUX — 2×2 Grid in cipher-dark Theme
cipher-ivory v0.9.99
21 cells max (7×3)
13 entity types
68 MCP tools across 12 categories
13 UI themes incl. WCAG AAA
02 Interface

Using the Grid System flexibly

The grid is your workspace — up to 7 columns, 3 rows. Organize sessions via drag & drop to suit your workflow. Cells expand vertically for longer output. Header controls give you project switching and shell access.

03 Process Management

Sessions and the tmux Backend

Each cell hosts an isolated CLI process with its own context window — which CLI is up to the role. Because the tmux backend keeps these processes active, you can close the app at any time. Upon your next launch, a recovery dialog will help you seamlessly resume existing sessions.

// session anatomy
  • Dedicated CLI process per cell
  • Own context, own project instructions, own history
  • Header controls: Expand, switch project, Shell, Close
  • Click header = focus, visual highlight
  • $-Button: direct access to the session’s tmux terminal
  • Eject: detach session from the grid into its own window
// recovery
// after app restart
● 3 sessions found in tmux
✓ workshop · running 2h 14m
✓ companion · running 2h 14m
✓ cyber-factory · running 0h 47m
RESUME CLOSE ALL
04 Roles

Presets — Functional System Prompts

While personas define the “how,” presets define the “what.” They give agents clear tasks, tools, and boundaries. Eight specialized roles structure the development process:

05 Configuration

Personas — Finding the right tone

Personas control how the model communicates with you. Since everyone works differently, you can choose from six standard profiles. Each persona now comes with its own avatar — a visual identity that appears in the session header and the workspace editor. You can also create custom profiles whenever needed.

Cipher
// The Sentinel
Watchful, pragmatically loyal. Maker-team vibe.
bone-dryno service phrasesradically honestdark humor
Relay
// The Dry
Science-journalistic. Factual, eye-level.
fact-drivenno flatterydeclare uncertainty
Wayne
// The Pragmatic Enthusiast
"We'll figure it out" attitude. Motivation in tough sessions.
light nerd humoroption a vs berrors = puzzles
Der Kyniker
// Radically Reduced
Maximally compressed, telegraphic. Facts and code only.
bullets over prosebinary answers
Theaitetos
// Discursive
Counter-questions, expose logical gaps, force reflection.
no ready answersexpose edge-cases
The Glitch
// Weird · Quirky
Breaks AI response patterns. For stuck situations.
chaos-theory analogiesquestion premises
06 Prompt Architecture

How Prompts are assembled

The system prompt for a session is generated dynamically. It combines the function (preset), the tone (persona), and the specific project context (workspace). This ensures the agent always knows exactly what environment it is operating in.

// persona resolution at session start
1.Global Active Persona — if set: applies to all sessions
2.Preset Override — selection in preset editor
3.Default Matrix — recommended from the pack
↓Hardcoded Fallback: Relay
// system prompt · 3 layers per session
Preset Role, phases, tools, limits
Persona Tonality, stylistics (hat)
Workspace Project paths, memory, custom prompt parts
07 Audio I/O

Speech Recognition and Audio Output

Prefer speaking over typing? Whisper.cpp runs locally, no cloud involved. VAD detects pauses automatically. For speech output: Piper or the macOS system voice. New: The Cipher Adult voice bundle provides a dedicated German adult voice for natural-sounding output.

● whisper.cpp
local · no cloud
  • VAD: detects pauses
  • review-then-submit
  • transcript visible first
● voice cmds
speech → action
  • “submit” / “send”
  • “up” / “down”
  • “to marker”
● grid nav
focus by voice
  • “grid left/right”
  • “grid up/down”
  • fuzzy: “grit”, “cell”
● BT shutter
physical submit
  • STT pin to session
  • BT click → send
  • completely hands-free
TTS
Any entity session can have text read aloud. Piper in voice mode, macOS say as fallback.
NORMALINTERRUPT
08 Knowledge Management

Securing knowledge locally

Notes and specs go into the built-in editor — CodeMirror 6, Markdown, auto-save. Companion sessions store project knowledge in a local SQLite database. Auto-tagging runs privacy-friendly via the local gemma3:4b model through Ollama.

// notes editor
CodeMirror 6 · Markdown live
  • YAML frontmatter (title, tags)
  • Auto-save after 2s · Cmd+S triggers auto-tagging
  • Ollama gemma3:4b (local) for tag suggestions
  • Global or workspace-scoped
  • Tag tree in the sidebar (NotesTreeView)
  • TestcaseView with checkboxes + screenshots
  • Full MCP access: read, write, search, handoff
// companion memory
SQLite · FTS5 · persistent

Companion, Refinement, Voice remember facts, preferences, interactions, events — across sessions.

● Facts● Preferences● Interactions● Events
09 Interfaces

Model Context Protocol (MCP)

A local HTTP server with 62 tools across 10 categories. Agents use them to manage sessions, communicate via message bus, and access notes and memory.

Session Mgmt 08
create · kill · focus · eject · scroll
Message Bus 02
send · read
Context Monitor 01
context_status
Task Queue 04
create · update · list · get
Bug Reports 01
resolve
Input Requests 01
create
Notes 10
CRUD · search · handoff_* · open · list
Companion Memory 04
write · recall · search · forget
App Control 12
grid · sidebar · theme · choreography · highlight
Voice / TTS 02
tts_speak · entity voice
10 Accessibility

Accessible for everyone

cipher-mux takes accessibility seriously. Beyond 10 selectable color themes (see above), dedicated profiles for color vision deficiency ensure all status information remains readable without relying on color alone. Focus Mode dims all cells except the one you’re working in — less visual noise, more concentration.

CIPHER-MUX in High Contrast profile
High Contrast
Low vision · variable
WCAG AAA · Black/White/Yellow · Maximum contrast
CIPHER-MUX in Deuteranopia profile
Deuteranopia
Red-green deficiency · ~7% of men
Red/Green → Blue/Orange · Okabe-Ito palette
CIPHER-MUX in Tritanopia profile
Tritanopia
Blue-yellow deficiency · <0.01%
Blue/Yellow → Magenta/Green
CIPHER-MUX in Achromatopsia profile
Achromatopsia
Complete color blindness · ~0.003%
Pure grayscale · Shapes and text as information carriers
11 Resource Management

Efficient Token Usage

Long sessions eventually hit context limits. A real-time indicator helps you monitor usage. At 90% capacity, the Workshop recommends or independently initiates summarization routines so no information is lost. Additionally, the system automatically selects the most appropriate LLM (Opus, Sonnet, or Haiku) based on the task's complexity.

01
StatusLine Monitor
Real-time context usage per cell. Green → orange (80%) → red (90%).
02
Orchestrator Watch
Checks workers every 2 minutes. At 90%: finish, summarize, fresh worker.
03
Message Bus
Async messaging between sessions. A few dozen tokens instead of thousands for shared conversation.
04
Multi-Model Routing
Workshop (Opus), workers (Sonnet), simple tasks (Haiku). Right model for the right job.
05
Handover Pattern
Summary → new session → continue. No quality loss from full contexts.
06
Doom Loop Prevention
After 2 failed fixes: new session. Confirmation-trap avoidance in CLAUDE.md.
12 New in v0.9.101

Focus Mode

One session, full attention. Focus Mode expands a cell to 2×2 and dims everything else. The Focus Bar shows context usage and font size — one click or Cmd+Shift+F toggles it. Great for long outputs, code reviews, and concentrated work.

Focus Mode — expandierte Session Focus Mode — expandierte Session
13 New in v0.10.0

Three agent CLIs, two tiers

A role is not tied to a CLI. The field “CLI” in the preset editor decides which CLI starts that role’s sessions; “Default CLI” in Settings sets the fallback for every role that names none. Tier 2 means not every Mux capability has been measured there — the preset editor names what is missing when you switch, before the session starts rather than after. Grid, presets, personas, workspaces, notes, voice and the MCP server work under all three. Below it sits the “Modell” field: leave it empty and the CLI decides for itself — otherwise it suggests what it knows, and a full model name outside that list works too.

Claude Code · Tier 1

The default — and not out of habit: the only CLI for which every Mux capability has been measured. Project instructions: CLAUDE.md. Context display, sub-agents, MCP tools, companion memory, role boundaries through a PreToolUse hook. Measured against Claude Code 2.1.284.

Codex CLI · Tier 2

Project instructions: AGENTS.md. Context display, MCP tools, companion memory and role boundaries (PreToolUse hook) all work. What is missing: sub-agents. Install and sign in yourself — the setup wizard does not know it. Measured against codex-cli 0.155.1.

opencode · Tier 2

Project instructions: AGENTS.md. Context display and role boundaries run through plugins instead of hook files, MCP tools and companion memory as usual. What is missing: sub-agents. Install it yourself — and sign in to a provider, or the session sits at its prompt and does nothing. Measured against opencode 1.18.34.

14 New in v0.12.0

Local Cyber Factory — Claude slices, a local model codes

Claude is good at breaking work down and checking it, but every line of code costs quota. The Local Cyber Factory splits the job: an architect in Claude Code cuts a project into small slices and writes an acceptance test for each one. The code comes from a local model via opencode, pointed at any OpenAI-compatible endpoint. Between them sits a runner inside the Mux that is not a model at all — it takes nothing the worker says on trust, it measures. In the first real run with qwen3.8-27b on a DGX Spark, four slices all went green on the first attempt, each in 100 to 180 seconds.

Architect · Claude Code

Slices the work, writes the acceptance tests and accepts green slices. It may not write production code — not a request in the prompt, but a role boundary that rejects the call.

Worker · opencode, local

Gets a fresh session for every attempt and writes the code. It may not touch the acceptance tests. Model, base URL, context size and output limit live in Settings; no key needed.

Runner · no model

Checks up front that the acceptance test really is red and the working tree is clean. Then the gate: test command, checksum and git diff of the protected tests. Green becomes a commit, red a saved patch and a reset. At most two attempts per slice, then it is your turn.

Honest limits

Needs “skipPermissions”, otherwise opencode hangs in its permission prompt — the Mux refuses to start with exactly that reason. At its output limit a local model stops silently, with no error; the runner counts that as a failed attempt. Only what the architect lists as protected is protected. The worker does not write its own unit tests yet. Slices run one after another, not in parallel. macOS only.