marimo notebooks add useful context to LLM prompts by exposing variables, schemas, column types, row counts, errors, and selected outputs.
2
A notebook can be a Python file that supports reactive execution, widgets, tests, command-line apps, dependencies, and static web output, rather than a disposable scratchpad.
3
Vincent Warmerdam argues that AI should help people explore and build ideas while preserving their ability to understand code and work without a model.
Summary
Vincent Warmerdam explains why he thinks notebooks need to become more like interactive programs and less like static scratchpads. marimo keeps notebooks as Python files, uses reactive execution, supports widgets, and can connect notebook code to tests, command-line applications, and package dependencies. Its AI features add context from data frames, errors, schemas, and cell outputs so models can write more useful SQL or repair code. Vincent also describes experiments with Claude Code, MCP, ACP, notebook bootstrapping from prompts, and dynamic user interfaces. He is careful about the limits: generated widgets, paper reproductions, and fully dynamic exports are still works in progress. Much of the conversation concerns learning and independence. Vincent thinks notebooks should help people inspect intermediate results, play with ideas, and catch mistakes. He also argues that developers still need programming knowledge, especially when generated projects have poor foundations or when a hosted model is unavailable.
The acquisition changed the company structure without changing marimo's direction
Vincent says marimo was acquired through CoreWeave and is now under the Weights & Biases umbrella. The team and roadmap remain the same, and the open-source project will keep its existing license. He describes the main day-to-day change as moving from an eight-person Slack environment to a much larger company with many channels. He sees a useful relationship between marimo and Molab, the hosted notebook product: improving Molab creates a reason to keep investing in the open-source notebook.
Molab could use CoreWeave infrastructure for larger hosted notebooks
Molab is a cloud-hosted version of the notebook environment. Vincent says it has offered free CPU credits, and the new relationship with CoreWeave could make larger machines and GPUs possible. He does not describe a finished GPU product, but says those possibilities are in the pipeline. His emphasis is on the incentive: Molab becomes better when the underlying open-source marimo project becomes better.
Notebook agents need structured context from the notebook itself
Vincent describes an agent workflow where a user points to a variable with an at-style reference. If the variable is a data frame, marimo can add its column names, row count, and column types to the prompt. That gives the model enough information to write more appropriate SQL or data-frame code without forcing the user to describe the object manually. Similar references can send notebook errors or cell outputs to the model. For visual outputs, marimo can send a screenshot when the model is multimodal.
Agent protocols let users bring existing subscriptions and tools into notebooks
marimo has an experimental feature for running Claude Code inside the notebook through ACP, and it also supports MCP. Vincent says this lets users use a Claude subscription rather than paying separately for every API request. marimo can lint code after Claude makes a change, then send notebook-specific errors back to the model for repair. One example is marimo's rule against defining the same variable twice in separate cells, because reactive execution would otherwise make the value ambiguous.
Generated interfaces could turn notebooks into interactive explanations
Vincent wants a notebook agent to create interface elements on demand, such as a copy-to-clipboard button. He also imagines giving the model a research paper and asking it to reproduce a diagram with sliders, interactive matrices, or plots that update as the user changes parameters. The aim is to help someone build intuition about a mechanism, often with generated PyTorch code. He says this is still a future goal, especially when the source data is large or Python libraries do not work in WebAssembly.
Learning some JavaScript remains useful for notebook interfaces
Vincent argues that Python developers who refuse to learn JavaScript will have trouble debugging generated interfaces. He thinks JavaScript can be harder for models to generate well because the web contains so much inconsistent code. Widgets offer a smaller entry point: Python users can learn enough JavaScript to create useful interactive elements without adopting an entire Node-based workflow. He also says product-minded developers eventually need to care about front-end behavior, since repeated network requests can create noticeable delays.
Good project foundations limit the damage from coding agents
Vincent describes asking an agent to create a web app with email, Postgres, and tests. The agent configured the unit tests to start by deleting the database, which meant the same behavior could have affected production. He says manually setting up the project, or starting from a sound template, prevents this class of mistake. His concern is that people who skip learning project structure become dependent on an LLM for every step. He uses flash cards and deliberate practice to remember common setup patterns and keep moving when a model or service is unavailable.
Bootstrapped notebooks make agent output easier to inspect
marimo's new command can take a prompt such as asking for a first analysis of a CSV file and create an initial notebook. Vincent prefers this to putting the whole task inside an IDE because a notebook exposes intermediate results, charts, and mistakes in a form that is easy to inspect. He sees notebooks as useful for both humans and agents: the agent can generate code, while the person can change context, look at outputs, and poke at the result.
A Python-file notebook can support ordinary software work
Vincent says marimo stores a notebook as a Python file instead of a large JSON document, which avoids noisy Git changes. He uses notebooks for command-line applications, with Typer decorators and pytest-compatible test functions. The same functions can run in a browser or from a terminal, and UV can manage dependencies declared in the file. He also uses charts in notebooks to debug the timing behavior of a flash-card application before exporting functions into a Flask app.
"The main thing that the notebook is really good at is you can stare at it and you can fiddle around with it, you can play around with it."Vincent Warmerdam23:23
Who should watch
You build data tools in notebooks and want them to behave more like maintainable Python programs.
You are adding LLMs to data workflows and need practical ways to provide schemas, errors, outputs, and other context.
You rely on coding agents and want a reminder of where project setup, programming knowledge, and manual inspection still matter.