Package Exports
- @brimveyn/aimux
- @brimveyn/aimux/src/index.tsx
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@brimveyn/aimux) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
aimux
A terminal multiplexer for AI CLIs. Run Claude, Codex, OpenCode, and normal shell tabs side by side in one TUI with persistent sessions, split panes, snippets, themes, and fully configurable keymaps.

Features
- multi-session workflow with a dedicated session picker
- tabs for
claude,codex,opencode, andterminal - split panes with pane focus and resize shortcuts
- persistent sessions with saved layout and tab state
- profile-isolated config, catalogs, daemon sockets, and runtime state
- typed keymap customization through
@brimveyn/aimux-config - snippets catalog and snippet picker
- configurable git pane (embedded in the sidebar or as a standalone pane) and a dedicated git mode for review / stage / commit / push with a split or stacked diff view and shiki-powered highlighting
- built-in help generated from the resolved keymap
- theme picker with 67 built-in themes (shiki catalog + aimux house themes) and a
/filter
Install
bun install -g @brimveyn/aimuxRequires Bun.
Quick Start
Create the default profile and install the typed config package into it:
mkdir -p ~/.config/aimux/default
cd ~/.config/aimux/default
bun init -y
bun add -d @brimveyn/aimux-configCreate ~/.config/aimux/default/aimux.config.ts:
import { defineConfig, actions } from '@brimveyn/aimux-config'
export default defineConfig({
sessionBar: {
position: 'top',
visible: true,
},
keymaps: (k) =>
k.mode('navigation', (m) => m.map('<C-p>', actions.sessionPicker, 'Session picker')),
})Then start the app:
aimuxOn first launch, use the session picker flow to create your first session.
For the full setup path, see docs/getting-started.md.
Core Concepts
Profiles
Profile-managed config and catalogs live under:
~/.config/aimux/<profile>/The active profile is chosen from:
AIMUX_PROFILEAIMUX_RUNTIME_PROFILEdefault
Runtime sockets live in a separate runtime directory that depends on the active
profile. See docs/concepts/profiles.md.
Config vs Runtime State
aimux uses multiple files per profile:
aimux.config.tsoraimux.config.js- typed user configaimux.json- app-managed preferences and runtime stateaimux-sessions.json- session catalog and workspace snapshotsaimux-snippets.json- snippet catalog
See docs/concepts/config-and-state.md.
Sessions
Sessions are named workspaces. A session can have:
- a name
- an optional project directory
- a persisted workspace snapshot
- an order in the session bar and session picker
Keymaps
Keymaps are defined through @brimveyn/aimux-config and merged with shipped
defaults at startup.
Important runtime fact:
- the shipped leader key is
Ctrl+W
Default Everyday Shortcuts
?- open helpi- focus terminalCtrl+Z- leave terminal-input modeCtrl+N- open new-tab modalCtrl+G- open session pickerCtrl+S- open snippet pickerCtrl+T- open theme pickerCtrl+B- toggle sidebarCtrl+D- enter git modeCtrl+W b- toggle session barCtrl+W 1throughCtrl+W 9- switch sessions by index
The help modal reflects the resolved keymap, so it includes your overrides.
CLI
aimux
aimux version
aimux doctor
aimux update
aimux restart-daemon
aimux restart-terminal-managerSee docs/reference/cli.md for behavior details.
Runtime Model
aimux is split into:
- the UI app
- an IPC daemon
- a long-lived terminal manager
This split is what allows daemon restarts and some update paths without dropping every live PTY immediately.
See docs/developer/architecture.md.
Documentation Map
docs/getting-started.mddocs/concepts/config-and-state.mddocs/concepts/profiles.mddocs/guide/sessions.mddocs/guide/keymaps.mddocs/guide/themes.mddocs/reference/cli.mddocs/reference/config-reference.mddocs/reference/runtime-paths.mddocs/guide/git-mode.mddocs/developer/architecture.mddocs/developer/aimux-config-internals.md
Development
git clone https://github.com/BrimVeyn/aimux && cd aimux
bun install
bun run dev
bun run start
bun test
bun run check
bun run lintThe repository dev scripts use AIMUX_PROFILE=dev, so local development does
not collide with a globally installed aimux instance.
References
- Pierre — diffs.com — inspiration for the git-mode diff review experience: the split / stacked layout, progressive context folding, and focusing on the first change rather than the top of the file.
- shiki — syntax highlighting for the git diff view and the source of the bundled theme catalog.
- herdr by @ogulcancelik — the
per-CLI assistant status heuristics (working / waiting-input / idle)
used in the session bar are adapted from herdr's
detect.rsrule tables.
License
MIT © BrimVeyn