The alternative Arch Linux package manager Shelly has been fully rewritten in Zig, replacing its C# and .NET foundation with ahead-of-time compiled native code in the newly released version 3.0. The update, which arrives less than three weeks after a maintenance patch, eliminates the managed runtime dependency and touches every component—CLI, GTK4 GUI, and keyring helper.

A full stack swap: Zig replaces C# everywhere

Shelly 3.0 is not an incremental update. Seafoam Labs rebuilt the entire project in Zig, a systems programming language known for its performance and safety, dropping the previous mix of C# and the .NET 10 runtime from the main application path. The CLI, GTK4 graphical interface, package management engine, and keyring tool all now compile to native binaries ahead of time.

The user-facing commands remain unchanged: shelly in the terminal and shelly-ui for the GUI. But under the hood, you’re no longer launching a managed runtime. The result is a single build-and-test workflow that covers all components, which should streamline maintenance and release consistency moving forward.

This isn't just an academic exercise. The move shrinks the dependency footprint and sidesteps the overhead of a JIT-compiled runtime. For daily package operations—syncing repositories, installing updates, querying the AUR—the native code path can feel snappier, especially on lower-resourced systems or containers.

What the rewrite means for your daily package management

If you’re an Arch Linux or CachyOS user, the practical impact of version 3.0 depends on how you use Shelly. Here’s how the changes break down for different workflows:

GUI-first users
The GTK4 interface has been overhauled alongside the backend. You’ll now see list and grid views when browsing packages, richer detail pages for AUR packages, and a smoother first-run experience that auto-saves your settings. AppImage installation is safer, and Flatpak support—while refined—is genuinely optional. You can now use Shelly solely for native Arch repos and the AUR without pulling in Flatpak dependencies, a nod to users who prefer a lean system.

Terminal loyalists
The CLI rewrite adds several quality-of-life features: import and export of package backup lists, Bash completion generation, and more explicit transaction previews. Before you commit to an upgrade or removal, Shelly now shows a clearer summary of what will change. New commands for package marking, downgrades, and keyring management put more control into scripts and workflows. Repository synchronization can run in parallel, and handling for ignored packages and groups has been tightened—small tweaks that reduce frustration when you’re managing complex system configurations.

System administrators and minimalists
The decoupling of Flatpak support is a big win. You can avoid the additional runtime entirely, which matters on servers or stripped-down installations where every dependency counts. The rewritten keyring helper and parallel sync can speed up maintenance across multiple machines, and the backup export feature is a simple way to replicate package selections. Security-conscious admins will also appreciate that Shelly retains its PostInstallValidator and HomographValidator from earlier versions—these scan PKGBUILD scriptlets for suspicious network activity and detect IDN spoofing attacks, adding a layer of auditing that pacman does not provide by default.

AUR enthusiasts
Shelly 3.0 continues to blur the line between official repositories and the AUR. The GUI presents all sources as one workflow, and the underlying engine improves AUR package handling with better error recovery and network behavior. The adoption of a “Happy Eyeballs” strategy for network connections—attempting IPv4 first with a 3-second fallback to IPv6—helps on flaky dual-stack setups, making AUR builds and downloads more reliable.

From C# experiment to Zig-native: Shelly’s path to 3.0

Shelly first emerged as a project that dared to use modern tooling—C# and .NET—for a fundamental Linux utility. That approach gave it rapid iteration and a polished GUI early on, but it also saddled the package manager with a heavy runtime and complex build process. By July 13, 2026, when version 2.4.1.3 shipped with bug fixes and French translations, the codebase was already 80.6% Zig and only 18.3% C#. The team had been gradually replacing components, and the final leap to version 3.0 merely completed that transition.

The speed of the rewrite is notable. In 16 days, Seafoam Labs went from a patch release to a ground-up rebuild, suggesting that the Zig migration had been happening in parallel for some time. The project’s GitHub repository shows over 3,240 commits and 88 releases, indicating a fast-paced development cycle that now benefits from a uniform codebase.

Licensed under GPL-3.0 and community-funded through Buy Me a Coffee, Shelly remains an independent effort. It’s not a pacman wrapper but a direct interface to libalpm, which means it talks to the package management library without intermediary scripts. That architectural choice, combined with Zig’s low-level efficiency, could make it an appealing alternative for users who want a native-feeling tool that integrates multiple sources without sacrificing speed.

Getting started with Shelly 3.0: installation and first steps

Upgrading to version 3.0 should be treated as a major platform transition, not a routine update. A package manager sits at the core of system stability, so a little caution goes a long way.

Installation paths:

Distribution / Method Command
CachyOS (official repo) sudo pacman -S shelly
Arch Linux (AUR) yay -S shelly or paru -S shelly
Source build git clone https://github.com/Seafoam-Labs/Shelly-ALPM.git && cd Shelly-ALPM && makepkg -si

Before you upgrade:
1. Export your current package list. If you’re already on an earlier Shelly version, use the built-in backup command; otherwise, pacman -Qqe > pkglist.txt works.
2. Review the transaction previews. The new CLI shows detailed summaries of what will be added, removed, or changed. Don’t bypass this step blindly.
3. Keep a working pacman recovery path. Even though Shelly interfaces with libalpm, having pacman as a fallback is essential if something goes wrong.
4. If you used Shelly’s Flatpak integration before, note that it is now optional. Make sure your preferred sources are enabled in the settings.

Post-upgrade checks:
- Launch shelly-ui to verify the GUI loads cleanly and your repository configuration is intact.
- Run shelly -Syu from the terminal to test a full system upgrade and observe the new parallel sync behavior.
- Ensure your keyring is functional by importing or refreshing keys if needed.

For users coming from the pre-3.0 hybrid codebase, the transition should be seamless in terms of package state, but configuration files may have shifted. If you encounter odd behavior, a clean config reset (backup first) might be warranted.

What to watch next

Shelly 3.0 sets the stage for faster iteration now that the entire project lives in a single language. Expect more frequent updates with performance improvements and tighter integration of the security validators. The optional Flatpak backend may see further modularization, and community themes for the GTK4 GUI could follow. For now, the immediate test is whether the Zig rewrite delivers on its promise of a leaner, more responsive package management experience without introducing new edge cases in AUR or keyring handling. The project’s small but active team has proven they can move quickly; version 3.0 is a bet that native code will earn the trust of users who’ve stuck with pacman and its helpers for years.