Modern, open-source Jupyter-compatible data science notebook with Rust performance
Project description
◆ PrismNote
A fast, modern, open-source data-science notebook. Rust engine · React UI · local-first · AI-native.
License: MIT · Status: Beta (v0.4) · PyPI: prismnote
Overview
PrismNote is a local-first alternative to Jupyter, Zeppelin, and Databricks notebooks. A Rust + Axum backend drives a persistent Python kernel, and a modern, VS Code-style React UI gives you Python + SQL, rich output and live charts, local AI assistance, scheduled jobs, git, and generated cloud-deploy files — all on your machine.
- Local-first & private — runs locally; local AI via Ollama, no account required.
- Jupyter-compatible — native
.ipynbimport/export. - Batteries included — kernel, SQL, charts, AI, jobs, git, deploy, search, terminal.
Status note: PrismNote is beta. The notebook, kernel, AI, jobs, git, and charts are functional. Cloud-warehouse connectors are scaffolding (query results are currently stubbed), and deployment files are generated templates you review before shipping. See the roadmap.
Install & run
From source (recommended today)
Requires Rust (stable), Node 18+, and Python 3.8+ on PATH:
# Python runtime deps for the kernel (ipykernel is required; the rest enable
# rich output, %sql, and charts)
pip install ipykernel pandas matplotlib rich duckdb
# 1) backend — http://localhost:8000
cargo run
# 2) frontend — http://localhost:5173 (proxies /api and /ws to the backend)
cd frontend && npm install && npm run dev
Open http://localhost:5173.
From PyPI
pip install prismnote
prismnote
The PyPI package is a thin launcher: on first run it downloads the prebuilt server
binary for your platform from the matching GitHub Release (vX.Y.Z). If a release
binary isn't published for your platform/version yet, use the from-source steps above.
(pip install prismnote succeeds regardless; only the prebuilt launch depends on a release.)
Enable AI (optional)
- Local, free, private — Ollama: install from https://ollama.com, then
ollama pull qwen2.5-coder. The UI talks to Ollama from the browser, so allow the dev origin once:OLLAMA_ORIGINS=http://localhost:5173 ollama serve
- Claude / OpenAI: set it in AI settings, or via env (persisted to
~/.prismnote/ai_config.json):export PRISMNOTE_AI_PROVIDER=claude # or openai / ollama export ANTHROPIC_API_KEY=... # or OPENAI_API_KEY
Features
Notebook & execution
- Persistent shared kernel — variables/imports/functions from one cell are available in later cells.
- Per-cell interpreters (magics):
%python(default),%sql(in-process DuckDB; can query DataFrames from other cells — needspip install duckdb),%sh/!cmd(shell),%md(rendered markdown). - Rich output — text, HTML, matplotlib figures, and pandas DataFrames.
- Chart switcher — view any DataFrame as Table / Bar / Line.
- Live streamed output over WebSocket while a cell runs.
- Interrupt a running cell and restart the kernel.
- Dynamic input widgets —
prism.input / slider / select / checkboxre-run the cell when changed.
AI assistance
Local models via Ollama, or Claude / OpenAI.
- In-cell AI edit (diff accept/reject), Fix with AI on errors, Explain.
- Inline autocomplete (ghost text) when Ollama is connected.
- Teacher persona — explanations of the "why" plus a contextual tip.
- Agent panel — Plan/Act assistant that proposes and applies cell edits.
Errors that help
- Natural-language explanations for common Python errors.
- In-editor markers on the offending line/column, with a collapsible traceback.
Workflow
- Jobs — save a whole notebook and run it as a unit: manual / interval / daily, with status + run history.
- Airflow — a stable
run-by-nametrigger and a generated DAG. - Source control —
init,clone,commit,push,pull,statusfrom the UI. - Cloud deploy — generates
Dockerfile,docker-compose.yml,k8s.yaml, andfly.toml(review before deploying).
Workspace & UX
- VS Code-style layout; all panels collapsible, each with independent font +/-.
- Responsive — side panels auto-collapse on narrow windows.
- Global search, command palette, integrated terminal, a Python console (shares the kernel), and a file browser that works in any browser.
- Dark/light themes;
.ipynbimport/export.
Architecture
┌──────────────────────────────┐ ┌─────────────────────────────┐
│ React + TypeScript (Vite) │ HTTP │ Rust backend (Axum) │
│ Monaco · Tailwind · zustand │ ─────▶ │ REST API + WebSocket │
│ cells · panels · AI · jobs │ ◀───── │ routing, jobs, git, deploy │
└──────────────────────────────┘ WS └──────────────┬──────────────┘
│ stdin/stdout (JSON)
┌───────▼────────┐
│ Persistent │
│ Python kernel │
│ (shared globals)│
└─────────────────┘
- Backend spawns one long-lived
pythonprocess and talks to it over a line-framed JSON protocol; outputs are Jupyter-style MIME bundles, streamed live. - Kernel has a shared namespace, is SIGINT-interruptible and restartable, with
matplotlib (Agg) and
richpreloaded.
Keyboard shortcuts
All of these are wired:
| Shortcut | Action |
|---|---|
⌘N / ⌘O / ⌘S |
New / Open / Save notebook |
⌘K |
Global search (in a focused cell, ⌘K is AI edit instead) |
⇧⌘P |
Command palette |
⌘, |
Settings |
⌘⇧↵ |
Run all cells |
⇧↵ |
Run the focused cell |
(⌘/Ctrl depending on platform.)
Deploy
Open Deploy to Cloud to copy/download the generated artifacts, then:
docker compose up -d # Docker
kubectl apply -f k8s.yaml # Kubernetes
fly launch --copy-config --now # Fly.io
Repository layout
crates/server/ Rust backend (api, kernel, jobs, db, ws, deploy, git…)
frontend/ React app (components, hooks, api clients)
python/ PyPI launcher package (prismnote)
*.md Architecture & comparison docs
Comparisons: ZEPPELIN_COMPARISON.md · DATABRICKS_COMPARISON.md · NOTEBOOK_COMPARISON_MATRIX.md
Roadmap
- Functional cloud-warehouse query execution (currently scaffolded/stubbed).
- Prebuilt release binaries for all platforms (so
pip installruns out of the box). - Distributed compute (Spark) and a catalog/data browser.
- Real-time collaboration (live cursors / co-editing).
- Notebook parameters and multi-notebook job composition.
License
MIT — see LICENSE.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file prismnote-0.4.2.tar.gz.
File metadata
- Download URL: prismnote-0.4.2.tar.gz
- Upload date:
- Size: 12.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d245496dfaf23f9da3e8e6b260fc465a2688a39ee5ce27eb4621847b3be2738
|
|
| MD5 |
84511a49a1692c3b72ba78f69d5ffdb6
|
|
| BLAKE2b-256 |
631a9b899086d1839bb78eb3f4d3b9445341762d84c3055821de1381db3f97a5
|
File details
Details for the file prismnote-0.4.2-py3-none-any.whl.
File metadata
- Download URL: prismnote-0.4.2-py3-none-any.whl
- Upload date:
- Size: 8.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
add7dfb22b3fc21929c8addb65fe789378d968cfdafe9df3b5b3d024513b7461
|
|
| MD5 |
8212745b69e81fe4e47ff8d67b0d8254
|
|
| BLAKE2b-256 |
30c7e151bfff499f8abdf06fbe048f138056b68e812f774b7b59f08fa5dfed8e
|