Threads Canvas
Threads is a spatial canvas, one per project, where chats, notes, terminals, and agent sessions live as connected nodes. Instead of stacking every conversation in a tab, you lay them out on a board and draw edges between them. The wiring is the context: anything connected to a chat node is addressable from that chat. Open the canvas from the threads toggle in the sidebar. Each project keeps its own canvas.Node kinds
Edges feed context
An edge between two nodes is a context wire. When file, image, media, or text nodes are wired into a chat node, their content becomes addressable from that chat — the model pulls it in throughread_canvas_node instead of you pasting it by hand.
While a node is generating, its edges animate, so you can see at a glance what is feeding what.
Layout
Two ways to arrange the graph:- Tidy — one click runs a
cytoscape-fcoseforce-directed pass in a worker, off the UI thread. - Manual drag — place any node wherever you like; the canvas never snaps back.
Context menu
Right-click the canvas or a selection to:- Convert selection to chat — fold the highlighted nodes into a chat node that treats them as context
- Add nodes — drop new chat, text, agent, terminal, or wired-in nodes at the pointer
Persistence
The whole graph is stored in the Tempest SQLite database across four tables:threads (one per project canvas), thread_nodes, thread_edges, and thread_messages. Quit and reopen — the canvas comes back exactly as you left it.
Message Queue and sessions
Canvas-placed agent and terminal sessions are ordinary Tempest sessions — they simply carry the placement"canvas". The Message Queue treats them identically: enqueued prompts drain in order whether the session lives on the canvas or the tab bar.
Canvas vs tab bar
A common rhythm: keep long agent runs in tabs, and use the canvas for planning — a chat node, a couple of notes, and wired-in files that keep the context connected.