{"id":48317097,"url":"https://github.com/facundoq/ao","last_synced_at":"2026-05-27T15:01:01.174Z","repository":{"id":348150786,"uuid":"1196404169","full_name":"facundoq/ao","owner":"facundoq","description":"Admin Operations: a centralized command line tool to perform sysop stuff in linux","archived":false,"fork":false,"pushed_at":"2026-05-21T17:44:18.000Z","size":8214,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-22T02:43:27.839Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://facundoq.github.io/ao/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/facundoq.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-30T17:04:44.000Z","updated_at":"2026-05-21T17:44:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/facundoq/ao","commit_stats":null,"previous_names":["facundoq/ao"],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/facundoq/ao","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facundoq%2Fao","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facundoq%2Fao/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facundoq%2Fao/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facundoq%2Fao/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/facundoq","download_url":"https://codeload.github.com/facundoq/ao/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facundoq%2Fao/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33570993,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-27T02:00:06.184Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-05T00:33:16.336Z","updated_at":"2026-05-27T15:01:01.154Z","avatar_url":"https://github.com/facundoq.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ao\n\nAdmin Operations (`ao`) is a centralized, unified command line wrapper written in Rust designed to perform sysop operations across fragmented Linux environments. Instead of context-switching between `apt`, `dnf`, `systemctl`, `usermod`, and `ip`, you just use `ao`.\n\n**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, with a relatively small footprint (there is work in progress to further reduce size; currently at ~1.5MB).\n\n\u003e [!CAUTION]\n\u003e **ao is currently Alpha software.** While designed for efficiency, it interacts with critical system components. Exercise caution and always verify commands in sensitive environments.\n\u003e \n\u003e **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.\n\n## Philosophy\n\n* **Ergonomic Speed:** Fast, predictable muscle memory (`ao \u003cdomain\u003e \u003caction\u003e`).\n* **Zero Overhead:** Instantaneous startup time via Rust.\n* **Abstraction:** Hides the differences between Debian, Fedora, Arch, etc.\n\n## Architecture\n\n`ao` uses a multi-layered abstraction model to provide a consistent interface across different Linux distributions:\n\n1. **CLI Layer (`src/cli.rs`)**: Defines the command-line interface and argument parsing using `clap`. It includes a global **Interactive Mode** for guided command execution.\n2. **Domain Abstraction (`src/os/mod.rs`)**: Defines traits (e.g., `PackageManager`, `ServiceManager`, `LogManager`) and unified data structures that all backends must implement.\n3. **OS Detection (`src/os/detector.rs`)**: Identifies the host distribution at runtime (via `/etc/os-release`).\n4. **Backend Implementations**:\n   - **Generic Linux (`src/os/linux_generic/`)**: Provides standard implementations for core domains using common tools like `ip`, `systemctl`, `journalctl`, and `lsblk`.\n   - **Distro-Specific (`src/os/debian.rs`, `src/os/arch.rs`, etc.)**: Overrides generic behavior where necessary (e.g., package management via `apt` vs `pacman`).\n\n## Command Tree\n\n```text\nao\n├── interactive\n├── dashboard\n├── boot\n│   ├── list\n│   └── module\n│       ├── list\n│       ├── load\n│       └── unload\n├── device\n│   ├── list\n│   ├── pci\n│   ├── usb\n│   ├── bluetooth\n│   │   ├── status\n│   │   ├── scan\n│   │   ├── pair\n│   │   └── connect\n│   └── print\n│       └── list\n├── disk\n│   └── list\n├── distribution\n│   ├── info\n│   └── upgrade\n├── group\n│   ├── add\n│   ├── delete\n│   ├── list\n│   └── modify\n├── gui\n│   ├── info\n│   └── display\n│       └── list\n├── log\n│   ├── auth\n│   ├── boot\n│   ├── crash\n│   ├── dev\n│   ├── error\n│   ├── file\n│   ├── package\n│   ├── service\n│   └── system\n├── monitor\n├── network\n│   ├── interfaces\n│   ├── ips\n│   ├── routes\n│   ├── firewall\n│   │   ├── status\n│   │   ├── allow\n│   │   └── deny\n│   └── wifi\n│       ├── scan\n│       └── connect\n├── package\n│   ├── add\n│   ├── list\n│   ├── delete\n│   ├── search\n│   └── update\n├── partition\n│   ├── list\n│   ├── mount\n│   ├── unmount\n│   └── usage\n├── security\n│   ├── audit\n│   └── context\n├── self\n│   ├── completions\n│   │   ├── generate\n│   │   ├── install\n│   │   └── setup\n│   ├── info\n│   └── update\n├── service\n│   ├── down\n│   ├── list\n│   ├── reload\n│   ├── restart\n│   ├── status\n│   └── up\n├── system\n│   ├── info\n│   ├── power\n│   └── time\n├── user\n│   ├── add\n│   ├── delete\n│   ├── list\n│   ├── modify\n│   ├── passwd\n│   └── session\n└── virtualization\n    ├── list\n    ├── start\n    ├── stop\n    ├── remove\n    └── logs\n```\n\n## Installation\n\n### Via Cargo\n\nYou can install `ao` directly from [crates.io](https://crates.io/crates/ao-cli):\n\n```bash\ncargo install ao-cli\n```\n\n**Note:** The crate is named `ao-cli` due to naming availability, but the installed binary will be named `ao`.\n\n### Binary Downloads\n\nStatically compiled binaries are available for every release in the [GitHub Releases](https://github.com/facundoq/ao/releases) section.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffacundoq%2Fao","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffacundoq%2Fao","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffacundoq%2Fao/lists"}