Another Konfig & Kontrol Utility
Declarative system configuration — plan, apply, and rollback across any OS and init system.
Managing system configuration today means memorizing imperative commands, manually tracking state, and hoping nothing breaks. AKKU changes that: describe the system state you want, and AKKU plans the path, applies it safely, and rolls back automatically if anything goes wrong.
Where Ansible orchestrates fleets and NixOS rebuilds entire systems, AKKU does one thing well: take any machine from its current state to your desired state — safely, step by step, through any frontend you choose.
- Declarative — describe the desired state; AKKU finds the optimal path to reach it.
- Safe by default — automatic rollback on failure, manual rollback on demand, conflict detection before anything runs.
- API-first — one logic layer, fully interchangeable frontends (TUI, CLI, GUI, Web).
- Modular — a stable core engine communicates with pluggable modules. First-party and community modules build an ever-growing ecosystem of system capabilities.
- System-wide — install the module that fits your init system: systemd, OpenRC, and beyond.
- Error-aware — reports what failed, why it failed, and how to fix it, in plain language.
| Component | Status |
|---|---|
| Core Engine | ✅ Done |
| API Layer | ✅ Done |
| Conflict Detection | ✅ Done |
| Declarative Syntax | ✅ Done |
| Action Modes (Normal, Force, Dry-run) | ✅ Done |
| Snapshots | ✅ Done |
| Rollback | ✅ Done |
CLI commando (reference frontend) |
✅ Done |
systemd Service Module |
🔧 In Progress |
| Smart Error Awareness | 🔜 Planned |
| Modules Manager | 🔜 Planned |
| Tests | 🔜 Planned |
| Third-party Modules | 🔜 Planned |
AKKU follows a strict unidirectional layered design — each layer communicates only with the one directly below it, never sideways or upward. Frontends are fully replaceable; the engine and modules are frontend-agnostic.
For a full breakdown of the layered design, internal modules, plan/approve flow, rollback mechanics, and glossary — see ARCHITECTURE.md.
AKKU/ # each crate follows: 'src/' + 'docs/'
├── cli/ # Reference frontend (commando)
├── api/ # Orchestration layer
├── engine/ # Core engine
├── shared/ # Shared types and utilities
├── modules_manager/ # Planned
├── modules/ # Modules library
│ └── services/ # systemd service module
├── tests/ # Planned
├── ui_concept/ # Future GUI concept as HTML pages
└── README.md
Note: This monorepo layout reflects the current development state. From v0.1 onward, each crate will live in its own repository.
Rust 1.89.0+— install via rustup- Linux with systemd (current modules are systemd-based)
- Root access via
sudo(required for actual system operations)
git clone https://github.com/Grandle74/AKKU.git
cd AKKU
cargo run# <module> <action> [target] [properties...] [flags]
# Read-only commands
commando(v0.1)~> service clean # no target
commando(v0.1)~> service reload nginx # targeted
# Declarative state commands
commando(v0.1)~> service cfg nginx running=1 enabled=yes # Normal mode
commando(v0.1)~> service cfg nginx masked=1 --force # Force mode
commando(v0.1)~> service cfg nginx running=false --dry-run # Dry-run mode- Hardened end-to-end core (API + Engine)
- Modules Manager — initial design captured in
ModulesManager.md systemdservice module reworked as a solid first-party reference- A second lightweight module to validate the module system
- CI setup and minimum supported Rust version pinned
- CONTRIBUTING.md — architectural rules, layer contracts, contribution guidelines
- Each crate in its own repository under a dedicated project account
- Module ecosystem open to third-party contributions
- Early testers onboarded once the codebase reaches a stable shape
- Glossary and developer documentation
AKKU is approaching its first stable release. Code contributions are not open yet — the architecture is still being finalized for v0.1. That said:
- Bug reports and feedback are welcome via GitHub Issues.
- Architectural discussion is open in Discussions.
Contributing guidelines (including layer contracts and architectural invariants) will be published alongside v0.1.
This project is licensed under the LGPL-3.0 License.
AKKU started as a dream to rewrite YaST2 in Rust — a beloved tool that went unmaintained. That dream gradually shifted: not a rewrite, but something new. Discovering NixOS and the declarative paradigm sharpened the vision further. The plan/apply model was arrived at independently — though it turns out Terraform had the same idea for infrastructure.