Skip to content

Conversation

@rodrigosf672
Copy link
Member

@rodrigosf672 rodrigosf672 commented Dec 12, 2025

Marimo Integration Experiment (Phase 1)

Screenshot of recording I made. If interested, message me and I can provide the 4-min video.
image

This extension provides Phase 1 Marimo integration for Positron.

Behavior:

  • Detects Marimo notebooks as .py files containing import marimo.
  • positron.marimo.openInViewer opens the file using marimo edit <file> in an integrated terminal (viewer-only; does not execute on open). Note: Currently, the user needs to manually click "Open in Viewer" to view the app. Automatic opening in the viewer is not yet implemented, but I'm getting close to it.
    • Currently, as a workaround, user could Cmd+Click the link and 'Open in the Viewer pane'.
  • positron.marimo.run runs marimo run <file> in an integrated terminal (explicit run). A matching positron.marimo.stop command disposes the terminal to stop the session.

Constraints:

  • Uses only the official marimo CLI binary available on PATH.
  • Does not embed any Marimo runtime, start background servers, or mutate files.
  • Uses --headless argument to prevent marimo from opening in the browser.
  • While copying text from marimo works (via Cmd+C), copy button functionality does not work.

Error handling:

  • CLI detection failures and CLI errors are surfaced via error messages and an output channel. No silent retries are performed.

Configuration:

  • positron.marimo.viewerArgs: array of extra args passed to marimo edit (for example ["--no-token"] to avoid an access token being required by the viewer).
  • positron.marimo.runArgs: array of extra args passed to marimo run.

@github-actions
Copy link

github-actions bot commented Dec 12, 2025

E2E Tests 🚀
This PR will run tests tagged with: @:critical

readme  valid tags

Copy link
Contributor

@isabelizimm isabelizimm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be cool to have marimo support! This is a great start 💯

For a first pass of running marimo natively, I don't think we'll need any of the code in the positron-notebooks extension. That way it can follow the structured setup for other web apps.

You added the command correctly to the package.json, but you'll also want to specifically add it to the play button as well, like other app frameworks

"command": "python.execStreamlitInTerminal",
"group": "Python",
"when": "pythonAppFramework == streamlit"
},

I'm less familiar with how the viewer is actually spawned via the positron-run-app extension, but there may need to be some fiddling to make sure the URL goes to the correct spot. If I had to guess, we'll want to run the app headlessly, and then make sure the url can be properly discovered up by that extension.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

test and adapt marimo support within positron (experimental)

3 participants