-
Notifications
You must be signed in to change notification settings - Fork 0
Deployment and Release
Devin edited this page Oct 4, 2026
·
1 revision
How universal-ai-config is packaged and distributed. For maintainers and release managers.
- Repository:
https://github.com/DevArtsLab/tool-universal-ai-config - PyPI name:
universal-ai-config(CLI command:ai-config)
| Channel | Install command | Status |
|---|---|---|
| PyPI |
uv tool install universal-ai-config, pipx install, pip install
|
Automated on tag |
| GitHub Releases | Standalone binaries ai-config-<os>-<arch>
|
Automated on tag |
| curl installer | curl -fsSL .../install.sh | bash |
Uses uv/pipx when present |
| Homebrew | brew install DevArtsLab/tap/ai-config |
Manual |
The publish workflow uses OIDC trusted publishing, so no API token is needed.
- Go to https://pypi.org/manage/account/publishing/
- Add a publisher:
- Owner:
DevArtsLab - Repository:
tool-universal-ai-config - Workflow:
publish.yml - Environment:
pypi
- Owner:
- In GitHub, create a
pypienvironment (Settings > Environments > New environment)
Fallback: create a PYPI_API_TOKEN repo secret and pass it to the publish step.
Everything is driven by git tags:
# 1. Bump version in pyproject.toml
# 2. Commit and push to main
# 3. Tag and push
git tag v0.1.1
git push origin v0.1.1The tag must match version in pyproject.toml or the workflow fails.
Pushing a v* tag runs .github/workflows/publish.yml, which:
- Verifies the tag matches
pyproject.toml - Builds sdist and wheel
- Publishes to PyPI via trusted publishing
- Builds PyInstaller binaries:
linux-x86_64,macos-x86_64,macos-arm64,windows-x86_64 - Smoke-tests each binary
- Creates a GitHub release with the binaries attached
pip install build twine
python -m build
twine upload dist/*Create DevArtsLab/homebrew-tap and add Formula/ai-config.rb:
class AiConfig < Formula
include Language::Python::Virtualenv
desc "Unified configuration management for AI agents"
homepage "https://github.com/DevArtsLab/tool-universal-ai-config"
url "https://files.pythonhosted.org/packages/source/u/universal-ai-config/universal_ai_config-0.1.1.tar.gz"
sha256 "REPLACE-WITH-SDIST-SHA256"
license "MIT"
depends_on "python@3.13"
def install
virtualenv_install_with_resources
end
test do
system bin/"ai-config", "--help"
end
endGet the sdist URL and sha256 from the PyPI files page and update them each release.
- PyPI trusted publisher configured (or
PYPI_API_TOKENsecret set) - GitHub
pypienvironment created - Tag push triggers
publish.ymlsuccessfully -
uvx ai-config --helpworks from PyPI - Release binaries download and run
-
install.shworks on a clean machine (uv, pipx, and bare-python paths)
- OIDC trusted publishing avoids long-lived PyPI tokens
- All downloads use HTTPS
- Workflow actions are pinned by major version tag; consider SHA pinning for stricter supply-chain control
DevArtsLab/tool-universal-ai-config | MIT License | pip install universal-ai-config