| Field | Value |
|---|---|
| Priority | 1 |
| Effort | Small |
| Impact | Critical |
| Status | Done |
| Depends on | — |
The current install path requires Docker or Go 1.25 — a significant adoption barrier. Most developer tools can be installed in under 10 seconds. Every extra step between "I want to try this" and "it's running" loses potential users. Zero friction = higher conversion from README visitor to actual user.
GoReleaser cross-compiles pre-built binaries for 5 platform pairs, published as GitHub Releases with SHA256 checksums.
| Method | Platform | Command | Status |
|---|---|---|---|
| Install script | Linux / macOS | curl -sSfL .../scripts/install.sh | sh |
Done |
| Go install | Any | go install github.com/artyomsv/quil/cmd/quil@latest |
Done |
| GitHub Release | Any | Download from Releases page | Done |
| Homebrew | macOS / Linux | brew install artyomsv/tap/quil |
Deferred (needs external repo) |
| Winget | Windows | winget install quil |
Deferred (needs Microsoft Store) |
| Scoop | Windows | scoop install quil |
Deferred (needs external repo) |
Build matrix:
linux/amd64,linux/arm64darwin/amd64(Intel),darwin/arm64(Apple Silicon)windows/amd64- Two binaries per platform:
quil(TUI) andquild(daemon) .tar.gzfor Unix,.zipfor Windows- SHA256 checksums in
checksums.txt - Version injected via
-ldflags "-s -w -X main.version={{.Version}}"
Single workflow with two jobs:
releasejob — triggers on push to master, analyzes conventional commits, bumps version, updatesVERSION+CHANGELOG.md, commits, tags, pushesgoreleaserjob — runs after release job, checks out tagged commit, runs GoReleaser, publishes GitHub Release with archives and checksums
Note: both jobs are in one workflow because tags pushed with GITHUB_TOKEN don't trigger other workflows.
POSIX shell script:
- Detects OS (
uname -s) and architecture (uname -m) - Fetches latest version from GitHub API (supports
GITHUB_TOKENfor rate limiting) - Downloads archive + checksums, verifies SHA256
- Installs to
~/.local/bin/(configurable viaQUIL_INSTALL_DIR) - Supports pinned versions via
QUIL_VERSIONenv var
Both quil and quild have var version = "dev" overridden at build time. Consistent -ldflags injection across all build paths: GoReleaser, dev.sh, dev.ps1, rebuild.ps1, Makefile.
- All GitHub Actions pinned to immutable commit SHAs
- Per-job
permissions: contents: write(least-privilege) - Version format validated before use in shell commands
- GitHub Release page shows all 5 platform binaries with checksums
- README "Quick Start" section updated with one-line install
- Install script detects OS/arch, downloads, verifies checksum, installs
-
quil versionandquild versionreport correct version -
brew install artyomsv/tap/quilworks (deferred — needs Homebrew tap repo) -
winget install quilworks on Windows (deferred — needs Microsoft Store)
- Homebrew tap — needs
artyomsv/homebrew-taprepo with formula - Scoop bucket — needs
artyomsv/scoop-bucketrepo - Winget manifest — needs Microsoft Store submission
- Custom domain —
get.quil.devredirect to raw install script