Skip to content

Repository files navigation

Séance logo

Séance

A scrolling terminal multiplexer that tracks your AI coding agents.

Latest release AUR version CI status MIT License Website

Séance demo


Why Séance?

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.

Linux-native, not Electron

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).

Scrolling layout

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.

Agent-agnostic

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.

Scriptable

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.

And also

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.

Installation

Arch Linux (AUR)

yay -S seance

Nix (flake)

To 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

AppImage

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.AppImage

Requires 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/seance

Building from source

Requires 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 build

The binary is at zig-out/bin/seance.

Contributing

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.

License

MIT

Acknowledgements

Releases

Packages

Contributors

Languages