You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: sync agent + contributor docs to current architecture (#1846)
* docs(agents): refresh CLAUDE.md/AGENTS.md and skills
- Crate table now lists 21 crates (was 17); added runt-mcp-proxy,
nteract-predicate, sift-wasm, mcpb-runt; renamed runt → runt-cli to
match the actual package name.
- MCP tool table corrected: 26 tools (was 27), launch_app replaces
show_notebook, clear_outputs is a CRUD tool, join_notebook flagged as
backward-compat alias.
- Replaced "supervisor" terminology in user-facing docs with
nteract-dev (the registered MCP server name) or the specific tool
names (up/down/status/logs/vite_logs). The literal mcp-supervisor
crate name is retained where it refers to the actual package.
* docs(codex): drop "supervisor" terminology in codex skill references
* docs: socket-first daemon discovery, blob-ref save scope, Sift framing
- contributing/runtimed.md, contributing/protocol.md: clarify that
daemon.json is a legacy fallback for pre-GetDaemonInfo daemons; the
socket is the source of truth. Add frame type 0x06 PoolStateSync to
the protocol frame table.
- contributing/architecture.md: nuance the isBinaryMime story — the TS
looksLikeBinaryMime() helper is a cold-start safety net, not a
parallel implementation. Document that .ipynb save inlines most
outputs as base64 (vanilla Jupyter compat) and only externalizes a
small whitelist (parquet) as BLOB_REF_MIME entries.
- contributing/frontend-architecture.md: note Lezer parsers replaced
Prism for static highlighting in #1742.
- contributing/releasing.md: add Local Validation section pointing at
cargo xtask build-app / build-dmg; do not surface install-daemon
here (release flow is via the auto-updater, not manual installs).
- docs/python-bindings.md: position runt mcp as canonical MCP path so
agents do not assume Python is required.
- docs/sharing.md, docs/environments.md: explain HMAC-SHA256 trust
signing and key location, document the new ipynb save shape (mostly
base64, parquet externalized for the Sift dataframe viewer).
- Brand correction: dataframe viewer is "Sift" / nteract dataframe
viewer; the nteract/dx Python package is the helper that produces
parquet payloads consumed by it.
Copy file name to clipboardExpand all lines: .claude/rules/mcp-servers.md
+8-10Lines changed: 8 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,34 +10,32 @@ Three nteract MCP servers may be available. Always use the right one:
10
10
11
11
| Server | What it is | When to use |
12
12
|--------|-----------|-------------|
13
-
|`nteract-dev`| Dev MCP server with supervisor tools (`up`, `down`, `status`, `logs`, `vite_logs`). Manages a per-worktree dev daemon, hot-reloads on code changes. |**Default for all development work.** Use this for notebook interaction, daemon lifecycle, building, and testing. |
13
+
|`nteract-dev`| Dev MCP server. Adds dev tools (`up`, `down`, `status`, `logs`, `vite_logs`) on top of the proxied `runt mcp` toolset. Manages a per-worktree dev daemon, hot-reloads on code changes. |**Default for all development work.** Use this for notebook interaction, daemon lifecycle, building, and testing. |
14
14
|`nteract-nightly`| System-installed nightly release daemon | Diagnostics and inspection of the installed nightly app. Do NOT use for development. |
15
15
|`nteract`| System-installed stable release daemon (nteract.app) | Diagnostics and inspection of the installed stable app. Do NOT use for development. |
16
16
17
17
**Rules:**
18
18
19
-
1.**Always prefer `nteract-dev`** (`mcp__nteract-dev__*` tools) for development work in this repo. It connects to the per-worktree dev daemon and includes supervisor tools for managing the build/daemon lifecycle.
19
+
1.**Always prefer `nteract-dev`** (`mcp__nteract-dev__*` tools) for development work in this repo. It connects to the per-worktree dev daemon and includes the dev tools for managing the build/daemon lifecycle.
20
20
2.**Never use `nteract-nightly` or `nteract` for development.** They connect to system-installed daemons and will not reflect your source changes.
21
21
3. If `nteract-dev` tools are not available, fall back to `cargo xtask` commands — not to the system MCP servers.
22
-
4. The supervisor tools are part of the `nteract-dev` server. They manage the dev daemon and build pipeline — prefer them over manual terminal commands.
22
+
4. The dev tools (`up`, `down`, `status`, `logs`, `vite_logs`) live on the `nteract-dev` server. They manage the dev daemon and build pipeline — prefer them over manual terminal commands.
23
23
24
-
## Supervisor tool surface (nteract-dev)
24
+
## nteract-dev tool surface
25
25
26
-
Consolidated around two verbs plus three read-only tools:
26
+
Two verbs plus three read-only tools, layered on top of the proxied `runt mcp` toolset:
27
27
28
28
| Tool | Purpose |
29
29
|------|---------|
30
30
|`up`| Idempotent "bring the dev environment to a working state." Sweeps zombie Vite processes, ensures the daemon is running, ensures the MCP child is healthy. Optional args: `vite=true` to also start Vite, `rebuild=true` to rebuild daemon + Python bindings first, `mode='debug'\|'release'` to switch build mode. Safe to call repeatedly — this is the first thing to reach for when things feel off. |
31
31
|`down`| Stop the managed Vite dev server. Leaves the daemon running by default (launchd / the installed app may own it). Pass `daemon=true` to also stop the managed daemon process. |
32
-
|`status`| Read-only report of supervisor, child, daemon, and managed-process state. |
32
+
|`status`| Read-only report of `nteract-dev`, child, daemon, and managed-process state. |
33
33
|`logs`| Tail the daemon log. Arg: `lines` (default 50). |
34
34
|`vite_logs`| Tail the Vite dev server log. Arg: `lines` (default 50). |
35
35
36
-
The older `supervisor_*` names (`supervisor_status`, `supervisor_restart`, `supervisor_rebuild`, `supervisor_logs`, `supervisor_vite_logs`, `supervisor_start_vite`, `supervisor_stop`, `supervisor_set_mode`) still work as aliases. Prefer the new names.
37
-
38
36
## MCP Server
39
37
40
-
The supervisor always uses`runt mcp` (Rust-native, direct Automerge access, no Python overhead). It auto-builds `runt-cli` on startup and watches `crates/runt-mcp/src/` for hot reload. For the installed app, `runt mcp` ships as a sidecar binary — no Python or uv required.
38
+
`nteract-dev` proxies`runt mcp` (Rust-native, direct Automerge access, no Python overhead). It auto-builds `runt-cli` on startup and watches `crates/runt-mcp/src/` for hot reload. For the installed app, `runt mcp` ships as a sidecar binary — no Python or uv required.
41
39
42
40
## System daemon CLI (`runt` / `runt-nightly`)
43
41
@@ -62,7 +60,7 @@ For the dev daemon, use `./target/debug/runt` directly (no `env -i` needed — d
62
60
After setting up direnv, verify that the three MCP servers connect to the correct daemons:
63
61
64
62
```bash
65
-
# 1. Check nteract-dev supervisor status (should show worktrees/ socket)
63
+
# 1. Check nteract-dev status (should show worktrees/ socket)
Copy file name to clipboardExpand all lines: .claude/skills/diagnostics/SKILL.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ description: Collect and analyze nteract diagnostic logs. Use when debugging iss
7
7
8
8
## Why `env -i`?
9
9
10
-
In the dev environment, `RUNTIMED_DEV` and `RUNTIMED_WORKSPACE_PATH` are set (by direnv, xtask, or the supervisor). These cause `runt` to target the per-worktree dev daemon. System diagnostics need to target the **system-installed** daemon, so we use `env -i` to strip all env vars except `PATH` and `HOME`.
10
+
In the dev environment, `RUNTIMED_DEV` and `RUNTIMED_WORKSPACE_PATH` are set (by direnv, xtask, or `nteract-dev`). These cause `runt` to target the per-worktree dev daemon. System diagnostics need to target the **system-installed** daemon, so we use `env -i` to strip all env vars except `PATH` and `HOME`.
11
11
12
12
The repo-local `bin/runt` wrapper is first in `$PATH` — it runs `./target/debug/runt`, which is the dev build. That's fine for quick checks, but for true system diagnostics, call the system binary by its channel-specific name (`runt` for stable, `runt-nightly` for nightly) via `env -i` so dev env vars don't leak through.
Starts the dev daemon, launches the dev-only `nteract-dev` supervisor, spawns a child `runt mcp`, proxies notebook tool calls, watches for file changes, and hot-reloads. Python bindings are rebuilt when the watched Rust paths require it.
127
+
Starts the dev daemon, launches `nteract-dev` (the dev-only MCP server for this source tree), spawns a child `runt mcp`, proxies notebook tool calls, watches for file changes, and hot-reloads. Python bindings are rebuilt when the watched Rust paths require it.
128
128
129
129
For editor config:
130
130
@@ -150,7 +150,7 @@ Use `nteract-dev` as the repo-local MCP server name so it stays distinct from an
150
150
}
151
151
```
152
152
153
-
### Direct Mode (no supervisor)
153
+
### Direct Mode (no proxy)
154
154
155
155
```bash
156
156
# Terminal 1: start dev daemon
@@ -160,7 +160,7 @@ cargo xtask dev-daemon
160
160
cargo xtask dev-mcp
161
161
```
162
162
163
-
### Supervisor Tools
163
+
### nteract-dev Tools
164
164
165
165
| Tool | Purpose |
166
166
|------|---------|
@@ -170,8 +170,6 @@ cargo xtask dev-mcp
170
170
|`logs`| Tail daemon log file |
171
171
|`vite_logs`| Tail Vite dev server log file |
172
172
173
-
The older `supervisor_*` names (`supervisor_status`, `supervisor_restart`, `supervisor_rebuild`, `supervisor_logs`, `supervisor_vite_logs`, `supervisor_start_vite`, `supervisor_stop`, `supervisor_set_mode`) still work as aliases.
Copy file name to clipboardExpand all lines: .codex/skills/nteract-daemon-dev/SKILL.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
2
name: nteract-daemon-dev
3
-
description: Work with the per-worktree runtimed daemon in the nteract desktop repo. Use when changing `crates/runtimed/**`, debugging daemon-backed notebook behavior, deriving `RUNTIMED_SOCKET_PATH`, checking daemon logs/status, running daemon-backed tests or reviews, or deciding whether to use `supervisor_*` tools versus manual `cargo xtask dev-daemon` commands.
3
+
description: Work with the per-worktree runtimed daemon in the nteract desktop repo. Use when changing `crates/runtimed/**`, debugging daemon-backed notebook behavior, deriving `RUNTIMED_SOCKET_PATH`, checking daemon logs/status, running daemon-backed tests or reviews, or deciding whether to use the `nteract-dev` MCP tools (`up`/`down`/`status`/`logs`/`vite_logs`) versus manual `cargo xtask dev-daemon` commands.
4
4
---
5
5
6
6
# nteract Daemon Dev
@@ -9,7 +9,7 @@ Use this skill to avoid talking to the wrong daemon and to keep daemon-backed ve
9
9
10
10
## Workflow
11
11
12
-
1. Prefer `supervisor_*`tools when they are available.
12
+
1. Prefer the `nteract-dev` MCP tools (`up`, `down`, `status`, `logs`, `vite_logs`) when they are available.
13
13
2. Decide whether you are validating the default nightly source flow or an explicit stable flow. Source builds are nightly unless `RUNT_BUILD_CHANNEL=stable`.
14
14
3. Otherwise, treat the worktree daemon as mandatory for daemon-backed verification.
15
15
4. Export `RUNTIMED_DEV=1` and `RUNTIMED_WORKSPACE_PATH="$(pwd)"` before any manual `runt` command.
@@ -27,6 +27,6 @@ Use this skill to avoid talking to the wrong daemon and to keep daemon-backed ve
27
27
28
28
## Quick Start
29
29
30
-
If you have supervisor tools, use them for daemon lifecycle and logs.
30
+
If you have `nteract-dev` tools, use them for daemon lifecycle and logs.
31
31
32
32
If you do not, read [references/daemon-workflows.md](references/daemon-workflows.md) and follow the manual command sequence there.
Copy file name to clipboardExpand all lines: .codex/skills/nteract-daemon-dev/references/daemon-workflows.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -58,17 +58,17 @@ Start or restart the worktree daemon when:
58
58
- You are verifying MCP server behavior against local Rust changes
59
59
- You are comparing behavior across worktrees and need isolation
60
60
61
-
## Prefer supervisor tools when available
61
+
## Prefer nteract-dev tools when available
62
62
63
-
If the nteract-dev MCP supervisor is available, prefer:
63
+
If `nteract-dev` is available, prefer:
64
64
65
65
-`up` — idempotent "bring the dev environment up". Ensures daemon + child are healthy. Args: `vite=true`, `rebuild=true`, `mode="debug"|"release"`
66
66
-`down` — stop the managed Vite dev server. `daemon=true` also stops the daemon
67
67
-`status` — read-only report
68
68
-`logs` — tail daemon logs
69
69
-`vite_logs` — tail Vite dev server logs when you need the Vite side of a hot-reload session
70
70
71
-
These avoid manual env-var mistakes. The older `supervisor_*` names (`supervisor_restart`, `supervisor_rebuild`, `supervisor_start_vite`, `supervisor_stop`, `supervisor_set_mode`, `supervisor_status`, `supervisor_logs`, `supervisor_vite_logs`) still work as aliases.
Copy file name to clipboardExpand all lines: .codex/skills/nteract-python-bindings/references/bindings-workflows.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -58,7 +58,7 @@ The MCP server is `runt mcp` (Rust, shipped with the desktop app). For developme
58
58
uv run nteract
59
59
```
60
60
61
-
If the MCP supervisor is available, prefer `cargo xtask run-mcp` or the supervisor tools instead of a manual launch.
61
+
If `nteract-dev`is available, prefer `cargo xtask run-mcp` or its tools (`up`, `down`, `status`, `logs`, `vite_logs`) instead of a manual launch.
62
62
63
63
Use `default_socket_path()` for current-process resolution. Use `socket_path_for_channel("stable"|"nightly")` only when you need an explicit channel path that ignores `RUNTIMED_SOCKET_PATH`.
0 commit comments