Skip to main content

Notebook editor and orchestrator for reproducible data science

Project description

BulletJournal

BulletJournal is a single-project 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, and it can run standalone or behind 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.

What the MVP includes

  • FastAPI backend with REST + SSE updates
  • Project format rooted in graph/, notebooks/, artifacts/, metadata/, checkpoints/, pyproject.toml, and uv.lock
  • Strict AST parsing for notebook inputs, outputs, assets, and notebook docs
  • Managed notebook execution in subprocesses with persisted artifact lineage and stale propagation
  • File input nodes plus built-in and provider-discovered notebook and pipeline templates
  • Checkpoint create/list/restore flows
  • Zip import and export flows
  • A bundled ReactFlow-based web UI for browsing projects, nodes, artifacts, issues, and events

Requirements

  • Python 3.11+
  • A dedicated environment is recommended (uv or venv)

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. When --project-id is omitted, BulletJournal derives it from the target directory name.

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.md
  • docs/ARCHITECTURE.md
  • docs/PROJECT_FORMAT.md
  • docs/NOTEBOOK_AUTHORING.md
  • docs/API.md
  • docs/TEMPLATES.md
  • docs/OPERATIONS.md
  • docs/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

Status

This repository now contains a functional MVP with tested core flows for:

  • single-project startup
  • interface parsing
  • graph persistence and validation
  • managed notebook runs
  • artifact state transitions
  • checkpoints and restore
  • controller-facing status and environment invalidation hooks
  • zip import/export
  • SSE event streaming and API-driven UI updates

Known MVP constraints remain around deployment hardening and background execution semantics, but the repository is no longer just a skeleton.

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

bulletjournal_editor-1.0.0.tar.gz (251.6 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-1.0.0-py3-none-any.whl (281.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: bulletjournal_editor-1.0.0.tar.gz
  • Upload date:
  • Size: 251.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for bulletjournal_editor-1.0.0.tar.gz
Algorithm Hash digest
SHA256 df3685923594135be34e1356b6d74da904db6d0310311bd5125ae5796450d1a8
MD5 333bf2b3774a81c7c0e20b1b285171e7
BLAKE2b-256 a0c0d3edee8b782512be2fa7fecac9463d589cf7f1ea30d9ad91816bc247f986

See more details on using hashes here.

Provenance

The following attestation bundles were made for bulletjournal_editor-1.0.0.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-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for bulletjournal_editor-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 69900eb2fa6f7d27e668dc94691cf5af9442ea97b1bee305d5aa0b7ceff4152b
MD5 b6ca52f03d4f0cbe9060f020a5eb1cdf
BLAKE2b-256 fbb5098e890fa552b0e4b3c9f33aa5665a37ada5229c85429670a73e453a1445

See more details on using hashes here.

Provenance

The following attestation bundles were made for bulletjournal_editor-1.0.0-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.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page