🎉 We've raised a $5M seed led by AIX Ventures!

Read more

Newsletter 7

Newsletter 7

To get updates like this one delivered to your inbox, subscribe to our newsletter.

Hi! 👋 You’re reading the seventh marimo newsletter.

This is your monthly reminder that at marimo, we’re on a mission to make the world’s best programming environment for working with data, and it’s all free and open source. Just pip install marimo or uv add marimo to get started!

Since the last newsletter was mailed three weeks ago, we’ve had 12 new releases, including one very big one: 0.9.0.

In this newsletter, we’ll highlight a few updates and new features we’re particularly excited about, as well as some amazing content from our community ❤️

New features

💾 Smart Caching

Contributed by Dylan Madisetti, mo.persistent_cache makes it possible for you to open a notebook and pick up where you left off, with variables automatically loaded in memory. With persistent caching, your notebook can start instantly, skipping expensive computations that you’ve already completed and letting you manipulate variables you computed in previous sessions. This feature has the potential to transform the way you work with expensive notebooks.

Opting in to smart caching is as easy as:

with mo.persistent_cache(name="my_cache"):
  x = my_expensive_computation()

mo.persistent_cache is also accompanied by mo.cache, a more robust and capable variant of the well-known functools.cache. Check out our documentation to learn more.

💬 mo.ui.chat

v0.9.0 ships with a powerful new element: mo.ui.chat. This element lets you create a chat interface powered by custom logic or off-the-shelf models from OpenAI, Anthropic, or Google. Because it’s reactive, the chatbot’s responses are automatically made available in Python, letting you perform downstream tasks with the model’s response.

Making a custom model is easy: just define a function that maps a list of chat messages and a config to the chat response.

chat

For an advanced example, see how we built a chatbot that lets you ask questions about any GitHub repo, powered by the open-source project Sage.

We’re excited to see what you build!

📦 Package manager panel

marimo now ships with a package manager panel. From this panel, you can view all packages installed in your environment, as well as add and remove packages. When running with --sandbox (sandboxed notebooks encapsulate their package dependencies, and marimo runs them in an isolated venv), adding and removing packages also updates your notebook’s inline script metadata.

package-manager-panel

➡️ 🍃 From Jupyter to marimo

We’ve substantially improved marimo convert, our conversion tool that translates Jupyter notebooks to marimo notebooks. You no longer have to resolve multiple definition errors on your own, and some popular magic commands are replaced with marimo equivalents.

Try it at the command-line: marimo convert nb.ipynb -o nb.py.

Converting from Jupyter to marimo gets you freebies like a much more powerful dataframe viewer and editor (including GitHub copilot, AI completion, and data source panels), with zero effort required on your part.

For those curious about internals: marimo convert makes heavy use of marimo’s internal static analysis module, the same module we use to parse marimo notebooks into dataflow graphs.

Community

We have 59 contributors pushing code to marimo, up from 50 last month, and many more contributors reporting bugs, sharing feedback, and hanging with us on Discord — come chat with us!

Roundup

Here’s a roundup of cool things the marimo community has been up to in the past few weeks:

🌟 Spotlight on Mustjaab!

Each week on our socials and Discord, we put the spotlight on a member of the marimo community.

This week, we’re putting the spotlight on marimo community member Muhammad Mustjaab. Mustjaab has been a member of our Discord for as long as we can remember, and he’s shared over a dozen notebooks in our Share Your Notebook channel, ranging from analyses of greenhouse gas emissions to an exploration of Perplexity using mo.ui.chat. Join our Discord to check out these and other notebooks that Mustjaab has contributed, and feel free to contribute your own.

Thanks Mustjaab for building with us! 🙏

See the spotlights repo for previous weeks’ spotlights.

Examples

Finally, a small update: We’re building out examples in our GitHub repo; some examples are bite-sized tutorials, showing you how to use features like SQL or UI elements, while others illustrate the kinds of things you can build in marimo, like function-calling chatbots or data labelers. Every example is a sandboxed notebook, encapsulating its package requirements.

If you have an example to contribute, please file a pull request!

-Akshay & Myles