ao

Admin Operations: The Unified Linux CLI Wrapper

📖 What is ao?

ao is a centralized, unified command line wrapper written in Rust. It simplifies system operations across fragmented Linux environments by providing a consistent syntax (ao <domain> <action>) for tasks that usually require dozens of different tools like apt, systemctl, ip, and useradd.

ao is distributed as a statically compiled binary using musl, providing a single standalone executable that works on most x86_64 Linux distributions without any external dependencies.

💡 Why use it?

For New Users

Stop memorizing cryptic flags for twenty different tools. ao gives you a logical, predictable interface to manage your system from day one without feeling overwhelmed.

For Old Timers

Can't remember if it's ip addr or ifconfig today? Switching between Debian and Fedora? ao abstracts the distribution differences so your muscle memory just works.

🎮 CLI vs Interactive Mode

⚡ Standard CLI

For power users and scripts. Run ao <domain> <action> directly. It's fast, predictable, and provides consistent output.

ao user add jane --system

đŸ•šī¸ Interactive Mode

For discovery and ease of use. Run ao interactive to browse domains and subcommands visually. ao will guide you through argument collection and validate your input before execution.

ao interactive

🚀 Usage Examples

Predictable commands for everything you do.

🔍 Monitoring

ao monitor
=== System Monitor (âŦ› Used / âŦœ Total) === +-------+---------+----------+---------------------------+------------------------------------+ | | Type | Subtype | Value | Description | +=============================================================================================+ | đŸ’ģ đŸ—ī¸ | CPU | Physical | 1.2% | Generic x86_64 Processor | |-------+---------+----------+---------------------------+------------------------------------| | 🧠 đŸ—ī¸ | RAM | Physical | âŦ› 4.2 GB / âŦœ 16.0 GB | System Memory | |-------+---------+----------+---------------------------+------------------------------------| | 🌐 đŸ“ļ | Network | Wireless | đŸ“Ĩ RX 1.2 GB, 📤 TX 245 MB | wlan0 | +-------+---------+----------+---------------------------+------------------------------------+

đŸ“Ļ Package Management

ao pkg install vim
> apt install vim Reading package lists... Done Building dependency tree... Done ... The following NEW packages will be installed: vim 0 upgraded, 1 newly installed, 0 to remove.

âš™ī¸ Services

ao svc status cron
> systemctl status cron ● cron.service - Regular background program processing daemon Loaded: loaded (/usr/lib/systemd/system/cron.service; enabled; preset: enabled) Active: active (running) since Mon 2026-10-10 09:00:00 UTC; 3h ago ...

👤 Users

ao user ls
> cat /etc/passwd +-----------+---------+-------+-------+----------------+--------------+ | Username | Type | UID | GID | Home | Shell | +=====================================================================+ | root | Regular | 0 | 0 | /root | /bin/bash | |-----------+---------+-------+-------+----------------+--------------| | admin | Regular | 1000 | 1000 | /home/admin | /usr/bin/zsh | +-----------+---------+-------+-------+----------------+--------------+

🌐 Networking

ao net interfaces
> ip addr +-------+-----------+----------+---------+-------+-------------------+ | | Interface | Type | State | MTU | MAC | +======================================================================+ | đŸ“ļ đŸŸĸ | wlan0 | wireless | UP | 1500 | 00:11:22:33:44:55 | |-------+-----------+----------+---------+-------+-------------------| | đŸ—ī¸ 🔴 | eth0 | physical | DOWN | 1500 | 00:11:22:33:44:66 | +-------+-----------+----------+---------+-------+-------------------+

📜 Logs

ao log error --lines 3
> journalctl -p err..emerg -n 3 -- Oct 10 12:17:32 linux-srv systemd-udevd[429]: Invalid key 'SYSFS'. Oct 10 12:17:32 linux-srv systemd-udevd[429]: Invalid operator for GROUP. Oct 10 12:50:03 linux-srv sddm-helper[2540]: gkr-pam: unable to locate daemon

🌲 Command Structure

A consistent, hierarchical command tree for all your needs.

ao
├── interactive
├── boot
│   ├── ls
│   └── mod
│       ├── ls
│       ├── load
│       └── unload
├── dev
│   ├── ls
│   ├── pci
│   ├── usb
│   ├── bt
│   │   ├── status
│   │   ├── scan
│   │   ├── pair
│   │   └── connect
│   └── print
│       └── ls
├── disk
│   ├── ls
│   ├── mount
│   ├── unmount
│   └── usage
├── distro
│   ├── info
│   └── upgrade
├── group
│   ├── add
│   ├── del
│   ├── ls
│   └── mod
├── gui
│   ├── info
│   └── display
│       └── ls
├── log
│   ├── auth
│   ├── boot
│   ├── crash
│   ├── dev
│   ├── error
│   ├── file
│   ├── pkg
│   ├── svc
│   └── sys
├── monitor
├── net
│   ├── interfaces
│   ├── ips
│   ├── routes
│   ├── fw
│   │   ├── status
│   │   ├── allow
│   │   └── deny
│   └── wifi
│       ├── scan
│       └── connect
├── pkg
│   ├── add
│   ├── ls
│   ├── del
│   ├── search
│   └── update
├── sec
│   ├── audit
│   └── context
├── self
│   ├── completions
│   │   ├── generate
│   │   ├── install
│   │   └── setup
│   ├── info
│   └── update
├── svc
│   ├── down
│   ├── ls
│   ├── reload
│   ├── restart
│   ├── status
│   └── up
├── sys
│   ├── info
│   ├── power
│   └── time
├── user
│   ├── add
│   ├── del
│   ├── ls
│   ├── mod
│   └── passwd
└── virt
    ├── ls
    ├── start
    ├── stop
    ├── rm
    └── logs

đŸ“Ĩ Installation

âš ī¸ CAUTION: ao is currently Alpha software.

While designed for efficiency, it interacts with critical system components. Exercise caution and always verify commands in sensitive environments.

Pro Tip: If in doubt, run any command with the --print flag (e.g., ao --print user add jane) to see the exact bash commands that would be executed without actually running them.

Option A: Local Install (to ~/.local/bin)
curl -L https://github.com/facundoq/ao/releases/latest/download/ao -o ~/.local/bin/ao && chmod +x ~/.local/bin/ao
Option B: Global Install (to /usr/local/bin, requires sudo)
sudo curl -L https://github.com/facundoq/ao/releases/latest/download/ao -o /usr/local/bin/ao && sudo chmod +x /usr/local/bin/ao