mojojojo mojojojo

← Research

A notebook agent should show the diff

A preview of mojojojo Notebooks: reactive Python and Mojo cells, reviewed AI edits, immutable revisions, and one execution and billing path.

This is a product preview, not a launch announcement. Mojojojo Notebooks is being designed around the open mojo-notebook runtime. The local document remains plain Markdown; the hosted layer adds revisions, sharing, sessions, quotas, and audited actions.

The current boundary and non-negotiable tests live in the notebook design document.

The difficult part is not drawing cells. It is deciding what an AI action is allowed to change and which execution path a cell uses.

An agent proposes; the notebook records your decision. Generated code is shown as a diff. It does not mutate a cell or run it until you apply the edit.

One execution path

A notebook cell should use the same planner, sandbox, compiled-code cache, and billing ledger as an editor or API run. Python can stay in the browser when it fits. Packages, Mojo, GPU work, and longer jobs can be placed remotely. Creating a second “notebook executor” would create two security boundaries and two answers to the question “what did this run cost?”

Outputs are not source

Source revisions are immutable. Large outputs are separate content-addressed artifacts. Re-running a parent marks descendants stale instead of rewriting history, and applying an AI proposal creates an ordinary reviewed revision.

Plugins declare capabilities

Importers, renderers, and actions are the three planned plugin points. A plugin declares capabilities such as network or artifact access and the host must allow them. Plugins do not receive account secrets, database handles, or a live kernel object. Renderer HTML is treated as untrusted.

The first intended slice is deliberately narrow: create and revise notebooks, import Marimo, edit Markdown/Python/Mojo cells, run through the existing planner, and offer explain/fix/generate actions as reviewable diffs. We will call it live when those boundaries have tenant-isolation, revision-conflict, sanitisation, and billing-parity tests.


Product notes describe what is live at publication time. Anything still being designed is marked as a preview; source repositories carry their own build and test instructions.