Skip to content

The Dependency Graph โ€‹

Every notebook is a directed acyclic graph of cells: the engine reads which variables each cell reads and writes, and draws an edge wherever one cell consumes another's value. That graph is what makes the notebook reactive โ€” change a value and only the downstream cells restale.

This page is about seeing and shaping that graph: the DAG pane, manual edges for effects no variable carries, and running part of a notebook on another kernel (regions).

The DAG pane โ€‹

Open the pane with the ๐Ÿ•ธ DAG button in the top bar, or โŒ˜โ‡งG. It's a live map of the notebook's dataflow โ€” one node per cell, an edge wherever a cell reads a value another cell writes โ€” laid out automatically and updated as you edit and run.

  • A node's border mirrors the cell's state โ€” fresh / stale / running / errored โ€” so a wave of gold shows exactly what a change restaled. A dashed border means the cell's result is durably cached.

  • The fill and the corner wedge carry the output type. The fill is what ๐Ÿ”ฅ heat and ๐Ÿ–ง region mode repurpose (region wins when both are on), so the state border stays readable in every mode.

  • โš™ display โ€” show setup cells (using/import and their edges) and show isolated cells (cells with no dataflow edges) are off by default, keeping the graph to the cells that actually pass data.

  • Navigating โ€” hovering a node lights up its lineage: amber for everything upstream, teal for everything downstream, bold for its direct neighbours. Clicking opens the node's detail card, โ‡ง-clicking jumps to that cell in the notebook. Scroll zooms and drag pans. The ? button in the pane header lists the same gestures.

  • โ‡… direction โ€” layout orientation; auto follows the pane shape (a tall pane lays out top-down).

  • โ—จ dock and the grip re-side and resize the pane.

  • ๐Ÿ”ฅ heat map โ€” color cells by accumulated compute time (hotter = more expensive), to find the bottleneck in a pipeline.

  • ๐Ÿ–ง region map โ€” color cells by where they run (see Regions).

Manual edges โ€‹

The engine infers edges from the variables a cell reads and writes. Some dependencies aren't carried by any variable, though โ€” a cell that writes a file, seeds a database table, or mutates global state that a later cell reads back. Assert those yourself so the engine keeps the two in order:

  • needs=id1,id2 header tag โ€” set it with the ๐Ÿท tag editor or directly in the cell header. It names the earlier code cells this one depends on.

  • mutates=name1,name2 header tag โ€” declare that this cell changes those existing values in place, when it does so through a call or an alias the analyzer cannot follow (update!(df)). The cell then counts as a writer of those names, so later readers chain off it and restale, and its cached result snapshots the post-mutation value. Declare it at a region boundary in particular: an undeclared hidden mutation there forks the two copies rather than just going stale.

  • ๐Ÿ”— link mode in the DAG pane โ€” click it, then click two cells to draw a manual edge (shown dashed); click a dashed edge to remove it.

Manual edges are first-class: they drive staleness, run order, and cache keys exactly like inferred ones. A needs= that names no earlier code cell (deleted, moved below, or a markdown cell) is inert and flagged with a ๐Ÿ”—โš  badge on the cell.

Regions โ€” run cells on another kernel โ€‹

When a notebook is split into regions, some cells run on a second kernel (usually on another host) while the rest stay local. The DAG pane is where you see and steer that split; the region model itself โ€” defining regions, declaring destinations, how boundary values cross โ€” is in Regions.

Steering regions from the DAG โ€‹

Turn on the ๐Ÿ–ง region map and the graph reorganizes into side-by-side zones โ€” ๐Ÿ’ป local and one per region โ€” with each node tinted by where it runs and the cross-zone edges drawn as the boundary hand-offs (labeled by transport: direct / ssh-bridge / relay). Drag a node between zones to reassign it. A node wears a ๐Ÿ–ง badge when its last run executed on a region kernel, and the legend along the bottom names the hosts and hosts the region toolbar.

Click any node for its detail card. For a cell whose last run was remote it shows the provenance: a last ran ๐Ÿ–ง host chip, a moved โ‡„ N MB chip for the inputs that had to cross the boundary, a per-transfer breakdown (size ยท route ยท throughput), and a Run on picker to reassign the cell to a different kernel in place.

Each region zone header carries a live status dot โ€” hover it for the region's worker card: connection status, host, transport, and CPU / RSS / running-cell telemetry, with ๐Ÿชต Log and โœ• Reap actions.

The region toolbar โ€‹

The region-map legend hosts three tools for the cross-region plumbing.

โ‡„ peer routing plan โ€” how each region pair is wired: a resolved direct or ssh-bridge route worker-to-worker, or a relay through the hub, with per-host grants and host-key pins. โ†ป recalculate probes every pair live so throughput and route are measured now rather than on the next real transfer.

๐Ÿ“Š transfers โ€” a dashboard of every boundary move: total moved, throughput over time, a region-to-region grid, and the rate distribution โ€” to see where the data actually flows and how fast.

โ‡„ connect โ€” the first time two regions on different hosts need a direct worker-to-worker link, Slate asks before exchanging keys (decline and transfers still work โ€” they just relay through the hub). The dialog spells out exactly what it installs โ€” an on-host ed25519 key, a locked-down single-port grant, a host-key pin โ€” then arms the bridge with live progress.

โ‡„ disconnect is the inverse, and revokes this notebook's mesh everywhere it was installed: the on-host keys, the scoped grants, and the host-key pins. Cross-region transfers fall back to relaying through the hub, and โ‡„ connect re-installs it whenever you want it back.

While a value crosses the boundary, the consuming cell shows a live progress bar (โ‡„ <name>: N/M MB โ† host) โ€” driven on its own data channel, so a big move never looks like a hang.

See also โ€‹

  • Reactive Cells โ€” the reactive model the graph drives, and the ๐Ÿ”— upstream focus.

  • Regions โ€” running part of a notebook on a second kernel, steered from the DAG.

  • Remotes & Pools โ€” hosts, transports, and warm pools.

  • Cell Tags & Caching โ€” the needs= and region= tags in the header.