Skip to content

nteract/desktop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

717 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nteract

A fast, modern toolkit for Jupyter notebooks. Native desktop app with instant startup, realtime sync across windows and agents, and intelligent environment management.

Built on runtimelib and jupyter-protocol.

Install

Download the latest release from GitHub Releases.

The desktop app bundles everything — runt CLI, runtimed daemon, and sidecar.

The Python bindings are available on PyPI:

pip install runtimed

What's in here

Component Description
nteract Desktop notebook editor (Tauri + React)
runtimed Background daemon — environment pools, notebook sync, kernel execution
runt CLI for managing kernels, notebooks, and the daemon
sidecar Viewer for Jupyter kernel outputs
runtimed (PyPI) Python bindings for the daemon

MCP Server

For AI agent integration with Jupyter notebooks, see the nteract MCP server.

Usage

# Open a notebook
runt notebook path/to/notebook.ipynb

# Interactive console
runt console

# Daemon management
runt daemon status
runt daemon logs -f

List open notebooks with kernel and environment info:

$ runt notebooks
╭──────────────────────────────────────┬────────┬──────────────┬────────┬───────╮
│ NOTEBOOK                             │ KERNEL │ ENV          │ STATUS │ PEERS │
├──────────────────────────────────────┼────────┼──────────────┼────────┼───────┤
│ ~/notebooks/blobstore.ipynb          │ python │ uv:inline    │ idle   │ 1     │
│ d4c441d3-d862-4ab0-afe6-ff9145cc2f3d │ python │ uv:prewarmed │ idle   │ 1     │
╰──────────────────────────────────────┴────────┴──────────────┴────────┴───────╯

Project structure

nteract/desktop
├── src/                    # Shared UI code (React components, hooks, utilities)
│   ├── components/
│   │   ├── ui/            # shadcn primitives (button, dialog, etc.)
│   │   ├── cell/          # Notebook cell components
│   │   ├── outputs/       # Output renderers (stream, error, display data)
│   │   ├── editor/        # CodeMirror editor
│   │   └── widgets/       # ipywidgets controls
│   └── lib/
│       └── utils.ts       # cn() and other utilities
├── apps/                   # App entry points
│   ├── notebook/          # Notebook Tauri frontend
│   └── sidecar/           # Sidecar WebView frontend
├── crates/                 # Rust code
│   ├── runt/              # CLI binary
│   ├── runtimed/          # Background daemon
│   ├── runtimed-py/       # Python bindings for the daemon
│   ├── runtimed-wasm/     # WASM Automerge bindings for frontend (same automerge crate as daemon)
│   ├── notebook/          # Notebook Tauri app
│   ├── notebook-doc/      # Shared Automerge document operations (cells, metadata, sync)
│   ├── sidecar/           # Sidecar wry/tao app
│   ├── tauri-jupyter/     # Shared Tauri/Jupyter utilities
│   ├── kernel-launch/     # Shared kernel launching API
│   ├── kernel-env/        # Environment progress reporting
│   ├── runt-trust/        # HMAC trust verification
│   ├── runt-workspace/    # Workspace detection utilities
│   └── xtask/             # Build automation tasks
├── docs/                   # Architecture documentation
└── contributing/           # Developer guides

Development

Prerequisites

Tool Version Install
Node.js 20+ https://nodejs.org
pnpm 10.12+ corepack enable
Rust 1.90.0 https://rustup.rs (version managed by rust-toolchain.toml)

Linux only: Install GTK/WebKit dev libraries:

sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev libxdo-dev

Quick start

pnpm install
cargo xtask build

Development workflows

Workflow Command Use when
Hot reload cargo xtask dev Iterating on React UI
Standalone Vite cargo xtask vite Multi-window testing (Vite survives window closes)
Attach to Vite cargo xtask dev --attach Connect Tauri to already-running Vite
Debug build cargo xtask build Full debug build (frontend + rust)
Rust-only build cargo xtask build --rust-only Rebuild rust, reuse existing frontend
Run bundled cargo xtask run notebook.ipynb Run standalone binary
Release .app cargo xtask build-app Testing app bundle locally
Release DMG cargo xtask build-dmg Distribution (usually CI)

Build order

The UI must be built before Rust because:

  • crates/sidecar embeds assets from apps/sidecar/dist/ at compile time via rust-embed
  • crates/notebook embeds assets from apps/notebook/dist/ via Tauri

Common commands

pnpm build                          # Build all UIs
cargo test                          # Run Rust tests
pnpm test:run                       # Run JS tests
cargo fmt                           # Format Rust
npx @biomejs/biome check --fix apps/notebook/src/ e2e/  # Format JS
cargo clippy --all-targets -- -D warnings               # Lint Rust

Library crates

The underlying Rust libraries are published to crates.io:

Contributing

See the contributing/ directory for detailed guides:

  • Development workflow — build commands, dev daemon, Zed tasks
  • Architecture — runtime principles, daemon, state, sync
  • Protocol — wire protocol, magic bytes preamble, version negotiation
  • Releasing — versioning scheme, release procedures, tag conventions
  • Testing — Vitest, Rust, Python, E2E

License

BSD-3-Clause

About

nteract is the desktop app for interactive notebooks powered by runtimed

Resources

License

Stars

Watchers

Forks

Contributors