Run the notebook app in dev mode with hot reload. Use when starting the app, setting up Vite, or debugging frontend development workflow.
| Task | Command |
|---|---|
| Hot reload dev | cargo xtask notebook |
| Standalone Vite | cargo xtask vite |
| Attach to Vite | cargo xtask notebook --attach |
| Full debug build | cargo xtask build |
| Rust-only rebuild | cargo xtask build --rust-only |
| Run bundled binary | cargo xtask run |
| One-shot setup | cargo xtask dev |
| Lint/format | cargo xtask lint --fix |
| nteract-dev MCP server | cargo xtask run-mcp |
cargo xtask notebookBest for UI/React development. Uses Vite dev server on port 5174.
cargo xtask notebook
Changes to React components hot-reload instantly. The Tauri window loads from localhost:5174 instead of bundled assets.
Requires a dev daemon running. Start one in another terminal first:
# Terminal 1: Start dev daemon
cargo xtask dev-daemon
# Terminal 2: Start the app
cargo xtask notebook
cargo xtask vite + notebook --attach — Multi-Window TestingWhen testing multiple notebook windows, closing the first Tauri window kills Vite. To avoid this:
# Terminal 1: Start Vite standalone (stays running)
cargo xtask vite
# Terminal 2+: Attach Tauri to existing Vite
cargo xtask notebook --attach
Close and reopen Tauri windows without losing Vite. Useful for:
cargo xtask build + run — Debug BuildBuilds a debug binary with frontend assets bundled in. No Vite dev server needed.
cargo xtask build # Full build (frontend + rust)
cargo xtask run # Run the bundled binary
cargo xtask run path/to/notebook.ipynb
Emits JavaScript source maps for native webview devtools (including inline maps for iframe bundle).
For fast Rust-only iteration after initial build:
cargo xtask build --rust-only # Skip frontend rebuild
cargo xtask run
The notebook app connects to a background daemon. In dev mode, each worktree gets its own isolated daemon.
# Terminal 1: Start dev daemon (stays running)
cargo xtask dev-daemon
# Terminal 2: Run the notebook app
cargo xtask notebook # Hot-reload mode
cargo xtask dev # Installs deps + builds + starts daemon + launches app
cargo xtask dev --skip-install --skip-build # Fast repeat
Conductor users: Dev mode is automatic. CONDUCTOR_WORKSPACE_PATH is translated to RUNTIMED_WORKSPACE_PATH by xtask commands.
Non-Conductor users: Set RUNTIMED_DEV=1 explicitly:
RUNTIMED_DEV=1 cargo xtask dev-daemon # Terminal 1
RUNTIMED_DEV=1 cargo xtask notebook # Terminal 2
./target/debug/runt daemon status # Check daemon state
./target/debug/runt daemon logs -f # Tail logs
./target/debug/runt ps # List running kernels
./target/debug/runt notebooks # List open notebooks
cargo xtask run-mcp
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.
For editor config:
cargo xtask run-mcp --print-config
Use nteract-dev as the repo-local MCP server name so it stays distinct from any global/system nteract entry.
.zed/settings.json (gitignored):
{
"context_servers": {
"nteract-dev": {
"command": "cargo",
"args": ["run", "-p", "mcp-supervisor"],
"env": { "RUNTIMED_DEV": "1" }
}
}
}
# Terminal 1: start dev daemon
cargo xtask dev-daemon
# Terminal 2: build bindings + launch MCP server
cargo xtask dev-mcp
| Tool | Purpose |
|---|---|
up | Idempotent bring-up. Sweeps zombie Vite processes, ensures daemon + child healthy. Args: vite=true (start Vite, health-probed), rebuild=true (rebuild daemon + bindings first), mode="debug"|"release" |
down | Stop the managed Vite dev server. daemon=true also stops daemon. |
status | Read-only report of child, daemon, managed processes, build mode |
logs | Tail daemon log file |
vite_logs | Tail Vite dev server log file |
Watches python/nteract/src/, python/runtimed/src/, crates/runtimed-py/src/, crates/runtimed/src/:
maturin develop runs first, then child restartsThe repo includes .zed/tasks.json with pre-configured tasks (use cmd-shift-t):
| Task | What it does |
|---|---|
| Dev Daemon | cargo xtask dev-daemon with dev env vars |
| Dev App | cargo xtask notebook with dev env vars and auto Vite port |
| Daemon Status | ./target/debug/runt daemon status |
| Daemon Logs | ./target/debug/runt daemon logs -f |
| Format | cargo xtask lint --fix (Rust + JS/TS via vp + Python ruff) |
| Setup | pnpm install && cargo xtask build |
Daemon code changes not taking effect:
cargo xtask dev-daemoncargo xtask install-nightly./target/debug/runt daemon statusApp says "Dev daemon not running":
cargo xtask dev-daemon in another terminalPort conflicts with Vite:
cargo xtask build + run to avoid Vite entirelyCONDUCTOR_PORT for automatic port assignmentFrontend changes not showing:
cargo xtask notebook: should hot-reload automaticallycargo xtask run: need to rebuild (cargo xtask build)--rust-only: frontend is NOT rebuilt (that's the point)