Native desktop, reactive, completely JS- and browser-free Jupyter-compatible notebook IDE built on Python + Qt6 (PySide6).
- Zero JS / Zero Electron / Zero WebEngine: Every surface (code editor, syntax highlighting, Markdown preview, tables, charts, reactive DAG graph) renders with native C++/Qt6 widgets.
- Reactive DAG Execution (No Hidden State):
- Uses Python AST analysis to map each cell's definitions (
defs) and references (refs). - Editing a cell immediately marks downstream dependents as
STALE, and execution automatically re-runs the affected chain in topological order. - Removing a variable from a cell also cleans it up from the live kernel namespace (
globals().pop(...)), preventing ghost state. - Automatically detects multi-cell definition conflicts and dependency cycles.
- Uses Python AST analysis to map each cell's definitions (
- Git-Friendly
.bm.mdFormat +.ipynbCompatibility:- The default
.bm.mdformat uses clean Markdown +pythonfenced blocks without noisy binary output blobs — easy to read and diff in Git. - Standard
.ipynb(Jupyter nbformat 4) notebooks can be opened directly and exported back to.ipynb.
- The default
- Full Jupyter Kernel Compatibility:
- Threaded
jupyter_clientZMQ communication so the UI never freezes. - Switch between any installed Jupyter kernel (
ipykernel, etc.); standalone release builds also include an embedded Python kernel fallback. - Kernel-backed
Tab/Ctrl+Spacecode completion, interrupt (Ctrl+I), restart, and live variable inspector.
- Threaded
- Bilingual UI (Hungarian / English) & Portable Settings:
- Dynamic runtime language switching directly from the toolbar (
🌐 HU/🌐 ENbutton) without restarting. - Window size, position, maximized state, splitter layout, inspector visibility, theme (
dark/light), and language preference are saved to a portablesettings.jsondirectly inside the application folder (next to the executable or project root).
- Dynamic runtime language switching directly from the toolbar (
python3 -m bm_notebook examples/reactive_demo.bm.mdOr install in editable mode:
pip install -e . --no-build-isolation
bm-notebook examples/reactive_demo.bm.mdGitHub Actions automatically tests and builds standalone bundles for Linux (linux-x86_64), Windows (windows-x86_64), and macOS (macos-arm64) and publishes them under GitHub Releases.
Shift+Enter: Run cell + downstream dependents (reactive cascade) and advance to the next cellCtrl+Enter: Run cell + downstream dependents in placeAlt+Enter: Run cell and insert a new code cell belowTab/Ctrl+Space: Kernel-backed code completionF5/Ctrl+R: Run entire notebook in topological orderCtrl+I: Interrupt running kernelCtrl+B: Toggle the right-hand Reactive Graph / Variable Inspector panelCtrl+S/Ctrl+O/Ctrl+N: Save / Open / New notebook
