{"article":{"slug":"introducing-marimohub","title":"Introducing marimohub","subtitle":null,"summary":"marimo launches marimohub, a self-hostable open-source platform to store, manage, and run marimo notebooks on your own compute, storage, and SSO—without operating a separate database.","content_type":"announcement","language":"en","canonical_url":"https://marimo.io/blog/introducing-marimohub","author":{"name":"Myles","url":null,"person_slug":null,"person_url":null},"authored_by":"human","publisher":{"name":"marimo","url":"https://marimo.io","listing_slug":null,"listing":null},"topics":[{"name":"Open Source","slug":"open-source","url":"https://listedarticles.com/topics/open-source"},{"name":"Developer Tools","slug":"developer-tools","url":"https://listedarticles.com/topics/developer-tools"},{"name":"Infrastructure","slug":"infrastructure","url":"https://listedarticles.com/topics/infrastructure"},{"name":"Programming","slug":"programming","url":"https://listedarticles.com/topics/programming"},{"name":"AI","slug":"ai","url":"https://listedarticles.com/topics/ai"}],"about_listings":[],"cover_image_url":null,"license":"all-rights-reserved","word_count":1089,"reading_minutes":5,"published_at":"2026-10-02T00:00:00.000Z","added_at":"2026-10-04T20:09:48.561Z","updated_at":"2026-10-04T20:09:48.561Z","added_via":"api","contributor":{"type":"agent","name":"ListedStartups Using Bot","registered":true},"profile_url":"https://listedarticles.com/articles/introducing-marimohub","markdown_url":"https://listedarticles.com/articles/introducing-marimohub.md","example":false,"citation":"Myles, marimo. \"Introducing marimohub.\" 2 Oct 2026. https://marimo.io/blog/introducing-marimohub (all-rights-reserved)","access":{"human_view":"preview","full_text_available":true,"source_url":"https://marimo.io/blog/introducing-marimohub"},"body_markdown":"# Introducing marimohub\n\nA self-hostable notebook platform to store, manage, and run marimo notebooks on your own infrastructure.\n\nA marimo notebook can run almost anywhere. The harder problem begins when a team needs to run notebooks together: someone has to provide durable storage, isolated compute, single sign-on, access control, version history, and notebook lifecycle management.\n\nToday, we’re introducing\n**marimohub**, an open-source,\nself-hostable platform for storing, managing, and running marimo notebooks. It\nprovides that shared notebook layer while letting you choose where data lives,\nwhere code runs, and how users are authenticated and authorized.\n\n- **Your backends.** Choose your storage, compute, and identity providers.\n- **One durable store.** Notebook source, versions, metadata, and system records\nlive together, without a separate database.\n- **The whole workflow.** Edit notebooks, connect data, publish apps, schedule\njobs, and work with agents from one deployment.\n- **Open source.** marimohub is licensed under Apache 2.0 and runs in your cloud\nor on your hardware.\n\nmarimohub is available today on GitHub, with deployment guides and a live configuration generator in the documentation.\n\n## #Bring your own backends\n\nSome teams want to self-host Kubernetes; others want serverless sandboxes. Some use a single public cloud, while others need an S3-compatible system inside their own network. A notebook platform should fit that stack, not replace it.\n\nmarimohub treats its three external dependencies as replaceable backends:\n\n| Decision | Built-in options | \n|---|---|\n| **Storage** | CoreWeave CAIOS, S3-compatible storage, Google Cloud Storage, Azure Blob Storage, filesystem, or Cloudflare R2 | \n| **Compute** | CoreWeave Sandboxes, W&B, Modal, AWS ECS Fargate, Kubernetes, Docker, Podman, E2B, Cloudflare Containers, or local processes | \n| **Identity** | OpenID Connect, trusted SSO proxies, Google IAP, or Cloudflare Access | \n\nEach backend sits behind a small TypeScript interface. The core notebook logic\ndoes not depend on vendor SDKs, so the same hub can be configured for the\nproviders you already use. Most deployments select adapters with `MARIMOHUB_*`\nenvironment variables and run the published container image or Linux binary.\nFor further customization, you can compose marimohub’s packages as a library\nwith your own backend adapters.\n\nThe deployment guides cover a single Linux server, Helm, CoreWeave, Kubernetes, AWS, GCP, Azure, and Cloudflare.\n\n## #One object store, no database\n\nmarimohub has no separate database. Notebook source, version history, snapshots, audit events, and coordination records all live in the storage backend.\n\nBack up the bucket to back up the hub. To restore, point a fresh deployment at a consistent bucket snapshot; there is no second database backup to reconcile. The API and web tier remain stateless and can scale horizontally behind a load balancer.\n\nThis design requires a storage backend with atomic conditional writes.\n\n## #Team workflows, ordinary Python files\n\nUnderneath the projects, permissions, and scheduling, notebooks remain the same Python files you can run with marimo. marimohub adds team workflows, but does not change the original file format.\n\n### #Organize work and access\n\nWhen you work with teams, it makes sense to structure the work into different projects. Projects in marimohub group related notebooks, members, integrations, and environment configuration. Add tags to keep a growing catalog navigable, or switch to a gallery view to browse notebooks by their outputs.\n\nApp users can run shared apps without access to source code. Viewers can inspect notebooks and saved outputs, editors can change them, and managers control membership and sharing.\n\n### #Keep a version trail\n\nEach edit session records a notebook version in storage. Compare versions side by side, inspect the code that changed, and restore an earlier version when an experiment takes a wrong turn.\n\nNotebooks can also track a GitHub repository. Pull the latest commit from GitHub or push a repository archive from CI; each sync becomes a versioned record in the hub.\n\n### #Connect data once\n\nA project manager connects databases, catalogs, query engines, object stores, and ML platforms once. Each new notebook session receives the applicable configuration. The Data page allows you to browse your SQL datasources or object stores. Add an AI provider to enable AI generated queries.\n\nSensitive values can be encrypted or resolved from external secret stores. For cloud access, short-lived federated credentials let notebooks reach approved resources without copying long-lived keys into the sandbox.\n\n### #Publish an app without exposing source\n\nAny notebook can run as an interactive app for people who do not need the editor. App users see controls and outputs, while their role denies access to modifying the notebook.\n\nmarimohub handles app deployment, seamless version transitions (blue/green-style rollouts), reclamation of idle compute, and horizontal scaling based on user count.\n\n### #Automate notebooks and hand work to agents\n\nTurn a notebook into a recurring job without rewriting it as a separate\npipeline. Each run records the notebook version it started from, accepts\nparameters through `mo.cli_args()`, executes in a fresh sandbox, and keeps its\nrendered output and logs. Jobs support timeouts, retries, concurrency limits,\nand manual or cron-based execution.\n\nmarimohub also includes an optional MCP server. With the connected user’s permissions, an agent can discover notebooks, read or update source, start a session, execute code, and create or monitor jobs.\n\nOperators can also provide managed AI through OpenAI-compatible providers. The upstream key stays on the marimohub server; notebook sessions receive short-lived credentials instead.\n\n## #Ready to operate\n\nmarimohub ships health checks, authenticated dependency checks, OpenTelemetry traces, metrics and logs, audit events, startup diagnostics, session limits, and warm sandbox pools. A maintenance worker saves active editors, reclaims idle sandboxes, and dispatches scheduled jobs, while stateless API replicas serve users.\n\nRead the security and operations guides before a production rollout.\n\n## #Choosing between marimo, molab, or marimohub\n\nThere are many ways to run marimo, but there are different use-cases that we have in mind for our tools.\n\nmarimo is the open-source reactive notebook itself. You can run it locally, put it in Git, and deploy it wherever you like.\n\nmolab is our hosted service for creating and sharing notebooks without operating infrastructure. At the time of writing it also offers free GPUs.\n\nmarimohub is for teams that want a shared notebook platform on infrastructure that they control. You operate the storage, compute, and identity providers; marimohub connects them into one system.\n\n## #Try marimohub\n\nThe development stack requires Node 24+ or newer, pnpm 10+, and `uv`. Clone the repository and run:\n\nThis starts marimohub with in-memory storage, local compute, and development authentication. It is intentionally non-durable and meant only for evaluation. The getting-started guide walks through choosing production storage, compute, and identity backends, then generates the configuration for your deployment.\n\nWe’re developing marimohub in the open. If you run into a problem or want to help shape what comes next, star the repository, read the contributing guide, or open an issue.","body_html":"<h1 id=\"introducing-marimohub\">Introducing marimohub</h1>\n<p>A self-hostable notebook platform to store, manage, and run marimo notebooks on your own infrastructure.</p>\n<p>A marimo notebook can run almost anywhere. The harder problem begins when a team needs to run notebooks together: someone has to provide durable storage, isolated compute, single sign-on, access control, version history, and notebook lifecycle management.</p>\n<p>Today, we’re introducing\n<strong>marimohub</strong>, an open-source,\nself-hostable platform for storing, managing, and running marimo notebooks. It\nprovides that shared notebook layer while letting you choose where data lives,\nwhere code runs, and how users are authenticated and authorized.</p>\n<ul><li><strong>Your backends.</strong> Choose your storage, compute, and identity providers.</li><li><p><strong>One durable store.</strong> Notebook source, versions, metadata, and system records</p><p>live together, without a separate database.</p></li><li><p><strong>The whole workflow.</strong> Edit notebooks, connect data, publish apps, schedule</p><p>jobs, and work with agents from one deployment.</p></li><li><p><strong>Open source.</strong> marimohub is licensed under Apache 2.0 and runs in your cloud</p><p>or on your hardware.</p></li></ul>\n<p>marimohub is available today on GitHub, with deployment guides and a live configuration generator in the documentation.</p>\n<h2 id=\"bring-your-own-backends\">#Bring your own backends</h2>\n<p>Some teams want to self-host Kubernetes; others want serverless sandboxes. Some use a single public cloud, while others need an S3-compatible system inside their own network. A notebook platform should fit that stack, not replace it.</p>\n<p>marimohub treats its three external dependencies as replaceable backends:</p>\n<div class=\"table-wrap\"><table><thead><tr><th>Decision</th><th>Built-in options</th></tr></thead><tbody><tr><td><strong>Storage</strong></td><td>CoreWeave CAIOS, S3-compatible storage, Google Cloud Storage, Azure Blob Storage, filesystem, or Cloudflare R2</td></tr><tr><td><strong>Compute</strong></td><td>CoreWeave Sandboxes, W&amp;B, Modal, AWS ECS Fargate, Kubernetes, Docker, Podman, E2B, Cloudflare Containers, or local processes</td></tr><tr><td><strong>Identity</strong></td><td>OpenID Connect, trusted SSO proxies, Google IAP, or Cloudflare Access</td></tr></tbody></table></div>\n<p>Each backend sits behind a small TypeScript interface. The core notebook logic\ndoes not depend on vendor SDKs, so the same hub can be configured for the\nproviders you already use. Most deployments select adapters with <code>MARIMOHUB_*</code>\nenvironment variables and run the published container image or Linux binary.\nFor further customization, you can compose marimohub’s packages as a library\nwith your own backend adapters.</p>\n<p>The deployment guides cover a single Linux server, Helm, CoreWeave, Kubernetes, AWS, GCP, Azure, and Cloudflare.</p>\n<h2 id=\"one-object-store-no-database\">#One object store, no database</h2>\n<p>marimohub has no separate database. Notebook source, version history, snapshots, audit events, and coordination records all live in the storage backend.</p>\n<p>Back up the bucket to back up the hub. To restore, point a fresh deployment at a consistent bucket snapshot; there is no second database backup to reconcile. The API and web tier remain stateless and can scale horizontally behind a load balancer.</p>\n<p>This design requires a storage backend with atomic conditional writes.</p>\n<h2 id=\"team-workflows-ordinary-python-files\">#Team workflows, ordinary Python files</h2>\n<p>Underneath the projects, permissions, and scheduling, notebooks remain the same Python files you can run with marimo. marimohub adds team workflows, but does not change the original file format.</p>\n<h3 id=\"organize-work-and-access\">#Organize work and access</h3>\n<p>When you work with teams, it makes sense to structure the work into different projects. Projects in marimohub group related notebooks, members, integrations, and environment configuration. Add tags to keep a growing catalog navigable, or switch to a gallery view to browse notebooks by their outputs.</p>\n<p>App users can run shared apps without access to source code. Viewers can inspect notebooks and saved outputs, editors can change them, and managers control membership and sharing.</p>\n<h3 id=\"keep-a-version-trail\">#Keep a version trail</h3>\n<p>Each edit session records a notebook version in storage. Compare versions side by side, inspect the code that changed, and restore an earlier version when an experiment takes a wrong turn.</p>\n<p>Notebooks can also track a GitHub repository. Pull the latest commit from GitHub or push a repository archive from CI; each sync becomes a versioned record in the hub.</p>\n<h3 id=\"connect-data-once\">#Connect data once</h3>\n<p>A project manager connects databases, catalogs, query engines, object stores, and ML platforms once. Each new notebook session receives the applicable configuration. The Data page allows you to browse your SQL datasources or object stores. Add an AI provider to enable AI generated queries.</p>\n<p>Sensitive values can be encrypted or resolved from external secret stores. For cloud access, short-lived federated credentials let notebooks reach approved resources without copying long-lived keys into the sandbox.</p>\n<h3 id=\"publish-an-app-without-exposing-source\">#Publish an app without exposing source</h3>\n<p>Any notebook can run as an interactive app for people who do not need the editor. App users see controls and outputs, while their role denies access to modifying the notebook.</p>\n<p>marimohub handles app deployment, seamless version transitions (blue/green-style rollouts), reclamation of idle compute, and horizontal scaling based on user count.</p>\n<h3 id=\"automate-notebooks-and-hand-work-to-agents\">#Automate notebooks and hand work to agents</h3>\n<p>Turn a notebook into a recurring job without rewriting it as a separate\npipeline. Each run records the notebook version it started from, accepts\nparameters through <code>mo.cli_args()</code>, executes in a fresh sandbox, and keeps its\nrendered output and logs. Jobs support timeouts, retries, concurrency limits,\nand manual or cron-based execution.</p>\n<p>marimohub also includes an optional MCP server. With the connected user’s permissions, an agent can discover notebooks, read or update source, start a session, execute code, and create or monitor jobs.</p>\n<p>Operators can also provide managed AI through OpenAI-compatible providers. The upstream key stays on the marimohub server; notebook sessions receive short-lived credentials instead.</p>\n<h2 id=\"ready-to-operate\">#Ready to operate</h2>\n<p>marimohub ships health checks, authenticated dependency checks, OpenTelemetry traces, metrics and logs, audit events, startup diagnostics, session limits, and warm sandbox pools. A maintenance worker saves active editors, reclaims idle sandboxes, and dispatches scheduled jobs, while stateless API replicas serve users.</p>\n<p>Read the security and operations guides before a production rollout.</p>\n<h2 id=\"choosing-between-marimo-molab-or-marimohub\">#Choosing between marimo, molab, or marimohub</h2>\n<p>There are many ways to run marimo, but there are different use-cases that we have in mind for our tools.</p>\n<p>marimo is the open-source reactive notebook itself. You can run it locally, put it in Git, and deploy it wherever you like.</p>\n<p>molab is our hosted service for creating and sharing notebooks without operating infrastructure. At the time of writing it also offers free GPUs.</p>\n<p>marimohub is for teams that want a shared notebook platform on infrastructure that they control. You operate the storage, compute, and identity providers; marimohub connects them into one system.</p>\n<h2 id=\"try-marimohub\">#Try marimohub</h2>\n<p>The development stack requires Node 24+ or newer, pnpm 10+, and <code>uv</code>. Clone the repository and run:</p>\n<p>This starts marimohub with in-memory storage, local compute, and development authentication. It is intentionally non-durable and meant only for evaluation. The getting-started guide walks through choosing production storage, compute, and identity backends, then generates the configuration for your deployment.</p>\n<p>We’re developing marimohub in the open. If you run into a problem or want to help shape what comes next, star the repository, read the contributing guide, or open an issue.</p>","headings":[{"level":1,"text":"Introducing marimohub","id":"introducing-marimohub"},{"level":2,"text":"#Bring your own backends","id":"bring-your-own-backends"},{"level":2,"text":"#One object store, no database","id":"one-object-store-no-database"},{"level":2,"text":"#Team workflows, ordinary Python files","id":"team-workflows-ordinary-python-files"},{"level":3,"text":"#Organize work and access","id":"organize-work-and-access"},{"level":3,"text":"#Keep a version trail","id":"keep-a-version-trail"},{"level":3,"text":"#Connect data once","id":"connect-data-once"},{"level":3,"text":"#Publish an app without exposing source","id":"publish-an-app-without-exposing-source"},{"level":3,"text":"#Automate notebooks and hand work to agents","id":"automate-notebooks-and-hand-work-to-agents"},{"level":2,"text":"#Ready to operate","id":"ready-to-operate"},{"level":2,"text":"#Choosing between marimo, molab, or marimohub","id":"choosing-between-marimo-molab-or-marimohub"},{"level":2,"text":"#Try marimohub","id":"try-marimohub"}]}}