A modern, open-source data science notebook with Deepnote-quality UI
Project description
◆ PrismNote
A modern data science notebook that makes exploring and understanding data faster than writing code.
No more df.head() → Explore data visually · Build charts without coding · Automatic governance & quality checks · Local AI assistant — all in one tool.
⭐ If PrismNote saves you time, please star the repo — it genuinely helps others discover it.
The Problem PrismNote Solves
You're deep in analysis. You need to understand a new dataset, build a quick chart, or verify data quality. In Jupyter, that means:
- Writing
df.head(),df.describe(),df.info()repeatedly - Building matplotlib/plotly code from scratch for each chart
- Manually checking for NULL values, duplicates, and data quality issues
- Switching between tools to share results or trace where data came from
PrismNote eliminates this friction. Open any data file or DataFrame, explore it visually with instant statistics and charts, verify quality automatically, and share interactive dashboards — all without leaving the notebook.
- 🔍 Explore faster than writing code — Click a file, see schema + statistics + histograms instantly. No
df.describe()needed. - 🔒 Your data stays on your machine — Everything runs locally. No cloud uploads, no account required. (AI via Ollama works offline.)
- ⚡ Instant setup — Single binary, one command. Works on Mac, Linux, Windows. No Docker, no dependencies to wrangle.
- 📊 Build dashboards in minutes — No-code chart builder for exploratory work. Rill Data integration for polished, shareable dashboards.
- 🤖 AI that understands your notebook — Chainlit AI assistant knows your data, cells, and context. Fix errors, explore ideas, get suggestions.
What's New in v1.3.0 — Working with Data at Scale
v1.3.0 adds the tools you need when working with sensitive data, collaborating with others, or building production-grade analyses.
📊 Build Real Dashboards (Not Just Plots)
Create interactive dashboards with filters, drill-down, and multiple chart types — then share them via URL. Finally, a chart builder that doesn't feel like a hack.
🗂️ Find & Understand Your Data
A data catalog that actually lists what you have. Search by name, find columns with PII, trace where data comes from, and see what depends on what.
🔐 Governance Without the Paperwork
Automatically detects sensitive data (emails, phone numbers, SSNs). Classify data as Public/Internal/Confidential/Restricted. Know your data quality score (0-100) at a glance.
🤖 Talk to Your Data
Instead of scrolling through notebooks, ask Chainlit AI about your data. It understands what's in each cell, remembers the conversation, and suggests next steps.
Get Started in 30 Seconds
Pick your favorite package manager. That's it.
pip (most people):
pip install prismnote
prismnote
# Browser opens to http://localhost:8000
uv (if you use uv):
uv tool install prismnote
prismnote
Homebrew (macOS/Linux):
brew tap Mullassery/prismnote
brew install prismnote
prismnote
No dependencies, no setup. The entire app — Rust backend, Python kernel, React frontend — comes in one binary. Everything runs on your machine.
First time? The browser opens automatically to http://localhost:8000.
- Click Open Data Explorer (⌘E) to load a CSV or Parquet file
- Click New Notebook to start coding
- Press ⌘, anytime to configure AI or database connections
Build from Source (for developers)
If you want to modify PrismNote or a binary isn't available for your platform:
Requirements: Rust, Node 18+, Python 3.8+
# Clone the repo
git clone https://github.com/Mullassery/prismnote.git
cd prismnote
# Install Python deps
pip install ipykernel pandas matplotlib rich duckdb
# Terminal 1: Start the backend (http://localhost:8000)
cargo run
# Terminal 2: Start the frontend dev server (http://localhost:5173)
cd frontend && npm install && npm run dev
Then open http://localhost:5173 in your browser.
How It Actually Works — Explore Data the Fast Way
🔍 Open Any Data, See It Instantly
Double-click a Parquet, CSV, or database table. You immediately see:
- Full column breakdown — data type, nulls, unique values, top 10 samples
- Histograms & distributions — understand skew, outliers, ranges at a glance
- Statistics — mean, median, std dev, quartiles (no
df.describe()needed) - Lineage — which notebook cells created this data, which use it
Scroll through millions of rows fast. Filter, sort, search — it all happens server-side.
Supports: CSV, Parquet, JSON, Arrow, Apache Iceberg, DuckDB queries, live DataFrames.
One-click reproducibility: "Copy as code" gives you the pandas equivalent. Paste it into a cell and run it.
📊 Build Charts Without Writing Code
Quick exploration: Drag-and-drop chart builder. Pick dimensions, pick measures, pick a viz type (bar/line/area/scatter/heatmap/pie). Click render. Then export PNG or copy the Altair code.
Production dashboards: Use Rill Data to build interactive, polished dashboards with multiple charts, filters, and drill-down. Share via URL or embed in your app. Automatically refresh data on schedule.
Plot gallery: Every chart you create is auto-collected in a filmstrip. Zoom, pan, export SVG/PNG, re-use or remix.
🔐 Know What Data You Have (and What to Do With It)
Data Catalog: See all your tables & columns in one searchable place. Know row counts, owners, when data was last updated.
Automatic PII Detection: Scans your columns for emails, phone numbers, SSNs, credit cards. Flags which datasets need restricted access.
Quality Checks: Run SQL-based assertions (NOT NULL, UNIQUE, ranges, patterns, freshness). Get a quality score (0-100) per table. Know instantly when data gets bad.
Sensitivity Classification: Tag data as Public/Internal/Confidential/Restricted. Helps you comply with privacy laws and company policy.
Column Lineage: See where a column comes from, and what cells/dashboards depend on it. Great for impact analysis — change the source, see what breaks.
🤖 AI That Understands Your Work
Chainlit AI Chat: Ask questions about your data, get explanations, brainstorm next steps. The AI remembers your conversation and knows which notebook you're in.
Your choice of AI: Use Ollama (free, runs on your machine, completely private), Claude (fast and accurate), or OpenAI. Switch anytime in Settings.
Quick AI fixes:
- Hit ⌘K in a cell to auto-complete code or refactor
- Error? Click "Fix with AI" to get a suggestion
- Explain confusing code without leaving the editor
- Get inline autocomplete as you type
📓 Notebook That Doesn't Get in Your Way
One kernel, all your cells: Define a variable once, use it everywhere. Interrupt long-running cells, restart when you need a fresh slate.
Work the way you want:
- Python cells for data munging
- SQL cells (DuckDB) for fast queries
- Shell cells (
!ls,!curl) for system commands - Markdown cells for notes
- Input widgets that trigger re-runs
Smart formatting: Paste messy code → it auto-formats with Black. Hit ⇧⌥F to reformat any cell.
Errors that make sense: Instead of a stack trace, you get a plain-English explanation and line markers in the editor.
⚡ Write SQL Faster
SQL autocomplete: Start typing a query and see suggestions for keywords, functions, table names, and columns. Context-aware.
Save & reuse queries: Bookmark queries you use often. Mark favorites. Search by name. Paste them into cells later.
Instant query replay: Results cached in memory (256 MB). Run the same query twice → second time is instant.
See what slows you down: Track how long each cell takes to run, memory used, row counts. Spot the bottlenecks.
🗄️ Query Any Database
Connect to your data wherever it lives:
- Local: SQLite, DuckDB (files or in-memory)
- On your server: PostgreSQL, MySQL
- Data warehouses: Snowflake, BigQuery, Redshift, Databricks, Athena, Trino, Presto, Synapse
PrismNote uses open-source drivers you control. No proprietary code bundled. See CONNECTORS.md for setup.
⚙️ Turn Notebooks into Workflows
Run on a schedule: Execute a notebook daily, hourly, or on-demand. See run history and logs. Integrates with Airflow.
Git built-in: Init a repo, commit, push, pull — all from the UI. Your notebook stays sync'd with GitHub.
Deploy anywhere: Generate Docker compose files, Kubernetes YAML, or Fly.io config. Takes 30 seconds to move from local to production.
How PrismNote Compares to Other Tools
The short version: JupyterLab is great for coding. PyCharm is great for IDEs. PrismNote is great for data exploration + AI + charts + governance.
Think of it this way:
- Use JupyterLab if you spend 80% writing Python code and 20% exploring data
- Use PrismNote if you spend 50% exploring data, 30% writing code, and 20% building charts/dashboards
- Use PyCharm if you're building a Python application with databases
Here's the detailed comparison:
✅ built-in · ⚠️ via extension / partial / paid · ❌ not available · 🔜 on the roadmap
| Feature | PrismNote | JupyterLab | Apache Zeppelin | PyCharm (Pro) |
|---|---|---|---|---|
| Type | Notebook (web) | Notebook (web) | Notebook (web) | Desktop IDE |
| Engine / runtime | Rust + Python kernel | Python (Jupyter) | JVM + interpreters | JetBrains (JVM) + Python |
.ipynb format (native) |
✅ | ✅ | ⚠️ (own format) | ✅ |
| Built-in Data Explorer (grid, sort/filter) | ✅ | ⚠️ | ⚠️ (basic) | ✅ (DataFrame viewer) |
Column profiling, describe() & lineage |
✅ | ❌ | ❌ | ⚠️ (column stats) |
| Open-format explorer (Parquet/CSV/Iceberg) | ✅ (DuckDB) | ⚠️ (code) | ⚠️ (code) | ⚠️ (DB tools/CSV) |
| No-code chart builder | ✅ (Vega-Lite) | ❌ (code) | ✅ (on SQL) | ⚠️ (viewer charts) |
| In-process SQL (DuckDB) + magics | ✅ | ⚠️ | ✅ | ⚠️ (DB tools) |
| AI: in-cell edit / fix / explain / agent | ✅ (Ollama/Claude/OpenAI) | ⚠️ (Jupyter AI) | ❌ | ⚠️ (AI Assistant, paid) |
| AI inline autocomplete | ✅ | ⚠️ | ❌ | ✅ |
| Code auto-format (Black) | ✅ | ⚠️ | ❌ | ✅ |
| Variable explorer | ✅ | ⚠️ | ❌ | ✅ |
| Scheduled jobs (built-in) | ✅ | ❌ (external) | ✅ (cron) | ❌ |
| Git integration (UI) | ✅ | ⚠️ (jupyterlab-git) | ⚠️ | ✅ (excellent) |
| Cloud deploy artifacts (Docker/k8s/Fly) | ✅ | ❌ | ❌ | ⚠️ (plugins) |
| Real-time collaboration | 🔜 | ✅ | ⚠️ | ✅ (Code With Me) |
| Multi-language interpreters | ⚠️ (Python/SQL/shell) | ✅ (many kernels) | ✅ (many) | ⚠️ (Python focus) |
| Install | pip / uv / single binary | pip / conda | download + JVM | IDE download |
| License | MIT | BSD-3 | Apache-2.0 | Proprietary (Pro) |
In short: choose JupyterLab for its vast kernel/extension ecosystem and real-time collaboration, Zeppelin for JVM/Spark-centric multi-interpreter workloads, PyCharm for a full desktop IDE with deep refactoring and DB tools (paid Pro), and PrismNote when you want fast, no-setup data exploration + charts + local AI in one free, open-source local binary. See also ZEPPELIN_COMPARISON.md and NOTEBOOK_COMPARISON_MATRIX.md.
Set Up Your AI Assistant (Optional)
By default, PrismNote has no AI configured. Pick one:
Private & Free — Ollama (Recommended)
Use a local AI model that runs on your machine. Completely private, free, offline.
# Install Ollama from https://ollama.com
# Pull a coding model (qwen2.5-coder is fast and good)
ollama pull qwen2.5-coder
# When running PrismNote, start Ollama with:
OLLAMA_ORIGINS=http://localhost:5173 ollama serve
Then open PrismNote Settings (⌘,) → AI Provider → select "Ollama"
Fast & Cloud — Claude or OpenAI
Want faster responses? Use Claude or OpenAI instead.
Via Settings:
- Open PrismNote
- Press ⌘, (Settings)
- Click "AI Provider"
- Paste your API key (stored locally, never sent to our servers)
Via environment variables:
export PRISMNOTE_AI_PROVIDER=claude # or openai / ollama
export ANTHROPIC_API_KEY=sk-ant-... # or OPENAI_API_KEY=sk-...
prismnote
Your API keys are stored in ~/.prismnote/ai_config.json and never leave your machine.
Essential Keyboard Shortcuts
| Shortcut | What it does |
|---|---|
⌘E |
🔍 Open Data Explorer — load a file or table |
⌘N |
📝 New notebook |
⌘S |
💾 Save |
⇧⌘↵ |
▶️ Run all cells |
⇧↵ |
▶️ Run current cell |
⌘K |
🤖 In cell: AI autocomplete / refactor. Globally: search |
⌘, |
⚙️ Settings (configure AI, databases, theme) |
⇧⌘P |
🎯 Command palette (everything else) |
⇧⌥F |
🧹 Auto-format cell with Black |
(⌘ = Cmd on Mac, Ctrl on Windows/Linux)
Why It's Fast (and Why You Should Care)
PrismNote runs as a single native binary — no virtual machine, no startup delays, no memory overhead.
What that means for you:
- Click and it opens instantly (not 30 seconds of startup)
- Data exploration runs server-side (scroll millions of rows, not your browser's memory)
- AI responses are fast (local Ollama doesn't need network)
- Works offline (except API-based AI)
Architecture (for nerds):
- Frontend: React in your browser (runs locally, talks to backend over HTTP/WebSocket)
- Backend: Rust with Axum (fast, low overhead, instant startup)
- Kernel: One long-lived Python process (state carries across cells like Jupyter)
Everything runs on your machine. Nothing leaves except what you explicitly send to Claude/OpenAI.
Deploy Your Notebook to Production
Built a notebook that your team needs to run daily? Deploy it in 2 minutes.
In PrismNote:
- Click Deploy to Cloud
- Choose your platform (Docker, Kubernetes, Fly.io)
- Download the config files
- Run them in your cloud
# Docker Compose (simplest)
docker compose up -d
# Kubernetes
kubectl apply -f k8s.yaml
# Fly.io (easiest if you like Fly)
fly launch --copy-config --now
Your notebook becomes a scheduled job. Logs are saved. Errors are emailed to you. Same notebook code you tested locally.
Project layout
crates/server/ Rust backend (api, kernel, explore, jobs, db, ws, deploy, git…)
frontend/ React app (components, hooks, api clients)
python/ PyPI launcher package (prismnote)
docs/ screenshots & comparison docs
Further reading: CONNECTORS.md · ZEPPELIN_COMPARISON.md · DATABRICKS_COMPARISON.md · NOTEBOOK_COMPARISON_MATRIX.md
What's Coming Next (v1.4.0)
Team collaboration:
- Real-time co-editing (multiple people in one notebook at once)
- Comments on cells + threaded discussion
- Sharing with view-only / edit permissions
Notebook superpowers:
- Reactive execution (change a variable, dependent cells auto-run)
- Cell parameters (render a notebook with different inputs)
- Run multiple notebooks as a pipeline (dependency order)
Deeper analytics:
- Spark integration for distributed compute
- Column profiling improvements (more stats, cardinality estimation)
- Cost tracking for cloud queries
How to Help (Three Easy Ways)
1. Star the repo — The easiest way to help. It boosts visibility and tells GitHub this project matters.
2. Report bugs — Found something broken? Open an issue with:
- What you were doing
- What you expected
- What happened instead
3. Code contributions — Want to add a feature or fix a bug?
First, open an issue to discuss your idea. Then:
git clone https://github.com/Mullassery/prismnote.git
cd prismnote
# Backend
cargo run
# Frontend (in another terminal)
cd frontend && npm install && npm run dev
Before pushing, run tests:
cargo check && cargo test
cd frontend && npm run build
See CONTRIBUTING.md for detailed guidelines.
Getting Help
🤔 How do I...?
- README — You're reading it
- CONNECTORS.md — Connect to databases
- Command palette (⇧⌘P) — search for features
🐛 Something's broken
- Report an issue with details
- Include your OS, PrismNote version (
prismnote --version) - Paste error messages and steps to reproduce
💬 Chat with the community
- GitHub Discussions — ask questions, share ideas
- Issues — bugs and features
📖 Deep dives
- Connectors guide — SQL databases, data warehouses, files
- Full API docs
- v1.3.0 release notes
License
MIT © Georgi Mammen Mullassery
TLDR: Free to use, modify, and distribute. Give credit.
Your Data is Safe
Local by default — Everything runs on your machine. Your data never leaves unless you explicitly send it to a cloud warehouse or AI API.
Protected by default:
- SQL injection blocks dangerous commands
- File access is restricted to your notebook directories
- Rate limiting prevents abuse
- Security headers protect against common web attacks
API keys stay local:
- Claude/OpenAI keys stored in
~/.prismnote/(not on our servers) - Database passwords encrypted
- No telemetry or tracking
⚠️ Before deploying to the internet: If you're running PrismNote on a shared server or over the internet, enable authentication first. See CONTRIBUTING.md for security guidelines.
Questions? See CONTRIBUTING.md for security reporting.
Project details
Release history Release notifications | RSS feed
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-1.6.0.tar.gz.
File metadata
- Download URL: prismnote-1.6.0.tar.gz
- Upload date:
- Size: 20.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8a87edca8ae2fc837d1ab99ea987e79685f44e79548d7f67a2456b31fc35744f
|
|
| MD5 |
a312a1e7133121c7377e64c9f2f60ff7
|
|
| BLAKE2b-256 |
7e5d3f33d7f9453099af6dca870cb17c425797fd4f21ed72b311d7b61e2fe80b
|
File details
Details for the file prismnote-1.6.0-py3-none-any.whl.
File metadata
- Download URL: prismnote-1.6.0-py3-none-any.whl
- Upload date:
- Size: 23.1 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 |
5f616e02ccea9cc28130d4f2701b216da6ae9d4ddbde1111a8fd0d015b626552
|
|
| MD5 |
c69fade804653ac2fe7535605c0fb61a
|
|
| BLAKE2b-256 |
765d7bdce4a626edb4ac5cd2c6d079e84454c84318a3f5a8e583e11b07c3b6da
|