Skip to main content

margot

PyPI version Python versions License CI Docs Downloads Container Codecov GitHub stars GitHub forks GitHub issues Ruff uv pytest

margot is a developer CLI for building and publishing Margo application packages as OCI artifacts. It handles packaging, tagging, and pushing/pulling to any OCI-compliant registry.

Documentation · PyPI

Install

From PyPI

pip install margo-tooling

Or with uv:

uv tool install margo-tooling

Or with pipx:

pipx install margo-tooling

With a container

Every release publishes a container image to GHCR. Mount your project directory into /workspace:

podman run --rm -v "$PWD":/workspace ghcr.io/karnarokepoch/margot:latest --help

Pin to a specific version instead of latest for reproducible builds, e.g. ghcr.io/karnarokepoch/margot:1.0.0.

From source

git clone https://github.com/karnarokEpoch/margot.git
cd margot
uv sync

Usage

$ margot --help

 Usage: margot [OPTIONS] COMMAND [ARGS]...

 Margo application package developer CLI.

╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --version             -V        Print version and exit.                     │
│ --verbose             -v        Enable verbose output (step-level info).     │
│ --debug               -d        Enable debug output (infra-level detail,     │
│                                  implies --verbose).                         │
│ --install-completion            Install completion for the current shell.    │
│ --show-completion                Show completion for the current shell, to  │
│                                  copy it or customize the installation.      │
│ --help                -h        Show this message and exit.                 │
╰────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ─────────────────────────────────────────────────────────────────────╮
│ fetch     Fetch and display the manifest of an OCI artifact.                  │
│ build     Build Margo application package types locally.                     │
│ push      Push built Margo application artifacts to an OCI registry.         │
│ pull      Pull OCI artifact layers to a local directory.                     │
│ package   Bundle built artifacts into an offline .tgz for disconnected      │
│           deployment.                                                        │
│ verify    Validate the Margo application description against the Margo spec │
│           schema.                                                            │
│ describe  Describe a Margo application description in rich, structured      │
│           output.                                                           │
│ auth      Manage OCI registry credentials.                                  │
╰────────────────────────────────────────────────────────────────────────────────╯

A minimal project

A Margo project is described by a margo.yaml file at the project root:

nginx-helm/
├── margo.yaml
└── margo/
    └── app.yaml.jinja
# margo.yaml
apiVersion: v1
id: com-example-nginx
name: nginx
version: "1.0.0"
appVersion: "1.27.0"
description: "NGINX web server deployed via Helm chart"
repository: public.ecr.aws/g2n4p2m7/margo

Validate the application description

margot verify

Validates app.yaml (or app.yaml.jinja, rendered on the fly) against the upstream Margo spec schema — no network access, no prior build required.

Inspect it visually

margot describe

Renders the descriptor as structured panels and trees: identity, deployment profiles, configuration (settings, schemas, parameters), and extensions.

Build and push

margot build
margot push

build renders the descriptor and stages it under build_dir. push publishes the artifact via ORAS to the registry declared in margo.yaml, tagged with version:

public.ecr.aws/g2n4p2m7/margo:1.0.0

Log in first if the registry requires auth:

margot auth login

Package for offline delivery

margot build
margot package

package collects everything build produced and bundles it into a single <id>-<version>.tgz — for deployment in disconnected environments without registry access. The bundle is written to .dist/<version>/ by default:

.dist/1.0.0/com-example-nginx-1.0.0.tgz

Pass --output to write it elsewhere. A bundle is never pushed to a registry.

Pull and inspect a published artifact

margot pull public.ecr.aws/g2n4p2m7/margo:1.0.0 --output ./out
margot fetch public.ecr.aws/g2n4p2m7/margo:1.0.0

pull writes the artifact's layers to disk as-is (no extraction). fetch prints the raw manifest JSON for a quick remote inspection, without pulling anything.

Shell completion

Enable shell tab completion for margot commands and flags:

# Quick setup — appends to your shell's rc file directly
margot --install-completion

# Manual setup — prints the script; redirect it wherever you source completions from
margot --show-completion bash > ~/.local/share/bash-completion/completions/margot

Both methods require a shell restart or re-sourcing the rc file to take effect. --show-completion takes a shell argument (bash, zsh, fish, powershell, or pwsh) and prints the completion script to stdout.

--install-completion has no --path option — it always appends to the shell's default rc file (e.g. ~/.bashrc). If you curate your own rc includes rather than a raw rc append, use --show-completion instead and redirect the output to your preferred location.

Learn more

  • Documentation — full command reference, margo.yaml reference, configuration, and worked examples (Helm, Compose, Quadlet, multi-component).
  • ROADMAP.md — planned features, fixes, and ideas.
  • CONTRIBUTING.md — development setup, testing, release process.
  • CODE_OF_CONDUCT.md — community standards.

License

Apache License 2.0

Metadata

Release files for margo-tooling 0.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for margo-tooling 0.9.0
File Size Uploaded
margo_tooling-0.9.0.tar.gz 406.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for margo-tooling 0.9.0
File Interpreter ABI Platform
margo_tooling-0.9.0-py3-none-any.whl Python 3 none any Details

Total release size: 526.0 kB

Release files / margo_tooling-0.9.0.tar.gz

Download URL margo_tooling-0.9.0.tar.gz
Size 406.1 kB
Tags Source
SHA-256 checksum
How to use checksums
f8ee728143a37c2d651a01ac1fe48c2bf4179aa0531b9ab8b1126a9964b8a4a9
BLAKE2b-256 checksum
How to use checksums
15aaf04a83be24acaa6b05daed2637c5336ce29b01882e31d5b5f28949a47a9a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / margo_tooling-0.9.0-py3-none-any.whl

Download URL margo_tooling-0.9.0-py3-none-any.whl
Size 119.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f8bbe8fde0d354c4f4aac06230007219fbd81f0f354e04b086303c89c5d6581a
BLAKE2b-256 checksum
How to use checksums
15df196a5d873b8ae7d0219da5be4a2cb573150be05d28a0d45b1416ec4254c5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.9.0 This release

2 release files

0.8.0

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.2

2 release files

0.5.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page