Skip to main content

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.3) · 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 .ipynb import/export.
  • Batteries included — kernel, SQL, charts, AI, jobs, git, deploy, search, terminal.

Status note: PrismNote is beta. The notebook, kernel, AI, jobs, git, charts, variable explorer, and SQL (databases + warehouses) are functional. SQL runs through the kernel using the OSS driver you install (see CONNECTORS.md); 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 — needs pip 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 widgetsprism.input / slider / select / checkbox re-run the cell when changed.
  • Variable explorer — a Variables tab listing the kernel's variables (name, type, shape, preview).

Data & SQL

  • Connections for SQLite, DuckDB, PostgreSQL, MySQL, and 8 cloud warehouses (Snowflake, BigQuery, Redshift, Databricks, Athena, Trino, Presto, Synapse).
  • Real query execution through the kernel using permissively-licensed (OSS) drivers you install — no vendored drivers. See CONNECTORS.md.
  • Results render with the Table / Bar / Line switcher, and Insert into notebook drops a reproducible df = … cell.

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-name trigger and a generated DAG.
  • Source controlinit, clone, commit, push, pull, status from the UI.
  • Cloud deploy — generates Dockerfile, docker-compose.yml, k8s.yaml, and fly.toml (review before deploying).

Editing & menus

  • Cell ops: cut / copy / paste / delete / move up·down, add code/markdown.
  • Find & Replace across the notebook (per-cell find via Monaco ⌘F).
  • Run all / selected / above / below, Restart & Run All, clear outputs.
  • Dedicated Kernel menu (interrupt / restart / restart & clear).
  • Export as .ipynb or .py; inline rename (click the notebook title).

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 explorer (works in any browser) with new/rename/ delete, upload, drag-and-drop, multi-select, a filter, hidden-files toggle, and git-status decorations.
  • Ocean-blue dark theme + light theme; .ipynb import/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 python process 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 rich preloaded.

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

Docs: CONNECTORS.md (data connectors & OSS licensing) · ZEPPELIN_COMPARISON.md · DATABRICKS_COMPARISON.md · NOTEBOOK_COMPARISON_MATRIX.md


Roadmap

  • Prebuilt release binaries for all platforms (so pip install runs 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.
  • Reactive (dependency-aware) cell execution.

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

prismnote-0.4.3.tar.gz (13.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

prismnote-0.4.3-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file prismnote-0.4.3.tar.gz.

File metadata

  • Download URL: prismnote-0.4.3.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for prismnote-0.4.3.tar.gz
Algorithm Hash digest
SHA256 612c455003887b36520420c4308b8f7963b796fee328c27419dd0aecbabbcec2
MD5 ad1932aa03500ec534efc9ca55ccf1a0
BLAKE2b-256 58164355d833a2e6e1c1b5221093110d489d08346b5764c9de725e7916b8bff4

See more details on using hashes here.

File details

Details for the file prismnote-0.4.3-py3-none-any.whl.

File metadata

  • Download URL: prismnote-0.4.3-py3-none-any.whl
  • Upload date:
  • Size: 9.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for prismnote-0.4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 b73af8e3f68a4936c7f4f99e98e98d852ab5c181313e51a8c574912875e6ac7a
MD5 24acd309008de4f2f8882b803b1ed4fc
BLAKE2b-256 88b609d542f0b0926b9055a642893ef453f79219b923e669c504fabb1b39e979

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page