github marimo-team/marimo 0.16.0

5 hours ago

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 to create_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 in lifespans.py and use ToolBase 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 in class_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:

Full Changelog: 0.15.5...0.16.0

Don't miss a new marimo release

NewReleases is sending notifications on new releases.