This release brings multi-cell AI code generation and marimo check
for static code analysis, along with preview features for AI agents.
Highlights
Generate multiple cells with AI
You can now generate entire notebooks with AI within marimo.
The "Generate with AI" feature has been upgraded to create multiple cells at once, organizing code into logical units (#6312).
As you watch the AI work, cells stream in with a distinctive visual indicator, making it clear which cells are AI-generated. Accept suggestions with Tab
or reject with Escape
.
Detect and fix common issues with marimo check
marimo includes a comprehensive linting system that helps you write better, more reliable notebooks. The new marimo check
command detects and reports on common errors before runtime, ensuring your notebooks follow marimo's best practices (#6288).
Run marimo check
to identify issues like multiple definitions, circular dependencies, and syntax errors. Add --fix
to automatically resolve formatting issues. Perfect for CI/CD pipelines with its non-zero exit codes on warnings.
# Check for issues
marimo check notebook.py
# Auto-fix formatting issues
marimo check --fix notebook.py
You can also configure marimo check
as a hook with AI coding agents like Claude Code or Google Gemini to automatically correct potential mistakes in AI-generated code.
AI Agent Sidebar (Preview)
Connect marimo notebooks to AI coding assistants like Claude Code or Gemini CLI through the new Agent sidebar (#6331, #6389). This experimental integration uses the Agent Client Protocol (ACP) to enable AI agents to help write and modify code directly in your notebooks.
Enhanced agent capabilities:
- Upload files directly from your computer into the agent context
- Reference data with
@
- mention dataframes, variables, and errors - Attach files with
#
- include notebook files in your prompts - Open terminal for agent commands directly from the sidebar
Note: This feature is behind a feature flag and ready for early testing. Start your agent with --watch
mode for best results.
✨ Enhancements
- Clean up stack traces with
marimo check
(#6423) - Add
session_ttl
parameter tocreate_asgi_app
(#6419) - Add
xterm
addons and terminal resize (#6395) - Add tables and variable tool (#6396)
- Download table regardless of cell selection (#6391)
- Upload files,
@
-symbol for data,#
for files in the Agent panel (#6389) - Add script to generate lint docs (#6379)
- Refresh example notebooks (#6378)
marimo check --fix
(#6288)- Update
ToolManager
to initialize inlifespans.py
and useToolBase
for backend tool registration (#6375) - Expand
app.run
to allow programmatic overrides (#6359) - Better ACP commands, edit the notebook without
--watch
, slash-commands (#6360) - Generate multiple cells with "Generate with AI" (#6312)
- Add
progress_bar
with iterator and total (#6424) - Add "open in terminal" to Agent sidebar (#6405)
- Add async progress bar functionality (#6336)
🐛 Bug fixes
- Allow parsing lists in app config kwargs (#6427)
- Handle 'import *' correctly for
marimo check
(#6425) - Remove body tags when rendering custom HTML (#6421)
- Pandas series with columns the same as index name (#6418)
- Shelex paths for lsp (#6403)
- Add 'class' as a builtin (#6399)
- Handle nested
msgspec
parsing (#6382) - Add string conversion in
DataTableColumn.__post_init__
(#6383) - Fix enter for renaming a cell not working (#6376)
- Allow syntax errors (#6371)
- Fix could not find function given request:
FunctionCallRequest
(#6365) - Fix
InstallHook.js:1
in HTML,<tr>
cannot be a child of<table>
(#6367) - Use
TypeVar
for Cls inclass_definition
(#6364) - Allow invalid decorator permutations (#6357)
- Allow test cells in the presence of async cells (#6355)
- Handle empty tool results in agents (#6431)
📚 Documentation
- Add agents docs and feature flag (#6409)
- Add
--unsafe-fixes
and example rule (#6398) - Add syntax error
check
rule as a base example (#6384)
📝 Other changes
- Tests for edge case file names (#6400)
- Tool calls styling and streamdown (#6411)
- Change styles for staged AI cells (#6410)
- Frontend filename edge case tests (#6401)
- Pass around single bytes of message for
KernelMessage
(#6380) - Lazyer initialization of tools (#6377)
- Use nested
op
from data (#6381) - Pin duckdb
<=1.3.0
for type-checking (#6374)
Contributors
Thanks to all our community and contributors who made this release possible: @Antyos, @bjoaquinc, @daizutabi, @dmadisetti, @Light2Dark, @maxkoretskyi, @mscolnick, @nojaf
And especially to our new contributors:
- @daizutabi made their first contribution in #6336
Full Changelog: 0.15.5...0.16.0