A macOS app that provides a beautiful SwiftUI interface for managing Python tools via Astral's excellent uv tool.
Alpha release. It should mostly work and do no harm, however the community is invited to co-test this with me. Please file issues in the official repo
In this repo's Releases page I will post notarized direct-download builds as a .zip artifact.
Unzip the download and move UV Manager.app to your /Applications folder. The release process below signs the app with a Developer ID Application certificate, submits it for notarization, and staples the notarization ticket so users do not need to disable Gatekeeper or strip the quarantine attribute manually.
- Download
UV Manager.zip, unzip it, moveUV Manager.appto/Applications, and open it normally. - macOS may still show the standard first-launch confirmation for apps downloaded from the internet. This is expected.
- Users should not need to disable Gatekeeper, remove the quarantine attribute manually, or use Terminal just to launch the app.
- On first launch, the app may take a moment while it checks for an existing
uvinstallation. - If
uvis not installed, the app may offer to install it. - Installing, upgrading, or removing tools requires network access and may take some time depending on package size and connection speed.
- Tool installs are intended to be user-level operations and should not normally require administrator access.
- This is still an alpha release, so users should expect some rough edges and should report issues if installs, upgrades, or tool detection behave unexpectedly.
The Python ecosystem has created incredibly powerful command-line tools, but there's a CLI barrier between these tools and the many users who could benefit from them.
The Problem: Python users—data analysts, data scientists, business users, and hobbyists—need Python tools but lack the software engineering background to comfortably navigate command-line interfaces, virtual environments, and package management. They shouldn't need to understand the intricacies of pip, venv, or PATH configurations just to use a CLI or script that they received from a teammate.
The Solution: UV Manager bridges this gap by providing a native macOS interface that makes Python tool management as simple as using any other Mac application. No terminal commands, no environment confusion, no cryptic error messages—just click to install, upgrade, or remove the Python tools you need.
- Data Analysts & Scientists who want to use tools like Jupyter, pandas utilities, or data converters without wrestling with package conflicts
- Business Users who need Python-based reporting or automation tools but aren't comfortable with terminal commands
- Educators & Students learning Python who can focus on using tools rather than managing installations
- Casual Hobbyists exploring Python tools for personal projects without the overhead of learning package management
- Mac Users who expect the polish and simplicity of native applications, not command-line interfaces
By wrapping the powerful UV package manager in an intuitive GUI, UV Manager expands inclusivity users beyond software engineers, making thousands of command-line tools accessible to users who would otherwise never discover or use them.
- UV Detection & Management: Automatically detects UV installations and allows version selection
- Tool Management: Install, upgrade, and uninstall Python tools with a native macOS interface
- Live Terminal Output: See real-time command execution with syntax highlighting
- Bulk Operations: Upgrade all tools at once with safety warnings
- PyPI Integration: Quick links to view packages on PyPI
- Accessibility: Full VoiceOver support and keyboard navigation
- Apple HIG Compliance: Native macOS design with smooth animations
- macOS 14.0 or later
- UV command-line tool (app will offer to install if missing) - pending verification this works
- Xcode with the Metal Toolchain component installed for release builds
- Open the package in Xcode
- Build and run (
⌘R)
These are the one-time local setup steps for producing a signed and notarized direct-download release outside the Mac App Store.
- Create a
Developer ID Applicationcertificate in Apple Developer. - Generate the CSR on this Mac in
Keychain Access > Certificate Assistant > Request a Certificate From a Certificate Authority.... - Download the issued
.cerfile from Apple and add it to theloginkeychain. - Confirm the signing identity is available locally:
security find-identity -v -p codesigning | rg 'Developer ID Application|TEAMID'- Install the Xcode Metal Toolchain component:
xcodebuild -downloadComponent MetalToolchain
xcodebuild -showComponent MetalToolchain -json- Create an Apple app-specific password at account.apple.com.
- Store notarization credentials in the local keychain:
xcrun notarytool store-credentials YOUR_NOTARY_PROFILE \
--apple-id "YOUR_APPLE_ID" \
--team-id "YOUR_TEAM_ID" \
--password "YOUR_APP_SPECIFIC_PASSWORD"- Verify the notarization profile works:
xcrun notarytool history --keychain-profile YOUR_NOTARY_PROFILERun the release script with the local signing identity and stored notarization profile:
DEVELOPER_ID_APP='Developer ID Application: Your Name (TEAMID)' \
NOTARY_KEYCHAIN_PROFILE=YOUR_NOTARY_PROFILE \
./build_release.shThe script will:
- build a universal Release app
- sign the app with the
Developer ID Applicationcertificate - submit the ZIP archive for notarization with
notarytool - staple the notarization ticket to the app
- rebuild the final ZIP for distribution
Artifacts are written to:
release/UV Manager.apprelease/UV Manager.zip
- SwiftUI + MVVM: Modern declarative UI with observable view models
- Process/NSTask: Safe execution of UV commands
- Async/await: Clean asynchronous operations
- Combine: Reactive data flow
Software engineering adjacent Python users who may not understand software packaging:
- Data Analysts
- Data Scientists
- Business Users
- Casual hobbyists
The goal is to make Python tools accessible to a broader audience than software engineers and Python developers.
MIT
