Skip to main content

repomatic

Last release Python versions Downloads Unittests status Documentation status

A Python CLI and pyproject.toml configuration that let you release Python packages multiple times a day with only 2-clicks. Designed for uv-based Python projects, but usable for other projects too. Every step is a CLI command: reusable GitHub Actions workflows are only the trigger, so the same automation runs on your machine.

Maintainer-in-the-loop: nothing is done behind your back. Every change repomatic proposes arrives as a PR you review; every action it needs from you opens an issue.

What it automates

  • Version bumping, git tagging, and GitHub release creation
  • Changelog management
  • Python package building and PyPI publishing with supply chain attestations
  • Cross-platform binary compilation (Linux / macOS / Windows, x86_64 / arm64)
  • Formatting autofix for Python, Markdown, JSON, Shell, and typos
  • Linting: Python types with mypy, YAML, GitHub Actions, workflow security, URLs, secrets, and Awesome lists
  • Synchronization of uv.lock, GitHub Action pins, workflow version literals, and repomatic run tool versions with configurable stabilization cooldowns
  • Synchronization of .gitignore, .mailmap, and Mermaid dependency graph
  • Label management with file-based and content-based rules
  • Inactive issue locking
  • Static image optimization
  • Sphinx documentation building, deployment, and autodoc updates
  • Awesome list template synchronization

Why repomatic

repomatic does for the release process what ruff did for linting and uv did for packaging: replace a stack of single-purpose tools with one.

  • 23 third-party GitHub Actions replaced by internal CLI commands and SHA-256-verified binary downloads, keeping the supply chain attack surface minimal
  • 10 Python linters and formatters (pylint, pydocstyle, pycln, pyupgrade, isort, black, docformatter, mdformat-black, blacken-docs, mdformat-ruff) consolidated into ruff
  • 5 packaging and install tools (poetry, build, twine, check-wheel-contents, pip-audit) consolidated into uv
  • All uses: references pinned to full commit SHAs with stabilization windows before adopting new versions, managed entirely by self-hosted sync jobs
  • SLSA provenance attestations on every release artifact (wheels and compiled binaries)
  • VirusTotal scanning of compiled binaries to seed AV vendor databases and reduce false positives
  • Trusted Publishing for PyPI uploads: no long-lived tokens stored as secrets
  • Immutable releases enforced via GitHub's tag protection and release locking
  • Workflow security linting with zizmor on every push to catch dangerous triggers and excessive permissions
  • Credential scanning with gitleaks to prevent secret leakage
  • Single pyproject.toml configuration: no extra dotfiles, no JSON configs, no YAML presets to maintain
  • The CLI itself ships as standalone binaries (Linux / macOS / Windows, x86_64 / arm64): no Python environment needed to run it
  • 15+ code quality tools (ruff, mypy, biome, typos, mdformat, shfmt, yamllint, actionlint, lychee, oxipng, pyproject-fmt, labelmaker, gitleaks, zizmor) managed through one repomatic run <tool> interface with automatic installation and platform-specific binary caching

Quick start

$ cd my-project
$ uvx -- repomatic init
$ git add .
$ git commit -m "Add repomatic"
$ git push

Works for new and existing repositories. Managed files are always regenerated to the latest version; changelog.md is never overwritten. Push, and the workflows guide you through remaining setup via issues and PRs.

The workflows only call CLI commands, so every automated step can also be run and previewed locally:

$ uvx -- repomatic sync-deps --dry-run
$ uvx -- repomatic run ruff -- check

See repomatic init --help for available components and options.

Documentation

See the full documentation for:

Used in

Check these projects to get real-life examples of usage and inspiration:

Send a PR to add your project if you use repomatic.

Download files

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

Source Distribution

repomatic-7.14.0.tar.gz (882.9 kB view details)

Uploaded Source

Built Distribution

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

repomatic-7.14.0-py3-none-any.whl (1.0 MB view details)

Uploaded Python 3

File details

Details for the file repomatic-7.14.0.tar.gz.

File metadata

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

File hashes

Hashes for repomatic-7.14.0.tar.gz
Algorithm Hash digest
SHA256 50432d9ab2fa9882fe19050c765e8c016d2dbdcd57810dd8c9eca2a20f704d23
MD5 b5a3dc7e7df71b64adc8156c7eadd099
BLAKE2b-256 f9200348d70c9ad9f95e94112498a51eee9a27b6975e1d43f6a6103bd650303c

See more details on using hashes here.

Provenance

The following attestation bundles were made for repomatic-7.14.0.tar.gz:

Publisher: release.yaml on kdeldycke/repomatic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file repomatic-7.14.0-py3-none-any.whl.

File metadata

  • Download URL: repomatic-7.14.0-py3-none-any.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.4 {"installer":{"name":"uv","version":"0.12.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for repomatic-7.14.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2da7bc817479b974e684db5c5479dfd3f53f0a741425a3a6beaf1e71769f69cd
MD5 a1f7c92508f5cbb8bf44692fabcfbf2c
BLAKE2b-256 c2d7dccb4f4803be617daad8d2f9f8915002c127b647aa24665c2ec49d5920ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for repomatic-7.14.0-py3-none-any.whl:

Publisher: release.yaml on kdeldycke/repomatic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

7.14.0 This release

2 files

7.13.0

2 files

7.12.1

2 files

7.12.0

2 files

7.11.0

2 files

7.10.0

2 files

7.9.0

2 files

7.8.0

2 files

7.7.0

2 files

7.6.0

2 files

7.5.0

2 files

7.4.1

2 files

7.4.0

2 files

7.3.1

2 files

7.3.0

2 files

7.2.0

2 files

7.1.0

2 files

7.0.0

2 files

6.31.0

2 files

6.30.0

2 files

6.29.0

2 files

6.28.1

2 files

6.28.0

2 files

6.27.0

2 files

6.26.0

2 files

6.25.1

2 files

6.25.0

2 files

6.24.0

2 files

6.23.0

2 files

6.22.0

2 files

6.21.0

2 files

6.20.0

2 files

6.19.0

2 files

6.18.4

2 files

6.18.3

2 files

6.18.2

2 files

6.18.1

2 files

6.17.0

2 files

6.16.0

2 files

6.15.0

2 files

6.14.0

2 files

6.13.0

2 files

6.12.0

2 files

6.11.3

2 files

6.11.2

2 files

6.11.1

2 files

6.11.0

2 files

6.10.0

2 files

6.9.0

2 files

6.8.0

2 files

6.7.0

2 files

6.6.0

2 files

6.5.0

2 files

6.4.1

2 files

6.4.0

2 files

6.3.2

2 files

6.3.1

2 files

6.3.0

2 files

6.2.1

2 files

6.2.0

2 files

6.1.0

2 files

6.0.1

2 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