GitLab, Gitea & others
Molt releases from any CI, on any host. A native forge backend is what adds host-specific behavior on top of that: the release change-request, host releases, and rich author attribution. GitHub is the backend molt ships.
Releasing without a native backend
The core loop is host-independent. molt version,
molt publish, and molt git-tag read your repository, write
your manifests and changelogs, upload to PyPI, and push tags. None of that calls a code host. It
runs anywhere uv is installed: GitLab CI, Gitea Actions, Jenkins, Buildkite, a cron job, or your
laptop.
What you write yourself on a host without a backend is the release change-request step: opening or
updating the merge request that carries the version commit. That is a few lines of your host's own
CLI around molt version, and CI: GitHub Action
shows the portable shape.
What a native backend adds
A backend implements the host-agnostic contract from the forges overview:
GitLab merge requests, Gitea and Bitbucket pull requests, and Azure DevOps pull requests all fit this shape. The generic caching, retry, and backoff behavior from the overview lives in the shared client, so a backend inherits it rather than reimplementing it.
See also
- Forges overview -- the protocol and what each member does.
- GitHub -- the reference implementation.
- CI: GitHub Action -- the release loop, and the portable form of it.