Publishing a profile

Publishing makes a native OMP profile discoverable through OOMPF while keeping the canonical YAML on GitHub.

oompf publish work

work is the profile’s native name, the same name you use with omp --profile work. OOMPF asks OMP where the profile lives rather than taking a file path.

Omitted input

If you run oompf publish without a name, OOMPF automatically uses the sole publishable profile. With multiple profiles it opens a selector only in an interactive terminal; --json, CI, and piped execution return ambiguous_profile instead of prompting.

What happens

  1. Local validation. The artifact is validated structurally and scanned for secrets before anything leaves your machine. A blocking secret finding stops the publish.
  2. Gist creation. The validated YAML is uploaded as a public GitHub Gist. GitHub assigns it an owner, an id, and a revision (git SHA).
  3. Registration. OOMPF fetches the canonical Gist, re-validates it, extracts facts and any oompf metadata, and indexes the metadata only. It records the canonical source URL, the pinned revision, and a SHA-256 fingerprint.

The command prints the canonical profile URL, https://oompf.run/p/<id>.

Publishing the same profile again

A second oompf publish work updates the Gist the first one created instead of making another: the file is patched in place, the same source URL is re-registered, and the /p/<id> link you already shared keeps working with the new bytes and a new revision. Publish output reports publication: updated so an update is distinguishable from a first publication.

The Gist a profile was published to is remembered locally in ~/.oompf/publications.json, keyed by native profile name. Delete the file or an entry and the next publish starts a new identity — the previous link keeps serving the bytes it already had. Pass --new to publish a separate profile from the same source deliberately.

If the remembered Gist has been deleted, made private, or transferred to another account, publish reports missing_gist or unowned_gist rather than quietly creating a second identity.

A profile that is already a Gist

If the YAML is already in a public Gist, skip the CLI: paste the Gist URL into Register a Gist. That path indexes the metadata of an existing Gist; it never creates one, and it cannot read a local profile.

Notes

  • OOMPF does not invent an OMP runtime version. If your profile carries a config marker such as setupVersion, it stays a config marker and is not reported as the OMP version.
  • A first publication creates one new public Gist; republishing the same profile patches that Gist instead of creating another.
  • The canonical artifact always lives at its Gist. OOMPF stores no YAML bytes.

See Installing a profile and Provenance and revisions.