Skip to content
forked from no1msd/seance
 
 

Repository files navigation

Séance-fork

Séance logo

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:


Séance demo

Why Séance?

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.

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

Séance supports both OpenCode majors: it detects the installed version with opencode --version and adds the matching bundled plugin (V1 or V2) 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. V2 launches run opencode --standalone (a private server per launch) so each pane's status stays attributed to its own surface; set SEANCE_OPENCODE_V2_STANDALONE=0 to opt out. Remote opencode attach sessions, explicit --server targets, 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, a hamburger command menu with shortcut hints, 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

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.0 (pinned), 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 libcanberra-dev inotify-tools

Build:

git clone --recursive https://github.com/scross01/seance-fork.git
cd seance-fork
make build
make run

make build installs icons, shell integration, and themes into AppDir/usr/; make run builds and launches from there. Do not use zig-out/bin/seance directly — it lacks installed assets.

If the ghostty dependency is missing:

git submodule update --init --recursive

Agent Integrations

Claude 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. Séance detects the installed OpenCode major version with opencode --version and installs the matching plugin for V1 or V2 (V1 on any detection failure).
  • 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.toml by 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-tools for real-time agent status monitoring.

To disable OpenCode integration: Settings → Integrations → OpenCode Integration, or set opencode-hooks = false in ~/.config/seance/config.toml.

To disable Kilo Code integration: Settings → Integrations → Kilo Code Integration, or set kilo-hooks = false in ~/.config/seance/config.toml.

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

Contributors

Languages