Agentix began as a command-line control layer for NixOS configuration work. The first milestone was not full autonomy. It was building a proposal-first workflow that could be trusted.
The core behavior is simple:
- inspect the workspace
- create a proposal patch
- ask before applying
- apply through Git
- run verification
- stop before live activation
This makes the agent legible. Every change is a patch. Every patch can be reviewed. Every applied patch can be checked.
The repositories
The work is split across two repositories:
- the Agentix CLI repository
- the NixOS configuration repository
Agentix keeps its working memory in its own repo and syncs a checkpoint copy into the NixOS config repo. That gives each milestone a durable handoff point.
Goal runner
One of the key MVP features is the high-level goal runner:
agentix run "add package btop" --path ~/nixos-config --dry-run
agentix run "create module ai with template packages" --path ~/nixos-config --dry-run
Dry-run mode parses the goal and explains what Agentix would do without changing files.
Supported real goals can create patches, ask for approval, apply them, add new files to Git, and verify the result:
agentix run "create module ai with template packages" --path ~/nixos-config
The goal runner is intentionally narrow. It only supports specific known-safe workflows. That is a better MVP strategy than pretending a natural-language agent can safely edit any system configuration from day one.
Verification without switching
Agentix can verify a NixOS configuration without activating it:
agentix verify --path ~/nixos-config --host nixos
agentix verify --path ~/nixos-config --host nixos --json
The JSON mode is important because future agents need machine-readable results. Human text is useful for operators, but structured output is how automation can make safe decisions.
The human activation boundary
The final activation remains human-controlled:
cd ~/nixos-config
rebuild-nixos
Agentix should never silently cross that line. This is the project’s most important safety boundary.