{"slug": "seance-human-first-agent-friendly-tiling-terminal-workspaces-rust-gpui", "title": "Seance: Human first, agent friendly. Tiling terminal+ workspaces (Rust+GPUI)", "summary": "Seance, a new multi-pane terminal for Linux that lets humans and AI agents work side by side in shared workspaces, has been released as version 0.9.13 under an MIT license. Built on the GPUI framework, the tool features live multi-pane terminals, agent orchestration, human-in-the-loop controls, and a daemon architecture for persistent sessions.", "body_md": "**A shared space where humans and agents work together, live.**\n\nSeance is a candlelit multi-pane terminal for Linux. Every pane is on the human’s screen. Agents (Claude, Codex, Grok, any CLI) and shells sit beside you — not hidden in a background job. They can see each other, ask you questions, propose commands for your approval, and leave notes on a scratchpad you both flip into. Visibility is the point.\n\nNative app on [GPUI](https://www.gpui.rs/). Sessions live in a long-lived\ndaemon; the window is disposable.\n\n**License:** MIT · **Platform:** Linux (Wayland / X11) · **Status:** 0.9.13\n\nRelease notes: [ CHANGELOG.md](/zackham/seance/blob/master/CHANGELOG.md).\n\nMost agent tooling optimizes for *the agent alone*. Seance optimizes for\n**engagement in a shared space**:\n\n| human | agent |\n|---|---|\n| watches every pane live | runs in a real terminal on that screen |\n| flips notes, steers, takes over a shell | drives siblings via `seance ctl` |\nanswers `ask` toasts; Enter/Esc on ghost commands |\nprefers `propose` over silent risk |\n| triages by status badges + stage strip | reports `planning` / `working` / `needs-human` |\n| inspects pad drawer without flipping | opens file panes so edits appear live |\n\nAttribution is first-class: actions are logged as `human`\n\n/ `agent:<pane>`\n\n/\n`cli`\n\n. The timeline answers “what happened while I was looking elsewhere?”\n\nAny command is a pane. Default summon is a **shell** (so you can always take\nthe keyboard). Point `--command`\n\nat whatever agent CLI you use.\n\n**Live multi-pane terminals**— real PTYs, selection, scrollback; weighted tile grid with drag sashes (n≥2)** Workspaces**— keep circles of work apart; sidebar drag-reorder** Notes on the back of every pane**— shared markdown (`$SEANCE_SCRATCHPAD`\n\n)**Pad drawer**— stage chip / ▤ shows task inject body + pad tail (live-refreshes)** Stage strip**— urgency-sorted roster chips (click focus+pad, double-click zoom)** File panes**— live markdown/text + history/diff when co-editing** Control plane**—`seance ctl`\n\nso any pane (or external script) can spawn, send, wait, harvest**Orchestrator A+**—`--agent`\n\nprofiles, evidence-bound`wait --status done`\n\n,`send --file`\n\n, task envelopes,`harvest`\n\n, event-driven wait, boot-clear**Human-in-the-loop**—`ask`\n\n,`propose`\n\n, seize/release/drive**Phone a pane**— ☎ /`ctl phone`\n\nopens a telegram topic and seeds a**stage card**(workspace, roster, ctl how-to). No participant claim — you drive panes with normal`seance ctl`\n\non this host. Optional needs-human one-liners post to the topic when linked.**Daemon architecture**— upgrade binary without killing the circle (concurrent-upgrade gate)** Event bus**— sequenced, attributable events +`seance ctl watch`\n\n**Capabilities**—`policy open|propose_required|locked`\n\n+ per-principal grants\n\n```\n./scripts/bootstrap-deps.sh    # pinned gpui checkout — see docs/PLAYBOOK.md\ncargo build --release          # first build can take ~10 min\n./target/release/seance\n\nln -sf \"$(pwd)/target/release/seance\" ~/.local/bin/seance   # optional\n```\n\nRequirements: recent Rust, Vulkan-capable drivers, a monospace font\n(default *CaskaydiaMono Nerd Font Mono* — change in `src/term_font.rs`\n\n).\n\n```\nseance ctl skill                 # agent-facing protocol (⚡ arm / paste)\nseance ctl doctor\nseance ctl roster\nseance ctl new --name w --agent claude --wait-ready\nseance ctl send w --file /tmp/task.md\nseance ctl wait w --status done --timeout 600 --cat\nseance ctl harvest w1 w2 w3 --timeout 900\nseance ctl phone w               # telegram topic + stage card (no claim)\n```\n\nMulti-agent live test: `./scripts/agent-collab-test.sh`\n\nThorough smoke: `./scripts/e2e-thorough.sh`\n\nUpgrade load test: `./scripts/upgrade-load-test.sh`\n\n(upgrades live daemon)\n\n| key | action |\n|---|---|\n| ctrl+shift+n | new pane (shell by default) |\n| ctrl+shift+w | banish (kill) active pane |\n| ctrl+shift+s | flip notes ↔ face |\n| ctrl+shift+p | pop pane to its own window |\n| ctrl+shift+k | precanned prompt palette |\n| ctrl+shift+j | fuzzy jump (pane / workspace) |\n| ctrl+shift+z | focus-zoom active pane |\n| ctrl+shift+f | last failed shell command |\n| ctrl+pageup / pagedown | cycle workspaces |\n| ctrl+shift+pageup / pagedown | cycle panes in this workspace |\n| ctrl+shift+v | paste |\n| ctrl+click / middle-click | open OSC-8 / URL |\n| stage chip click | focus + pad drawer |\n| stage chip double-click | zoom |\n| ⚡ | arm agent (`ctl skill` orientation) |\n| ☎ | phone pane (telegram stage card) |\n| ▤ | pad drawer |\n| 💬 | whisper — compose a steer into the pane |\n| sash drag | resize 2-pane ratio or multi-pane weights |\n\n| process | role |\n|---|---|\n`seance daemon` |\nowns PTYs, grids, state; Unix socket |\n`seance` (GUI) |\nshared space UI; reconnects safely |\n`seance ctl …` |\nJSON-lines client for agents, shells, scripts |\n\n**Do not** `pkill -x seance`\n\nto reload — that kills every session. Prefer\n`cargo build --release && seance upgrade`\n\n, or `seance restart-gui`\n\nfor UI-only.\n\n| path | |\n|---|---|\n| state | `~/.local/share/seance/state.json` |\n| scratchpads | `~/.local/share/seance/scratch/<slug>.md` |\n| layout weights | `~/.local/share/seance/layout.json` |\n| events | `~/.local/share/seance/events.jsonl` |\n| socket | `$XDG_RUNTIME_DIR/seance.sock` |\n\nInjected into every pane: `SEANCE_SESSION`\n\n, `SEANCE_WORKSPACE`\n\n,\n`SEANCE_SCRATCHPAD`\n\n, `SEANCE_SOCKET`\n\n. Workspace scoping is automatic inside a\npane — agents only see their circle unless you pass `--all`\n\n.\n\n| doc | |\n|---|---|\n|\n\n[docs/DAEMON.md](/zackham/seance/blob/master/docs/DAEMON.md)[docs/ORCHESTRATION.md](/zackham/seance/blob/master/docs/ORCHESTRATION.md)[docs/SHELL-INTEGRATION.md](/zackham/seance/blob/master/docs/SHELL-INTEGRATION.md)[docs/PERF-TERMINAL.md](/zackham/seance/blob/master/docs/PERF-TERMINAL.md)[CLAUDE.md](/zackham/seance/blob/master/CLAUDE.md)*on*this repoCanonical agent instructions: ** seance ctl skill**.\n\n```\n./scripts/bootstrap-deps.sh\ncargo test\ncargo build --release && seance upgrade\n./scripts/e2e-thorough.sh\n```\n\nPin discipline: `gpui-component`\n\nrev-pinned; zed patched to `deps/zed`\n\nat\n`1a246efd…`\n\n. Bump only as a pair — PLAYBOOK.\n\n- OSC-133 shell-agnostic markers (bash hooks + cmdlog work today; OSC-8 open shipped)\n**Full continuous session replay**(grid recorder + browser player) — filed in vita working doc; not the retired timeline HTML export- GPU glyph atlas (CPU path is multi-pane smooth — explicit non-goal for now)\n- worktree-backed agent rooms, best-of-N\n\nMIT — see [LICENSE](/zackham/seance/blob/master/LICENSE).\n\nUses [zed’s alacritty fork](https://github.com/zed-industries/alacritty)\n(Apache-2.0), [GPUI](https://www.gpui.rs/), and\n[gpui-component](https://github.com/longbridge/gpui-component).", "url": "https://wpnews.pro/news/seance-human-first-agent-friendly-tiling-terminal-workspaces-rust-gpui", "canonical_source": "https://github.com/zackham/seance", "published_at": "2026-07-21 21:27:51+00:00", "updated_at": "2026-07-21 21:52:42.011814+00:00", "lang": "en", "topics": ["developer-tools", "ai-agents", "ai-tools"], "entities": ["Seance", "GPUI", "Claude", "Codex", "Grok", "Linux", "Wayland", "X11"], "alternates": {"html": "https://wpnews.pro/news/seance-human-first-agent-friendly-tiling-terminal-workspaces-rust-gpui", "markdown": "https://wpnews.pro/news/seance-human-first-agent-friendly-tiling-terminal-workspaces-rust-gpui.md", "text": "https://wpnews.pro/news/seance-human-first-agent-friendly-tiling-terminal-workspaces-rust-gpui.txt", "jsonld": "https://wpnews.pro/news/seance-human-first-agent-friendly-tiling-terminal-workspaces-rust-gpui.jsonld"}}