Skip to main content

Git-free marimo notebook sharing via GitHub

Project description

⚓ mooring

Git-free marimo notebook sharing via GitHub.

Mooring is a single-file app (mooring.pyz / mooring.exe) that lets a team of data analysts pull, edit, and push marimo notebooks stored in a shared GitHub repo — without git installed on their machines. All sync happens over the GitHub REST API; the only requirement on an analyst's machine is Python 3.12.

Double-clicking the app opens a local browser hub: log in to GitHub with a one-time device code, see every team notebook with its sync status, pull the latest, open notebooks in the bundled marimo editor, and push your changes back — one commit per file, with conflicts detected and resolved per file (never silently overwritten).

How it works

  • One shared team repo (e.g. your-org/notebooks) holds notebooks/ and data/ folders. Everyone pulls from and pushes to it.
  • No git anywhere. Pull walks the repo tree via the GitHub Git Data API and downloads only changed blobs; push uses the Contents API with the file's last-known SHA, so GitHub itself rejects writes that would clobber someone else's change.
  • Conflicts are explicit. Pull never overwrites local edits; push blocks conflicted files, offering per-file resolution.
  • Frozen package stack. Notebooks can import anything bundled into the artifact (polars, altair, plotly, openpyxl, fastexcel, requests, plus the standard library). There is no pip at runtime.

Documentation

Full docs live in docs/ and build into a searchable site with zensical:

Build & preview the docs

uv sync
uv run zensical serve     # live-reloading preview at a local URL
uv run zensical build     # static site into ./site

.github/workflows/docs.yml publishes the site to GitHub Pages on every push to the default branch.

Develop

uv sync                                  # install everything
uv run pytest                            # unit tests (no network needed)
uv run ruff check src tests              # lint
uv run mooring hub                       # run the hub from source

See contributing for the architecture, integration testing, and project conventions.


Built with moonlit.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mooring-0.2.2.tar.gz (112.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mooring-0.2.2-py3-none-any.whl (41.2 kB view details)

Uploaded Python 3

File details

Details for the file mooring-0.2.2.tar.gz.

File metadata

  • Download URL: mooring-0.2.2.tar.gz
  • Upload date:
  • Size: 112.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for mooring-0.2.2.tar.gz
Algorithm Hash digest
SHA256 b43bc46b4f84fa220f8a9b6a5f3f4f1457b80475a8df3e29a8501dcd85b2eb47
MD5 f3559c84d54cbf80051f6ef604c65a98
BLAKE2b-256 ac49a8c9f34c21730693a1d497f562ac9ad80adc05866aed3a9f6d7c2a287129

See more details on using hashes here.

File details

Details for the file mooring-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: mooring-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 41.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for mooring-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 897d9166e119e9f0b1c5f54bbde977d48b51d3b6ac5495726756013573b0319c
MD5 df20b31b92a4650ac1c4661eea0dfa62
BLAKE2b-256 9a13e4cd6d2230ea33eda0aa0b9b5c5ec4aae371ac6fd3a9d55189c145d9db9d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page