Skip to main content

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 (uv or venv)

Quickstart

pip install bulletjournal-editor
bulletjournal init testproject
bulletjournal init /project --project-id study-a --skip-environment
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 init /project --project-id study-a --skip-environment
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/
├─ objects/
├─ dashboards/
├─ metadata/
│  ├─ project.json
│  └─ state.db
├─ checkpoints/
├─ temp/
│  ├─ uploads/
│  ├─ execution_logs/
│  └─ worker/
├─ pyproject.toml
└─ uv.lock

BulletJournal owns the project layout and schema files under graph/, metadata/, objects/, dashboards/, checkpoints/, and temp/.

pyproject.toml and uv.lock define the project environment, but they can be managed externally. Use bulletjournal init ... --skip-environment when another controller is responsible for environment definition and install orchestration.

bulletjournal init is safe to rerun. It leaves valid existing layout files in place, recreates missing required directories and runtime directories, fails on unsupported schema versions, and never overwrites existing pyproject.toml or uv.lock when --skip-environment is used.

Docs

  • docs/EXECUTION_PLAN.md
  • docs/ARCHITECTURE.md
  • docs/PROJECT_FORMAT.md
  • docs/NOTEBOOK_AUTHORING.md
  • docs/API.md
  • docs/TEMPLATES.md
  • docs/OPERATIONS.md
  • docs/ARTIFACT_LIFECYCLE.md
  • docs/TROUBLESHOOTING.md

Testing

python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
PYTHONPATH=src python -m pytest

The default pytest configuration runs four workers with a fixed randomized order (--randomly-seed=42). Override these defaults with additional pytest options when diagnosing a failure, for example -n 0 for serial execution.

Pre-commit

ruff.toml is consumed by ruff automatically from the repo root. To enable the git hook:

pre-commit install

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bulletjournal_editor-2.2.3.tar.gz (792.7 kB view details)

Uploaded Source

Built Distribution

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

bulletjournal_editor-2.2.3-py3-none-any.whl (839.8 kB view details)

Uploaded Python 3

File details

Details for the file bulletjournal_editor-2.2.3.tar.gz.

File metadata

  • Download URL: bulletjournal_editor-2.2.3.tar.gz
  • Upload date:
  • Size: 792.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for bulletjournal_editor-2.2.3.tar.gz
Algorithm Hash digest
SHA256 8e5cd611652ee2e9314fa35a93ae9b01b3e3fe0f4e162ae408ced1708aada24e
MD5 21279c20d21ba5c95f3d24a4a77803eb
BLAKE2b-256 23049c547d594d244e3dc3a5439e10ac2d3e6493dbe292b89f5eeccf7a52fb72

See more details on using hashes here.

Provenance

The following attestation bundles were made for bulletjournal_editor-2.2.3.tar.gz:

Publisher: publish.yml on Agoratlas/BulletJournal

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bulletjournal_editor-2.2.3-py3-none-any.whl.

File metadata

File hashes

Hashes for bulletjournal_editor-2.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ff3250ce9801440f6048c31b2ed089724017f4229b5a1400d54384bbf2d6ad71
MD5 307df17f99b89f1d22efb6d808ae0cb3
BLAKE2b-256 89e293728632b5cb4bccd238f6d35da44f0c84be85b8142569a0804cebbec519

See more details on using hashes here.

Provenance

The following attestation bundles were made for bulletjournal_editor-2.2.3-py3-none-any.whl:

Publisher: publish.yml on Agoratlas/BulletJournal

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

2.2.6

2 files

2.2.5

2 files

2.2.4

2 files

This release

2.2.3 This release

2 files

2.2.2

2 files

2.1.4

2 files

2.1.3

2 files

2.1.2

2 files

2.1.1

2 files

2.1.0

2 files

1.3.0

2 files

1.2.3

2 files

1.2.1

2 files

1.2.0

2 files

1.1.1

2 files

1.1.0

2 files

1.0.0

2 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