A scrolling terminal multiplexer that tracks your AI coding agents.
Séance-fork is an experimental fork of the Séance scrolling terminal multiplexer that tracks your AI coding agents, with additional features and enhancements:
- 🤖 OpenCode coding agent support
- 🤖 Kilo CLI coding agent support
- 🤖 Xioami MiMo Code coding agent support
- 🤖 Mistral Vibe coding agent support
- 🤖 Hermes Agent harness support
Séance is a GTK4 terminal multiplexer for Linux. It auto-detects Claude Code, Codex, Pi, OpenCode, Kilo Code, MiMo Code, Vibe, Hermes Agent, Poolside Agent CLI, and Antigravity CLI sessions running inside it and tracks their status (working, waiting for permission, idle) live in the sidebar. Permission requests and task completions are surfaced as desktop notifications with unread tracking. Zero configuration, no dotfile edits: open an agent in a pane and it is tracked.
GTK4 and libadwaita, so it integrates with the rest of GNOME and with tiling WM setups. X11 and Wayland. Blur and transparency on both. GPU-accelerated terminal rendering via libghostty (Ghostty used as a library).
Panes are arranged in a horizontal strip that you scroll through, borrowing the layout model from niri. Fits long, linear agent sessions better than a tiling grid, and lines up naturally with scrolling tiling WMs.
Claude Code, Codex, Pi, OpenCode, Kilo CLI, MiMo Code, Vibe, Hermes Agent, Poolside, and Antigravity CLI are auto-tracked out of the box. Adding support for another agent is a hook config PR rather than a rewrite. Agents that do not speak hooks still get all the plain multiplexer features.
Codex requires a one-time review of Séance's hooks via /hooks. Approval persists
across panes and restarts; changes to the hook definitions require a new review.
Séance adds its hooks for the current invocation and keeps your Codex home,
existing hooks, authentication, and history in place.
OpenCode's bundled plugin is added for each local launch through its inline
configuration. Existing configuration, plugins, authentication, and history stay
in place. Resumed sessions and subagents contribute to the pane's status;
permission requests and questions show Needs input until answered.
Remote opencode attach sessions and --pure launches are not tracked.
Disable tracking in Settings → Integrations → OpenCode Integration, or set
opencode-hooks = false under [behavior] in Séance's configuration, then open a new pane.
Antigravity CLI (agy) is tracked through its status-line callback.
On first launch inside Séance, the wrapper adds the callback to
~/.gemini/antigravity-cli/settings.json, keeping an original backup at
settings.json.seance-backup. Existing settings and custom status-line output
are preserved; the default status line stays visible. The callback is inert
outside tracked launches and resolves Séance through the current wrapper, so it
also works with AppImages.
Actual tool confirmation dialogs show Needs input and trigger one notification
per transition. Returning to idle triggers Antigravity is idle, including
after cancellation or denial; this does not assert that the task succeeded.
Reported background tasks keep the pane working until they finish. Tracking is
limited to the active TUI's reported state: headless/print mode, unreported
background permission requests, and non-tool input dialogs are not covered.
An explicitly disabled status-line callback is respected and disables tracking.
Disable the integration in Settings → Integrations → Antigravity CLI Integration,
or set antigravity-hooks = false under [behavior], then open a new pane.
Every action is available through seance ctl, which talks to the running instance over a Unix domain socket. Scripts and AI agents can create workspaces, open panes, send input, read terminal output, and query the full session hierarchy. All commands support JSON output.
A bundled skill file provides AI agents with a complete reference for the seance ctl API, so they can use the multiplexer on their own.
Workspaces, session persistence across restarts, tabs within columns, a command palette, focus-follows-mouse, and no telemetry. Press F11 to toggle fullscreen, or choose Toggle Fullscreen in the command palette. The header bar hides in fullscreen and returns when you exit.
Download the latest seance-*-x86_64.AppImage from GitHub Releases, make it executable, and run it:
chmod +x seance-*-x86_64.AppImage
./seance-*-x86_64.AppImageRequires libfuse2 on the host. Uses the host's libGL/libEGL, so Mesa or proprietary GPU drivers must be installed.
To use seance ctl from your shell, move the AppImage onto your PATH:
mv seance-*-x86_64.AppImage ~/.local/bin/seanceRequires Zig 0.16.x, GTK4, libadwaita, OpenGL 4.3+, and Linux (X11 or Wayland).
Install build dependencies (Ubuntu/Debian):
sudo apt install pkg-config libgtk-4-dev libadwaita-1-dev libnotify-dev libcanberra-dev inotify-toolsBuild:
git clone --recursive https://github.com/scross01/seance-fork.git
cd seance
zig buildThe binary is at zig-out/bin/seance.
If the ghostty dependency is missing:
git submodule update --init --recursiveClaude Code, Codex, Pi, OpenCode, Kilo Code, MiMo Code, Mistral Vibe, and Antigravity CLI are all tracked automatically — no setup required.
- Claude Code, Codex, Pi: Séance installs wrapper scripts that intercept calls to these agents and inject lifecycle hooks transparently.
- OpenCode: On first launch, Séance auto-installs a plugin to
~/.config/opencode/plugins/if the OpenCode config directory exists. - Kilo Code: On first launch, Séance auto-installs a plugin to
~/.config/kilo/plugins/if the Kilo config directory exists. - MiMo Code: On first launch, Séance auto-installs a plugin to the MiMo Code config directory if it exists.
- Mistral Vibe: Tracked through TOML config hooks appended to
~/.vibe/hooks.tomlby the wrapper on first launch. - Hermes Agent: Tracked through a Python plugin auto-installed to
~/.hermes/plugins/seance/. - Antigravity CLI: Tracked through its status-line callback, added by the wrapper on first launch. See above for details.
- Poolside, Codebuff, Freebuff: Requires
inotify-toolsfor real-time agent status monitoring.
To disable OpenCode integration: Settings → Terminal → OpenCode Integration, or set opencode-hooks = false in ~/.config/seance/config.toml.
To disable Kilo Code integration: Settings → Terminal → Kilo Code Integration, or set kilo-hooks = false in ~/.config/seance/config.toml.
Bug reports, feature requests, and pull requests are welcome. See CONTRIBUTING.md for how to file issues, build locally, and add support for new agents. Questions and show-and-tell go in Discussions. Security issues should be reported privately, see SECURITY.md.
