All Posts programming Stop Memorizing Package Managers: Meet `i`, The Ultimate Abstraction Layer

Stop Memorizing Package Managers: Meet `i`, The Ultimate Abstraction Layer

ยท 827 words ยท 4 minute read

If you are a developer or a Linux enthusiast who frequently switches between distributions or operating systems, you know the pain. One day you are on Ubuntu typing sudo apt install, the next you are on Fedora remembering to use sudo dnf install, and then you switch to your MacBook and have to shift gears to brew install.

The cognitive load of remembering specific syntax for pacman, zypper, apk, yum, and choco is unnecessary.

Enter i โ€” a scientific, logical solution to package manager fragmentation.

What is i? ๐Ÿ”—

Hosted on GitHub as abanoubha/i , i is an open-source command-line tool written in Go. It serves as a unified wrapper (abstraction layer) over almost every system package manager in existence.

Instead of learning the specific dialect for every OS you touch, you learn one universal set of commands. i detects the underlying operating system and available package managers, then routes your command to the correct native tool.

The Philosophy: i stands for install. It simplifies the verbosity of package management into single-letter efficiency.

The Problem: Fragmentation ๐Ÿ”—

In the world of DevOps and software development, environment context switching is a productivity killer.

  • Debian/Ubuntu: apt update && apt upgrade
  • Arch Linux: pacman -Syu
  • macOS: brew upgrade
  • Fedora: dnf update

Why should your muscle memory suffer because of OS differences? i standardizes this. Whether you are on Arch, Debian, or Windows, the command to update your system is simply:

i update

Key Features ๐Ÿ”—

1. Cross-Platform & Agnostic ๐Ÿ”—

i doesn’t just support Linux. It works across the spectrum:

  • Linux: apt, dnf, pacman, apk, zypper, xbps, nix-env, emerge, flatpak, snap.
  • macOS: brew, port.
  • Windows: winget, choco (Chocolatey), scoop.
  • BSD: pkg.

2. Intuitive Syntax ๐Ÿ”—

The commands are designed to be logical and predictable. You don’t need to remember if it’s remove, or uninstall. i accepts multiple aliases for common actions.

  • Install: i install vim (or i add vim)
  • Remove: i uninstall vim (or i rm, i remove)
  • Search: i search vim (or i find)
  • Info: i info vim (or i show)

3. Smart Detection ๐Ÿ”—

When you run i, it scans your system for available package managers. If you have both apt and snap installed, i is aware of both. You can even list what it finds, and what it supports:

$ i pmlist
Supported package managers:
- apt
- snap
- flatpak

4. Specificity When You Need It ๐Ÿ”—

While abstraction is great, sometimes you need to force a specific tool. If you want to install a package specifically via snap instead of apt, i allows for flags:

i --snap install code

Installation ๐Ÿ”—

Since the project is written in Go, it is extremely portable and easy to install.

If you have a Go environment set up:

go install github.com/abanoubha/i@latest

Option 2: Shell Script ๐Ÿ”—

You can install it directly via the provided script:

curl -fsSL https://raw.githubusercontent.com/abanoubha/i/main/scripts/install.sh | sh

Or you can use the script from the cloned/download source code repository if you already have it:

git clone https://github.com/abanoubha/i
cd i
sh scripts/install.sh

Option 3: Build from Source ๐Ÿ”—

git clone https://github.com/abanoubha/i
cd i
go mod tidy && go build -o i .

Practical Usage Examples ๐Ÿ”—

Here is how i standardizes your workflow, regardless of the OS you are currently logged into.

System Upgrade:

Updates all packages on the system using the native system package manager.

i up

Installing a Package:

i install neovim

Cleaning Up:

Removes a package.

i rm firefox

Quiet Mode:

If you prefer less verbosity in your terminal logs.

i --quiet install git

Technical Architecture ๐Ÿ”—

The project is built primarily in Go (Golang), ensuring high performance and a single binary distribution without heavy dependencies (unlike Python or Node.js wrappers).

  • Versioning: The project uses a date-based versioning system (e.g., v260130 for January 30, 2026), making it easy to track how current your binary is.
  • Executables: The build script generates binaries for Linux (x64), Windows (x64), and macOS (Intel & Apple Silicon), .. and more.

Why You Should Switch ๐Ÿ”—

For a Full-stack or Android developer who might be managing a local Linux server, developing on a Mac, and testing on Windows, i acts as a unified interface for your system operations. It adheres to the DRY (Don’t Repeat Yourself) principle, but for your brain’s memory banks.

It removes the friction of “Wait, what was the flag for searching in dnf again?” and lets you focus on the actual task: getting the software you need.

Get Started ๐Ÿ”—

The project is open source under the MIT License. You can check out the source code, contribute, or star the repository here:

๐Ÿ”— GitHub Repository: https://github.com/abanoubha/i

I hope you enjoyed reading this post as much as I enjoyed writing it. If you know a person who can benefit from this information, send them a link of this post. If you want to get notified about new posts, follow me on YouTube , Twitter (x) , LinkedIn , and GitHub .