HOME

SEANCE

seance lets me summon several claudes and allows them to each haunt the code independently

seance is the desktop app i do my day-to-day development in. i run a lot of claude code and codex sessions in parallel and each task gets its own git worktree, and it doesn't depend on any hosted service.

the repo is private, so these are screenshots of the real app with my work stuff blacked out.

✦✦✦✦
a recreation of seance mid session, with the sidebar of workspaces on the left and the conversation on the right

Figure 1 - a recreation of a real session from nov 6, rebuilt from its transcript

✦ nov 6

the last day i used conductor to build it

✦ 33 of 74

of the project pull requests have been built inside it

✦ 74

merged pull requests since nov 3

as of nov 11, 2026

WHY I BUILT IT

i was running my days in conductor, which is good, and then they had a two hour outage and sold to meta. i jumped from the car as fast as legs allow. seance is the personal version. it drives the claude and codex clis directly with the logins already on my mac and makes no network calls of its own, so it keeps working as long as anthropic and openai are up. it also has a fun ghost theme

one worktree per task

every task gets its own git worktree and branch and they get made in the background while i'm already typing. anything i send before setup finishes waits in a queue. archiving removes the worktree but keeps the branch and saves a copy of my notes, so nothing gets lost

the sidebar with pinned workspaces blacked out and this page's workspace running
Figure 2 - the sidebar with my work repos blacked out

it tells me who's still working

a candle flickers next to anything still running and a sparkle marks anything that finished while i was looking at something else. the dock badge counts the sessions waiting on me, so i can leave a bunch running and only check in when one is

a turn in progress with its tool steps and a bash step still running
Figure 3 - tool calls fold into one line each

model and effort per session

the model and effort and attachments all sit inside the composer and a meter shows how much context is left before claude has to compact the conversation. messages typed while claude is working wait in a queue instead of getting lost

the composer with the model and effort pill, the permission mode and the context meter
Figure 4 - the composer

HOW IT'S BUILT

a rust core runs the agent processes and terminals and sqlite and a preact frontend draws everything else. every flow is tested end to end against a fake claude in a throwaway home folder, and the app screenshots itself in light and dark so i review seance's screenshots inside seance. there's also a dice button that rolls a random theme that still passes its contrast checks. my favorite feature

STACK:

tauri 2 with a rust corepreact + vitexterm.jssqliteclaude and codex over stdio with no sdk

SIZE:

~23k lines of rust and typescript~4k lines of e2e tests

TESTS:

a fake claudethe real app in a throwaway homescreenshots in light and dark

WHAT I'D DO DIFFERENTLY

  • ✦plan how the app updates itself early. seance reinstalls itself while a claude might still be in the middle of a reply, and getting the quit and reopen right took four separate fixes
  • ✦don't share folders with the tool you're replacing. new seance workspaces were landing in conductor's folder until a fix moved them into their own
  • ✦sign the app with a stable certificate from day one. every build of seance gets a throwaway identity, and macOS kept asking for screen recording permission even while it showed as granted, until i removed it and added it back