▶ Watch the full demo — tiling, tabs, and modal keys in action
Tessera brings terminal-multiplexer ergonomics — tabs, splits, panes, a command
palette, modal keys — to arbitrary GUI apps by puppeting their windows through
the macOS Accessibility API. It's a menu-bar agent (look for the ▚ glyph); no
Dock icon, no window.
Install
Install via Homebrew:
brew tap pa/tessera brew trust pa/tessera # required once: Homebrew gates 3rd-party taps brew install tessera brew services start tessera # run now + at login
brew trustis a one-time consent step Homebrew requires for any third-party tap — it can't be pre-approved on your behalf. Without itbrew installstops with "Refusing to load formula … from untrusted tap".
Then grant System Settings → Privacy & Security → Accessibility → Tessera (the menu has a one-click shortcut), and keep Stage Manager off (it hides inactive apps' windows and fights every macOS tiling WM).
Note — it's a menu-bar agent, not a Dock/Applications app. After install, look for the
▚glyph in the menu bar (start it withbrew services start tessera); there is intentionally no icon in Launchpad or/Applications.brew install --HEADcompiles from source, so the first install takes a few minutes. It needs the Xcode Command Line Tools (Swift toolchain), which Homebrew already installs — so no extra setup. Prefer a/Applicationsapp or a faster install? See Build from source below.
Highlights
- BSP tiling with configurable padding — split any focused window horizontally/vertically.
- Virtual tabs — independent workspaces; a tab can be a stacked (monocle) stack of windows.
- Modal keys (Zellij-style) —
⌃Ppane ·⌃Ttab ·⌃Rresize, with a live, context-aware hint bar. - Command palette & workspace navigator — fuzzy-find apps, windows, tabs, and panes.
- Floating windows, full-screen zoom, window ↔ tab moves, session restore.
- Organize by app — one keystroke lays every open window out as one tab per app.
- Works with stubborn apps — disables
AXEnhancedUserInterfacearound resizes so Chromium/Electron apps (Brave, VS Code, Slack) actually tile.
Not yet / known limits
Stated up front so nothing surprises you after install:
- Multi-monitor is not supported yet. Tessera manages the main display
only — every layout, tab and pane is computed from the main display's bounds.
On a multi-display setup a second monitor is not tiled independently, and a
window that gets adopted from another display will be pulled onto the main one.
This is the next thing on the roadmap; until then
⌃⌥⌘P(Pause) hands every window straight back to macOS if you need the other screen. - Apps with a minimum window size overflow their pane. A pure-Accessibility
window manager cannot force an app below the size it will accept — only
SIP-disabled approaches can. Tessera anchors such a window at its pane origin
and lets it overflow rather than faking a fit. Manual float (
win Pane mode) is the escape hatch. - Stage Manager must be off — it hides inactive apps' windows and fights any macOS tiling WM. Tessera detects it and warns in the menu bar.
- macOS 15+ and Apple silicon. That's what's verified and what the prebuilt bottle targets; older versions compile but are untested.
- No IPC/CLI yet (
send-cmd,query state --json) — also on the roadmap.
Quick start
Default prefix is ⌃⌥⌘ (Control-Option-Command). A few to get going:
| Shortcut | Action |
|---|---|
⌃⌥⌘R / ⌃⌥⌘D |
Split focused window right / down |
⌃⌥⌘ H J K L |
Focus left / down / up / right |
⌃⌥⌘⇧ H J K L |
Move window between panes |
⌃⌥⌘⇧P / ⌃⌥⌘⇧W |
Command palette / Workspace navigator |
⌃P then r/d, hjkl, w, f, s |
Pane mode: split · focus · float · fullscreen · stack |
⌃T then n, h/l, m |
Tab mode: new · prev/next · move-to-tab-# |
Everything is rebindable in Settings (⌘, or the menu). Full reference on the
documentation site.
Build from source
Prefer not to use Homebrew — or want a real .app in /Applications? Build
it yourself. You only need the Xcode Command Line Tools (which include the
Swift toolchain); install them once with xcode-select --install.
git clone https://github.com/pa/tessera && cd tessera ./scripts/build-app.sh # compile + assemble Tessera.app cp -R .build/Tessera.app /Applications/ # (optional) install to /Applications open /Applications/Tessera.app # launch — look for ▚ in the menu bar
Because the app is built locally (not downloaded), it isn't Gatekeeper- quarantined, so it launches without the "unidentified developer" prompt. Grant Accessibility on first launch as above.
Developing
swift build -c release # compile just the binary swift test # run the TesseraCore unit tests (no app needed)
Test through the .app (not swift run) — macOS keys the Accessibility grant to
a stable bundle identity. See CLAUDE.md for the architecture.
License
MIT.