Notebook editor and orchestrator for reproducible data science
Project description
BulletJournal
BulletJournal is a notebook orchestration platform for reproducible data science. It layers explicit artifact passing, persistent graph state, stale detection, checkpoints, and managed execution on top of Marimo notebooks.
For multi-project orchestration with separated environments through Docker containers, see BulletJournal-Controller.
DISCLAIMER: This project is part of an experiment to evaluate the potential of AI tooling for software engineering. Most of the code in this repo was produced by an LLM and may not offer the same security or robustness as human-written code. Please don't deploy it in a critical production environment without isolation, especially given that the project was made to run user-provided Python code.
Requirements
- Python 3.11+
- A dedicated environment is recommended (
uvorvenv)
Quickstart
pip install bulletjournal-editor
bulletjournal init testproject
bulletjournal start testproject --open
If you are already inside a project root, running bulletjournal with no subcommand starts the app.
Common commands
bulletjournal init testproject
bulletjournal init testproject --project-id custom-id
bulletjournal start .
bulletjournal dev . --open
bulletjournal doctor .
bulletjournal validate-templates
bulletjournal rebuild-state .
bulletjournal mark-environment-changed . --reason "dependencies updated"
bulletjournal export . testproject.zip
bulletjournal import testproject.zip restored-study
Project layout
project_root/
├─ graph/
│ ├─ meta.json
│ ├─ nodes.json
│ ├─ edges.json
│ └─ layout.json
├─ notebooks/
├─ artifacts/
│ └─ objects/
├─ metadata/
│ ├─ project.json
│ └─ state.db
├─ checkpoints/
├─ uploads/
│ └─ temp/
├─ pyproject.toml
└─ uv.lock
Docs
docs/EXECUTION_PLAN.mddocs/ARCHITECTURE.mddocs/PROJECT_FORMAT.mddocs/NOTEBOOK_AUTHORING.mddocs/API.mddocs/TEMPLATES.mddocs/OPERATIONS.mddocs/TROUBLESHOOTING.md
Testing
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
PYTHONPATH=src python -m pytest
Pre-commit
ruff.toml is consumed by ruff automatically from the repo root. To enable the git hook:
pre-commit install
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 bulletjournal_editor-1.2.1.tar.gz.
File metadata
- Download URL: bulletjournal_editor-1.2.1.tar.gz
- Upload date:
- Size: 265.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2adfa0f2a3aef51d1b8b204385a689e759458583a4ff10bb826a50e585d25364
|
|
| MD5 |
c4a1032abb94219c4e5235cc714e33a5
|
|
| BLAKE2b-256 |
a55df76530a7f1bc0b3161e94101e2af888e5314120b53a8a78cf7f269faa3ee
|
Provenance
The following attestation bundles were made for bulletjournal_editor-1.2.1.tar.gz:
Publisher:
publish.yml on Agoratlas/BulletJournal
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
bulletjournal_editor-1.2.1.tar.gz -
Subject digest:
2adfa0f2a3aef51d1b8b204385a689e759458583a4ff10bb826a50e585d25364 - Sigstore transparency entry: 1409456899
- Sigstore integration time:
-
Permalink:
Agoratlas/BulletJournal@d8f676d4f59ddc4d04ccb37757ed4b7eef07a517 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Agoratlas
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d8f676d4f59ddc4d04ccb37757ed4b7eef07a517 -
Trigger Event:
push
-
Statement type:
File details
Details for the file bulletjournal_editor-1.2.1-py3-none-any.whl.
File metadata
- Download URL: bulletjournal_editor-1.2.1-py3-none-any.whl
- Upload date:
- Size: 296.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9016cff846dfb16830b1407b4f109bc5f62fd257ead4f27896bb0967ef1790b1
|
|
| MD5 |
f9cd0828a5fe24eb7ad4f1a3da175559
|
|
| BLAKE2b-256 |
f8d193cff7fbf7b2bf01016f64da69c654b24e0a3b3e5a31f99a7f0c01961603
|
Provenance
The following attestation bundles were made for bulletjournal_editor-1.2.1-py3-none-any.whl:
Publisher:
publish.yml on Agoratlas/BulletJournal
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
bulletjournal_editor-1.2.1-py3-none-any.whl -
Subject digest:
9016cff846dfb16830b1407b4f109bc5f62fd257ead4f27896bb0967ef1790b1 - Sigstore transparency entry: 1409456902
- Sigstore integration time:
-
Permalink:
Agoratlas/BulletJournal@d8f676d4f59ddc4d04ccb37757ed4b7eef07a517 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Agoratlas
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d8f676d4f59ddc4d04ccb37757ed4b7eef07a517 -
Trigger Event:
push
-
Statement type: