Skip to main content

PrismNote

A Jupyter-compatible data-science notebook with a Rust backend and a React frontend: real local SQL execution, a real sandboxed code-execution engine, and connectors for cloud data warehouses.

CI

What this is

  • Backend: Rust (Axum). Serves the API, runs SQL against local and remote databases, and launches Docker containers for sandboxed code execution.
  • Frontend: React + TypeScript (Vite). Notebook UI, SQL cells, schema explorer, results grid.
  • The release binary embeds the built frontend, so prismnote is a single executable that serves the whole app.

Install

pip install prismnote
prismnote

pip install installs a thin Python launcher (python/) — on first run it downloads the matching prebuilt server binary from GitHub Releases and execs it. As of this version, a prebuilt binary is published for macOS (Apple Silicon) only; other platforms need to build from source (see Building below) until more platform binaries are uploaded.

SQL execution

SQL cells run against real databases — there is no mocked or placeholder query path:

Backend Status
SQLite Real, embedded (via sqlx), no server required
DuckDB Real, embedded (bundled DuckDB, compiled from source), no server required
PostgreSQL Real, via sqlx; requires a reachable Postgres server
MySQL Real, via sqlx; requires a reachable MySQL server

All four are covered by integration tests that run genuine CREATE TABLE / INSERT / SELECT round trips (crates/server/src/db/executor.rs). SQLite and DuckDB tests always run. The Postgres/MySQL tests connect to a real server and skip (rather than fail) when one isn't reachable — point them at a running server with PRISMNOTE_TEST_PG_PORT / PRISMNOTE_TEST_MYSQL_PORT.

MongoDB is not implemented; connecting to it returns an explicit error rather than a fake success.

Sandboxed code execution

docker_executor.rs runs untrusted code in a brand-new, disposable Docker container per execution (docker run --rm):

  • No network access by default (--network=none)
  • Memory, CPU, and process-count limits enforced per run
  • A wall-clock timeout that force-kills and cleans up the container
  • Real stdout/stderr/exit-code capture

Requires a working Docker installation. Supported languages: Python, Bash/shell, JavaScript (Node), Ruby.

Cloud warehouse connectors

Real connection + query execution for Snowflake, BigQuery, Redshift, Azure Synapse, Databricks, Athena, Presto, and Trino (crates/server/src/cloud_warehouse/). AWS-signed requests (Athena, Redshift) use a real SigV4 implementation.

Other integrations

All real API calls, not placeholders:

Integration What's real
Cloud storage S3 (SigV4), GCS (service-account JWT), Azure Blob (Shared Key signing), Google Drive (OAuth) — upload/download/list/delete
dbt Shells out to the real dbt CLI; parses its manifest.json/run_results.json
GitHub Real Contents API for notebook backup/sync
Airflow Real REST API v1 (list/trigger DAGs, run status, tasks). DAG creation writes a file to a configured local DAGs folder, since Airflow's API has no DAG-creation endpoint
Kubernetes Real kubectl apply/get pods/scale
RunPod Real GraphQL API for training-instance lifecycle and serverless endpoint deployment

Two data-quality-scoring code paths (api::get_quality_score, lineage::data_quality_score) are the one area still not wired to real execution — they'd need an assertion-storage and table-to-queryable-data layer that doesn't exist yet, rather than something fakeable in isolation.

Building

git clone https://github.com/Mullassery/PrismNote.git
cd PrismNote
make build

make build builds the frontend first and embeds it into the release binary — this is the only build path that produces a binary that actually serves the UI. Running cargo build --release directly will build a backend with no frontend assets. The binary is written to target/release/prismnote.

Requirements: Rust (stable), Node 20.19+ (required by Vite 8), and Docker if you want sandboxed code execution or want to test the container-management endpoints.

Development

# Terminal 1: backend on http://localhost:8000
cargo run

# Terminal 2: frontend dev server on http://localhost:5173
cd frontend && npm install && npm run dev

Tests

cargo test --workspace --release   # backend
cd frontend && npm test            # frontend (vitest)

Configuration

Everything runs with no environment variables set — Google Sign-In and AI features (code explain/fix/complete, NL-to-SQL, RunPod fine-tuning) are just disabled until configured. Copy .env.example to .env and fill in what you need; see the comments in that file for which variables are required together (e.g. PRISMNOTE_AI_PROVIDER=claude needs ANTHROPIC_API_KEY) and which are backend-only vs. frontend (VITE_-prefixed).

Project layout

crates/server/   Rust backend: API, SQL executors, Docker sandbox, cloud warehouse connectors
frontend/        React app (components, hooks, API clients)
python/          PyPI launcher package
docs/            architecture notes and screenshots

License

Proprietary — free to use with explicit attribution. See LICENSE for the full terms.

Release files for prismnote 1.11.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for prismnote 1.11.0
File Size Uploaded
prismnote-1.11.0.tar.gz 21.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for prismnote 1.11.0
File Interpreter ABI Platform
prismnote-1.11.0-py3-none-any.whl Python 3 none any Details

Total release size: 40.6 kB

Release files / prismnote-1.11.0.tar.gz

Download URL prismnote-1.11.0.tar.gz
Size 21.2 kB
Tags Source
SHA-256 checksum
How to use checksums
2c7f98599fae11fcb6c6b47a0827254b2c9af805ac6349f99fb95e368e657a13
BLAKE2b-256 checksum
How to use checksums
430922c0010c9a744e8ace9e5efb9da96e671d7395bf7ee7dfb4b2d48556c792
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / prismnote-1.11.0-py3-none-any.whl

Download URL prismnote-1.11.0-py3-none-any.whl
Size 19.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0e500e1f88c773112c82d01284d6189e201e5ca8372b5792a9e6896ee5c3e790
BLAKE2b-256 checksum
How to use checksums
2241bf239d4bdb48cee1f86f452a5b19a9854c30f3f31a36b1df6fc5b11928fa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release history Release notifications | RSS feed

This release

1.11.0 This release

2 release files

1.9.0

2 release files

1.8.2

1 release file

1.8.1

2 release files

1.8.0

1 release file

1.7.0

1 release file

1.6.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page