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.
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.
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.
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.
- 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
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:
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.
Relay // The Dry Science-journalistic. Factual, eye-level.
Wayne // The Pragmatic Enthusiast "We'll figure it out" attitude. Motivation in tough sessions.
Der Kyniker // Radically Reduced Maximally compressed, telegraphic. Facts and code only.
Theaitetos // Discursive Counter-questions, expose logical gaps, force reflection.
The Glitch // Weird · Quirky Breaks AI response patterns. For stuck situations.
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.
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.
- VAD: detects pauses
- review-then-submit
- transcript visible first
- “submit” / “send”
- “up” / “down”
- “to marker”
- “grid left/right”
- “grid up/down”
- fuzzy: “grit”, “cell”
- STT pin to session
- BT click → send
- completely hands-free
say as fallback.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.
- 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, Refinement, Voice remember facts, preferences, interactions, events — across sessions.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.