
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. 当脚本跑,可以 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.
核心能力
第一是响应式执行和可复现性。依赖图保证代码和输出一致,删除即清理。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. 直接当脚本运行;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/ 没有做认证校验,只检查运行模式和平台是否支持就接受连接,攻击者可以直接拿到完整的 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 在浏览器里运行。
资料来源
官方
- marimo-team/marimo GitHub 仓库 · 访问于 2026 年 10 月 26 日
- marimo README · 访问于 2026 年 10 月 26 日
- marimo LICENSE(Apache-2.0) · 访问于 2026 年 10 月 26 日
- marimo-team/marimo Releases · 访问于 2026 年 10 月 26 日
- marimo 0.25.2 发布说明
- marimo 0.25.0 发布说明
- marimo 0.24.2 Release
- marimo 0.23.0 发布说明,含 CVE-2026-39987 安全公告
- marimo 种子轮公告
- marimo is joining CoreWeave
- molab, now with GPUs!
- Introducing marimohub
- Introducing marimo-studio
- Introducing marimo-lens
安全公告
- GHSA-2679-6mx9-h9xc / CVE-2026-39987(终端 WebSocket 未认证 RCE) · 访问于 2026 年 10 月 26 日
- NVD:CVE-2026-39987(含 CISA KEV 信息) · 访问于 2026 年 10 月 26 日
- GHSA-8m59-7xv8-735h / CVE-2026-54386(反射型 XSS) · 访问于 2026 年 10 月 26 日
- NVD:CVE-2026-54386 · 访问于 2026 年 10 月 26 日
- GHSA-xjv7-6w92-42r7(/mpl 未认证代理) · 访问于 2026 年 10 月 26 日
- marimo-team/marimo 仓库安全公告页 · 访问于 2026 年 10 月 26 日
相关产品
- jupyterlab/jupyterlab GitHub 仓库 · 访问于 2026 年 10 月 26 日
- jupyter/notebook GitHub 仓库 · 访问于 2026 年 10 月 26 日
- streamlit/streamlit GitHub 仓库 · 访问于 2026 年 10 月 26 日
数据
- GitHub API:marimo-team/marimo 贡献者(anon=0) · 访问于 2026 年 10 月 26 日
- PyPI:marimo · 访问于 2026 年 10 月 26 日
- pypistats:marimo 下载量 · 访问于 2026 年 10 月 26 日
动态与深度阅读
两支黑客松团队用 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.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 推出可自托管的笔记本平台 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.