marimo

响应式的 Python 笔记本开源

关于 marimo

marimo 是一个响应式的 Python 笔记本。改动一个单元格,依赖它的单元格会自动重新运行,或者被标记为过期。笔记本存成普通 .py 文件,可以用 git diff,可以当脚本运行,也可以发布成网页应用。项目用 Apache-2.0 许可,开发方 Marimo Inc. 2024 年宣布 500 万美元种子轮,2025-10-30 加入 CoreWeave。截至 2026-10-25,GitHub 星标 23,310,最新版 0.25.2(2026-10-20);它还有一个免费的云端笔记本 molab。

marimo 界面截图

它解决什么问题

Jupyter 笔记本让数据工作变得直观,但有几个长期问题。一是隐藏状态:单元格可以乱序执行,删掉的变量还留在内存里,结果别人重跑不出来。二是文件格式:.ipynb 是夹着输出的 JSON,放进代码库很难 diff 和合并。三是交付:笔记本想变成脚本、定时任务或给别人用的应用,往往要另写一套。创始人 Akshay Agrawal 在 2025-10-30 的博文里回忆,自己做研究时离不开 Jupyter,又被它折磨。博文引用的一项研究称,GitHub 上 1,000 万个 Jupyter 笔记本里超过三分之一无法复现。

marimo 的做法是从数据流入手。它静态分析每个单元格定义和引用了哪些变量,建出依赖图。运行一个单元格时,依赖它的单元格自动重跑;删掉一个单元格,它定义的变量也从内存里清掉。代价大的笔记本可以切到懒执行模式,只把受影响的单元格标成过期,不自动运行。这样,笔记本里看到的代码和输出始终一致。

第二个设计是存成纯 Python。marimo 笔记本就是一个 .py 文件,可以直接 python notebook.py 当脚本跑,可以 import 进别的模块,可以用 pytest 测,也能在 git 里正常 diff。README 列出它想取代的工具有 jupyter、streamlit、jupytext、ipywidgets 和 papermill,也就是说,编辑、交互控件、格式转换、参数化运行和应用发布都在一个工具里完成。

截至 2026-10-25 的仓库情况:创建于 2023-08-15,主要语言 Python,前端是 React,Apache-2.0 许可,星标 23,310,分支 1,353,未关闭的 issue 和 PR 合计 601。PyPI 上最新版 0.25.2 要求 Python 3.10 以上。

2025 年 10 月 30 日,marimo 官方博客宣布团队加入 CoreWeave,并写明 marimo 会继续免费、开源,并保持宽松许可证。

A reactive Python notebook that's reproducible, git-friendly, and deployable as scripts or apps.

marimo README

核心能力

第一是响应式执行和可复现性。依赖图保证代码和输出一致,删除即清理。README 还提到内置包管理:笔记本可以把依赖内联写在文件头里,用 marimo edit --sandbox 在隔离的虚拟环境里打开,换一台机器也能复现。0.25.0(2026-09-24)重做了沙箱的生命周期,新增 Pixi 作为可选后端,可以带上 Conda 包和非 Python 运行时,默认仍然是 uv。

第二是一份文件多种用途。同一个 .py 可以在编辑器里交互开发,用 marimo run 发布成只读应用,也可以导出成 HTML、WebAssembly 页面或幻灯片。0.25.0 加了可移植的 WebAssembly 导出。内置的交互控件(滑块、表格、数据框编辑器等)和代码通过依赖图联动,不需要写回调。SQL 单元格可以直接查询数据框和数据库,结果是 Python 变量。

第三是 AI 协作。README 介绍了 marimo pair,可以把 Claude Code、Codex、OpenCode 等智能体接到正在运行的笔记本上;编辑器内也有聊天助手,可以填自己的 API 密钥,也可以用本地模型。2025 年官方称它是最早支持 Agent Client Protocol 的编辑器之一。2026 年 9 月底又一轮发布周推出了两个配套项目。marimo-lens(2026-09-30)是一个控件,用户在图表上圈一个点或一块区域写下备注,智能体就能拿到这个标记,以及产生这个输出的单元格和它依赖的单元格。marimo-studio(2026-10-01)为同一个笔记本生成面向不同受众的视图,比如课件、文章或仪表盘,官方称每个数字都能追溯到计算它的单元格,还可以预渲染成静态文件,部署到 GitHub Pages。

第四是云端和自托管。molab 是官方的免费云端笔记本。2026-06-01 起迁到 CoreWeave 公开预览:每个笔记本默认 4 个 CPU 和 32 GB 内存,可以挂一块 96 GB 显存的 NVIDIA RTX Pro 6000 Blackwell GPU,会话最长 12 小时。官方说只要用量合理就免费,笔记本默认公开但不可被搜索到,类似 GitHub Gist。团队要在自己的基础设施上部署,可以用 2026-10-02 开源的 marimohub(Apache-2.0):存储、计算和身份认证都可插拔,存储支持 S3、GCS、Azure、R2、CoreWeave 对象存储等,计算支持 Kubernetes、Docker、Modal、E2B、CoreWeave 沙箱等,身份认证支持 OIDC、Google IAP、Cloudflare Access,还内置版本历史、应用发布和定时任务。

第五是近期版本。最新的 0.25.2(2026-10-20)以修复为主,新增 Python 3.15 支持,地理数据框可以下载成 GeoJSON 或 GeoParquet。它有一项破坏性变更:以前笔记本切到深色主题时会自动把 matplotlib、Plotly、Bokeh 和 HoloViews 图表也切成深色,这一版取消了,深色图表需要在代码里显式设置。

和同类比

和 Jupyter 比:Jupyter Notebook(jupyter/notebook,BSD-3-Clause,2026-10-25 星标 13,458)和 JupyterLab(BSD-3-Clause,星标 15,372)有覆盖几十种语言的内核生态,托管平台和教程也很多。marimo 只支持 Python,换来的是没有隐藏状态、文件是纯 Python、能直接发布成应用。官方 2025 年的博文说当时 marimo 的 16.6k 星标「超过 Jupyter」。迁移方面,README 提供 marimo convert,可以把 .ipynb 转成 marimo 笔记本。

和 Streamlit 比:Streamlit(Apache-2.0,星标 46,101)是用 Python 写数据应用的流行框架,用户交互时重新运行整个脚本。marimo 在应用这一端和它重叠,区别是 marimo 先是笔记本,应用只是同一个文件的另一种运行方式,而且依赖图只重跑受影响的单元格。

和 jupytext、papermill 比:jupytext 解决笔记本和脚本互转,papermill 解决参数化批量运行。marimo 把这两件事做进了文件格式本身:文件本来就是脚本,README 写明脚本运行时可以用命令行参数来参数化。

价格方面,几个开源项目本身都免费。

谁在用,适合谁

规模可以从几个公开数据看。pypistats 显示 marimo 包最近一个月下载 2,450,932 次(截至 2026-10-25),这个数字包含 CI 和镜像等自动下载,不等于用户数。GitHub API(2026-10-25)统计到 363 个关联账号的贡献者,计入匿名邮箱后是 374 条。官方 2025-10-30 的博文自述,当时月下载超过 100 万,GitHub 星标 1.66 万,贡献者近 200 人,Discord 成员 3,000 多,团队从 2 人增长到 8 人,还被《自然》(Nature)杂志报道过。

关于团队:按 2024-11-19 的种子轮公告,Akshay Agrawal 在斯坦福读博期间参与发展了一个开源优化库,月下载量做到百万级,之前在 Google Brain 参与 TensorFlow;Myles Scolnick 曾在 Palantir 和 CloudKitchens 做工程。种子轮 500 万美元,由 Anthony Goldbloom 和 AIX Ventures 的 Shyam Mani 领投,跟投的个人有 Jeff Dean、Clem Delangue、Wes McKinney、Charlie Marsh 等。

适合谁

做数据分析、机器学习实验和科研计算,又受够了 Jupyter 隐藏状态的人。希望笔记本能进代码评审、能被测试、能当脚本在 CI 里跑的工程团队。需要把分析快速变成交互式小应用或幻灯片给同事看的分析师。用浏览器教学的老师:WebAssembly 版本不用装环境,打开链接就能运行。用 Claude Code、Codex、OpenCode 等编程智能体写分析代码的人也合适,marimo pair 能让智能体直接操作正在运行的笔记本。

不适合谁

重度依赖 Jupyter 生态的人要谨慎,例如大量内核扩展、R 或 Julia 内核,或者团队流程绑定 .ipynb 格式的情况;marimo 只跑 Python,虽然可以用 SQL 单元格,0.25 起也能借 Pixi 沙箱从 Python 调用 R。习惯随手改全局变量、在多个单元格里反复给同一个变量赋值的写法,在 marimo 里会被禁止,需要改掉习惯。需要多用户、带权限管理的笔记本平台的团队,要么用新推出的 marimohub 自己部署,要么另选平台,单机版 marimo 不解决这个问题。

上手路径

第一步,安装并跑教程。README 给的命令是 pip install marimo && marimo tutorial intro,也可以用 uv 或 conda 安装。不想装的话,可以直接在 molab 上在线开一个笔记本。

第二步,新建或打开笔记本。marimo edit notebook.py 在浏览器里打开编辑器。要隔离依赖,加 --sandbox,marimo 会根据文件头里的内联依赖创建独立环境(默认 uv,0.25 起可选 Pixi)。

第三步,从 Jupyter 迁移。用 marimo convert your_notebook.ipynb > your_notebook.py 转换,也可以用官网的网页转换工具。转换后常见的报错是同一个变量在多个单元格里被重复定义,需要改名或合并单元格,这正是 marimo 用来杜绝隐藏状态的规则。

第四步,交付。python notebook.py 直接当脚本运行;marimo run notebook.py 发布成只读应用;也可以导出 HTML 或 WebAssembly 页面放到静态托管上。README 还列出 VS Code 和 Cursor 扩展以及 PyCharm 插件,习惯在 IDE 里工作的人可以用。

第五步,部署时注意安全。不要把编辑模式的 marimo 直接用 --host 0.0.0.0 暴露到公网或共享网络上,要放在自己的认证代理后面,并保持在最新版本。

定价与许可证

marimo 本体是 Apache-2.0 许可,可以商用和二次分发,并含专利授权条款。官方在 2025-10-30 宣布加入 CoreWeave 时写道,marimo「现在是、将来也永远是」免费、开源、宽松许可的。molab 云端笔记本目前免费,官方的说法是只要用量合理就免费,GPU 也包括在内(2026-06-01 博文)。自托管平台 marimohub 同样是 Apache-2.0。官网导航里有面向企业的入口。

风险与局限

安全公告方面,仓库自己发布了 2 条安全公告,GitHub Advisory Database 一共有 3 条经过审核的与 marimo 相关的公告(截至 2026-10-25)。

CVE-2026-39987(GHSA-2679-6mx9-h9xc,2026-04-09 发布):GitHub 标为 critical,CVSS 3.1 分数 9.8,CVSS 4.0 分数 9.3。公告描述说,这是一个未认证的远程代码执行漏洞:终端 WebSocket 端点 /terminal/ws 没有做认证校验,只检查运行模式和平台是否支持就接受连接,攻击者可以直接拿到完整的 PTY shell,执行任意系统命令。其他 WebSocket 端点(如 /ws)都正确调用了 validate_auth()。公告的「受影响版本」一节写的是 0.20.4 及以前,但同一公告的结构化受影响范围是 0.23.0 以前,NVD 的描述也写「0.23.0 之前」,修复版本是 0.23.0。NVD(状态 Analyzed)自己给出的 CVSS 3.1 分数是 9.8(CRITICAL),另列了 GitHub 提供的 CVSS 4.0 分数 9.3(CRITICAL)。CISA 在 2026-04-23 把它加入「已知被利用漏洞」目录,要求联邦机构在 2026-05-07 前处置。0.23.0 的发布说明写明,受影响的是两种情况:以可编辑笔记本形式部署到公网、只依赖 marimo 自带认证;或者在编辑模式下用 --host 0.0.0.0 暴露到共享网络。用了自己的认证代理、只在本机使用、以应用模式运行、WebAssembly 笔记本和 molab 都不受影响。

CVE-2026-54386(GHSA-8m59-7xv8-735h,2026-06-18 发布):GitHub 标为 medium,CVSS 3.1 分数 6.1,CVSS 4.0 分数 5.1。公告描述说,0.23.9 之前的版本在笔记本的网页上存在反射型 XSS:file 查询参数中的单引号没有正确转义,被反射进内联 JavaScript 字符串。攻击者可以构造以 __new__ 开头的恶意链接绕过 404 检查,注入的脚本在受害者的 marimo 服务源下执行,而且不受内容安全策略限制。修复版本是 0.23.9。NVD 状态为 Deferred,只列出 CNA(VulnCheck)的分数:CVSS 3.1 为 6.1(MEDIUM),CVSS 4.0 为 5.1(MEDIUM),NVD 没有另行评分。

GHSA-xjv7-6w92-42r7(没有 CVE 编号,2025-10-02 发布):GitHub 标为 medium,没有 CVSS 3.1 分数,CVSS 4.0 分数 6.9。公告描述说,默认安装下 /mpl/<port>/<route> 端点不需要认证,相当于一个开放代理,外部攻击者可以借它访问本机任意端口上的内部服务;报告者扫描公网上的 marimo 服务器,发现很多暴露了旧版 CUPS、phpMyAdmin 等敏感服务。受影响版本是 0.9.20 及以上、0.16.4 以前,修复版本是 0.16.4。因为没有 CVE,NVD 上没有对应条目。

其他局限还有:只支持 Python;不允许多个单元格重复定义同一个变量,迁移旧笔记本要改代码;0.25.2 取消了图表自动深色主题,可能影响已有笔记本的外观。

我们的判断

marimo 的特点是:用依赖图执行单元格,删掉单元格时变量一并清除;笔记本存成纯 Python 文件,可以进 git、用 pytest 测试、当脚本运行或发布成应用;可导出 WebAssembly 页面,并通过 marimo pair 接入编程智能体;Apache-2.0 许可。它的限制:只支持 Python;同一个变量不能在多个单元格里重复定义;编辑模式出现过未认证远程代码执行漏洞(0.23.0 修复)和反射型 XSS(0.23.9 修复)。

亮点

marimo 是一个 Python 笔记本,修好了笔记本这类工具十年来的老问题。单元格会响应式地运行,文件就是可以提交、可以 diff 的普通 Python,同一个笔记本既能当脚本跑,也能作为交互应用发布。

Akshay Agrawal 和 Myles Scolnick 来自科研和数据基础设施领域,这体现在他们对可复现性的认真上。借助 WebAssembly 版本,笔记本还可以完全在浏览器里运行。

单元格响应式运行,笔记本就是能直接 diff 的纯 Python 文件,同一个文件可以作为脚本或应用运行,也能借 WebAssembly 在浏览器里运行。

资料来源

官方

  1. marimo-team/marimo GitHub 仓库GitHub · 访问于 2026 年 10 月 26 日
  2. marimo READMEGitHub · 访问于 2026 年 10 月 26 日
  3. marimo LICENSE(Apache-2.0)GitHub · 访问于 2026 年 10 月 26 日
  4. marimo-team/marimo ReleasesGitHub · 访问于 2026 年 10 月 26 日
  5. marimo 0.25.2 发布说明GitHub
  6. marimo 0.25.0 发布说明GitHub
  7. marimo 0.24.2 ReleaseGitHub
  8. marimo 0.23.0 发布说明,含 CVE-2026-39987 安全公告GitHub

动态与深度阅读

创作者文章

两支黑客松团队用 marimo 为小商家和科学家做工具

marimo 介绍了两支获奖黑客松团队:Standard Physics 在 CoreWeave Hacks 拿下 marimo 赛道和“最具生产可用性”奖,MIKMAK 在一场实验室自动化黑客松获总冠军。 Standard Physics 的应用把手机扫描变成 3D 房间模型,帮小商家排查无障碍问题,调整家具即可实时看到检查结果;MIKMAK 让智能体设计针对 TEM-1 酶的抑制实验并驱动机器人执行,科学家在 marimo 界面中审批计划、复盘运行记录。

原文Their project connected agent-proposed experiments, physical laboratory runs, and analysis.
marimo官方博客阅读全文
创作者文章

AI 评测实验室 Acto 用 marimo 把专家判断纳入智能体评估

marimo 案例介绍,研究智能体在办公软件中执行任务的强化学习实验室 Acto 发现,智能体可能通过自动检查却以硬编码等方式错误完成任务,需要领域专家判断。 Acto 用 marimo 搭建 Result Review 和 Task Studio 等应用:专家在同一界面查看任务、输出、执行轨迹并记录可审计的判断,研究人员再把专家标准转化为验证器,用已知正反例测试后重新评分。创始人称,这让团队能检验评估器是否真正对准目标行为。

原文An expert might find that it bypassed the logic, relied on a brittle shortcut, or hard-coded the result.
marimo官方博客阅读全文
创作者文章

marimo 推出可自托管的笔记本平台 marimohub

marimo 推出开源、可自托管的平台 marimohub,用于团队存储、管理和运行 marimo 笔记本,提供持久存储、隔离计算、单点登录、权限控制和版本历史。 存储、计算和身份认证都是可替换的后端,支持 S3 兼容存储、Kubernetes、Modal、Cloudflare Containers、OpenID Connect 等。marimohub 采用 Apache 2.0 许可,已在 GitHub 上线,并提供单台 Linux 服务器、Helm 和各大云平台的部署指南。

原文A self-hostable notebook platform to store, manage, and run marimo notebooks on your own infrastructure.
marimo官方博客阅读全文