Skip to content

docs: discussion doc on alternative distribution mechanisms for the cli#709

Open
aorumbayev wants to merge 3 commits intomainfrom
adr/uv-distribution
Open

docs: discussion doc on alternative distribution mechanisms for the cli#709
aorumbayev wants to merge 3 commits intomainfrom
adr/uv-distribution

Conversation

@aorumbayev
Copy link
Contributor

ADR for discussion on replacing and improving current distribution mechanisms

Create a non formal .md file providing an analysis of options available to simplify algokit cli distribution to achieve the following:

- Complex multi tool distribution pipeline that requires apple developer account, canonical account and dealing with winget which in result only gives the end user a binary that still would not handle python installation for them after they jump into ide where an algokit example or a template has been scaffolded.
- Acknowledge that pyinstaller was the most mature thing available at the time of implementing binary mode support but as of 2026 a few alternatives are available.

Option A -> go over the codebase check the .github folder check all brew winget and pyinstaller related code including the tests in pytest that only run on pyinstaller binaries. Asses what would need to change if we are to do a switch to https://github.com/aorumbayev/uvget or a system similar to that (a single bash for unix and pwsh for windows - that take care of not just tool install like uvx or uv tool insall put pulling the uv itself and pulling the required python version for algokit to function then install the alogkit from pip). This allows dropping brew winget snap and pipx and simmply provide this single command (along with uv tool install algokit) to everyone. But must be phased so initially uv based installation is introduced and all other installation options moved to legacy and are explicitly marked for removal in next major updated (make the point for we dont have to break and remove what already works instantly). How would we make it smooth for people who had algokit installed via brew winget and etc?

Option B. we continue distribution of binaries BUT only via curl with gpg signed executables from gh releases by leveraging https://ofek.dev/pyapp/latest/. This removes brew winget snap but we are still dealing with binaries but pyapp does dynamic python resolution so evaluate if this is fundamentally inferior to the approach with option A.

C. Leave it as is and continue distributions of binaries but change default pip installation from pipx to uv tool install

Create a laconic, easy to read, easy to approach by engineers working on this codebase document that ouytlines the options for the team to decide in and md file commit that and complete the task
@aorumbayev aorumbayev changed the title docs: create a non formal .md file inspired by ADRs in docs docs: discussion doc on alternative distribution mechanisms for the cli Feb 5, 2026
@github-actions
Copy link

github-actions bot commented Feb 5, 2026

Coverage

Tests Skipped Failures Errors Time
593 0 💤 0 ❌ 0 🔥 1m 21s ⏱️

@aorumbayev aorumbayev marked this pull request as ready for review February 5, 2026 10:05
@joe-p
Copy link
Contributor

joe-p commented Feb 6, 2026

Option A sounds good with me. How do we currently handle Puya? It would be nice to align binary distribution.

@lempira
Copy link
Contributor

lempira commented Feb 24, 2026

Option A sounds good to me as well. I like the idea of having uv handling the Python distributions. I'm still a little bit unsure about all the migration paths, but I am sure we can figure that out during the implementation.

@mrcointreau
Copy link

If I understood correctly the option A would allow us to replace the binary shipping with a bootstrap script that 1. installs uv, 2. installs python using uv and 3. installs algokit using uv, right? In that case this would allow us to get rid of PyInstaller, code signing, brew, snap and winget at once, I mean, to me this looks like a no-brainer (but I might be missing more than something)

@aorumbayev
Copy link
Contributor Author

@lempira i pushed a commit updating that we agreed on option A, let me know if i can merge

Copy link
Contributor

@lempira lempira left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We decided on option A.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants