19 stable releases
Uses new Rust 2024
| 2.14.0 | Nov 24, 2025 |
|---|---|
| 2.12.1 | Jun 28, 2025 |
| 2.11.2 | Mar 27, 2025 |
| 2.8.0 | Dec 6, 2024 |
| 2.1.1 |
|
#58 in Command line utilities
278 downloads per month
2MB
14K
SLoC
Komac: Smart Manifest Automation for WinGet
A fast, intelligent CLI to create and submit WinGet manifests.
Think: automation, deep installer analysis, and zero YAML wrangling.
β‘ Quick start
# 1. Install komac
winget install komac
# 2. Set your GitHub token
komac token add
# 3. Update a package
komac update Package.Identifier --version 1.2.3 --urls https://example.com/installer.exe
π― Features
- π Advanced installer analysis
- π Cross-platform support (Windows, Linux, macOS)
Installation
Komac is cross-platform and binaries are built for Windows, Linux, and macOS.
All platforms
If you have cargo installed, you can compile Rust for any platform:
cargo install --locked komac
Komac also supports cargo-binstall:
cargo binstall komac
Nightly
Nightly releases that are built every week are available here. These are useful for debugging or if you want the latest features and fixes.
Windows
Both portable EXEs and installers are available from the releases.
WinGet
winget install komac
Scoop
scoop install komac
Linux
Portable binaries are available from the releases.
Debian (.deb)and Red Hat (.rpm) installers are also available.
macOS
Portable binaries for macOS are available from the releases.
Homebrew
brew install komac
GitHub Token Setup
komac needs a classic GitHub token to submit PRs to winget-pkgs.
This should be a classic token with the public_repo scope.
Adding to komac:
komac token add
Why not fine-grained tokens?
Whilst Komac can fully create manifests and commit with a fine-grained token, it fails to create a pull request to winget-pkgs. This may change as fine-grained tokens improve. See https://github.com/russellbanks/Komac/issues/310.
Commands
Full Command List
| Command | Description | Usage |
|---|---|---|
| New | Create a package from scratch | new |
| Update | Update a pre-existing package in winget-pkgs | update |
| Remove | Remove a version from winget-pkgs | remove |
| Sync Fork | Syncs your fork of winget-pkgs to microsoft/winget-pkgs | sync-fork, sync |
| Branch Cleanup | Deletes branches that have had a merged or closed pull request to winget-pkgs | cleanup |
| List Versions | Lists all the versions for a given package | list-versions, list |
| Analyse | Analyses a file and outputs information about it. Useful for debugging | analyse |
| Token update | Update stored GitHub OAuth token | token update |
| Token remove | Delete stored GitHub OAuth token | token remove |
| Complete | Outputs an autocompletion script for the given shell | complete, autocomplete |
komac new
Creates a new package from scratch.
komac new
komac update
Add a version to a pre-existing package:
komac update Package.Identifier --version 1.2.3 --urls https://www.example.com/installer.exe https://www.example.com/installer.msi --submit
| Parameter | Usage | Notes |
|---|---|---|
| Package Identifier | komac update Package.Identifier |
|
| Version | --version |
|
| URLs | --urls |
URLs are delimited by a space |
| Automatically submit | --submit |
|
| Token (if one is not already stored) | --token |
Komac will check for a GITHUB_TOKEN environment variable |
komac sync
Updates your fork of winget-pkgs to be up-to-date with microsoft/winget-pkgs.
komac sync
Feature Comparison π
While other manifest creation tools have made a solid foundation for the manifests in winget-pkgs, their development pace is slower and lacks the deeper installer analysis that komac is capable of.
| Komac | WingetCreate | YamlCreate | |
|---|---|---|---|
| Parameters | β | β | β |
| Download progress bar & ETA | β | β | β |
| Fully cross-platform | β | β | Limited |
| Works without Git | β | β | β |
| Full Inno Setup value retrieval | β | β | β |
| Full MSI value retrieval | β | Partial | Partial |
| Linux & macOS MSI support | β | β | β |
| Full MSIX value retrieval | β | Partial | Partial - https://github.com/Trenly/winget-pkgs/issues/180 |
| Get information from GitHub | β | β | β |
| Formatted GitHub release notes retrieval | β | β | β |
| Release date identification | β | β | β |
| No telemetry | β | β [^1] | β |
| Fully standalone (w/o winget-pkgs clone) | β | β | β |
| Inno setup detection | β [^2] | β | β [^3] |
| Nullsoft detection | β [^2] | β | β [^3] |
| Burn installer detection | β [^2] | β | Opt-in feature (not enabled by default due to slow processing) |
| Programming Language | Rust | C# | PowerShell |
[^1]: Telemetry is enabled by default in WingetCreate. Use wingetcreate settings to manually disable telemetry.
[^2]: There is much more accurate detection for Inno, Nullsoft, and Burn installers since Komac v2.
[^3]: The logic for this was contributed by me :)
Check issues that I've opened to request
this feature for YamlCreate.
GitHub Actions π
WinGet Releaser is a GitHub Action that invokes Komac, passing in your release's URLs. This completely automates publishing to WinGet.
Example π
name: Publish to WinGet
on:
release:
types: [ released ]
jobs:
publish:
runs-on: windows-latest
steps:
- uses: vedantmgoyal9/winget-releaser@main
with:
identifier: Package.Identifier
token: ${{ secrets.WINGET_TOKEN }}
# installers-regex: '\.exe$' # Only .exe files
Alternative actions π
- Run Komac manually: michidk/run-komac
- Automate releases for external repositories: michidk/winget-updater
How can I support Komac? β€οΈ
- β Star this project! :)
- π€ Sponsor this project through GitHub Sponsors
- π§βπ» Use Komac and create an issue for feature requests or bugs.
Star History β
License
Komac is Free Software: You can use, study share and improve it at your will. Specifically you can redistribute and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Dependencies
~85β115MB
~2M SLoC
