A scrolling terminal multiplexer that tracks your AI coding agents.
Séance is a GTK4 terminal multiplexer for Linux. It auto-detects Claude Code, Codex, Pi, OpenCode, 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. No manual dotfile edits: open an agent in a pane to track it.
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, and Antigravity CLI are auto-tracked out of the box. Agents that do not expose lifecycle events 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.
yay -S seanceTo run it directly without installing:
nix run "git+https://github.com/no1msd/seance?submodules=1"To install it persistently into your profile:
nix profile install "git+https://github.com/no1msd/seance?submodules=1"Both commands compile from source on the first run and cache the result in the Nix store.
Non-NixOS users: EGL won't initialize without a GL wrapper. On Intel/AMD use
nixGL:nix run --impure github:nix-community/nixGL#nixGLIntel -- \ nix run "git+https://github.com/no1msd/seance?submodules=1"On Nvidia use
nix-gl-host, since nixGL's Nvidia wrapper breaks on recent drivers:nix run github:numtide/nix-gl-host -- \ $(nix build --no-link --print-out-paths \ "git+https://github.com/no1msd/seance?submodules=1")/bin/seance
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).
git clone --recursive https://github.com/no1msd/seance.git
cd seance
zig buildThe binary is at zig-out/bin/seance.
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.
