Skip to content

Nurvus

AI-powered homelab management. Deploy, configure, and monitor self-hosted services through a conversational agent running entirely on your own hardware.

The goal of Nurvus is to make running a homelab accessible to everyone. You shouldn't need to be a system administrator or network engineer to self-host your own services. Just tell the agent what you want in plain English and it handles the rest: installing services, configuring networking, managing updates, and troubleshooting problems.

Nurvus
Nurvus
The System
Demi
Demi
The Agent

Demi is the AI agent you interact with to manage your homelab. She's named after the android from Phantasy Star IV: End of the Millennium who merges herself with a failing climate control system called Nurvus to bring it back under control.

In the same spirit, Demi is the agent and Nurvus is the central system that keeps everything running.

Why NixOS?

Nurvus is built around NixOS because it's the only Linux distribution where an AI agent can safely manage an entire system. Here's why:

Declarative configuration. The entire system state lives in a single file (configuration.nix). Every package, service, firewall rule, and container is declared there. Demi reads and writes this file, then runs nixos-rebuild switch to apply changes. There's no hidden state, no manual edits to remember, no drift between what's configured and what's running.

Atomic rollbacks. Every rebuild creates a new system generation. If something breaks, rolling back is instant and guaranteed to restore the previous working state. This makes it safe for an AI agent to make changes, because mistakes are always reversible. You can't brick your system.

Reproducibility. The same configuration always produces the same system. If Demi deploys postgres with specific settings on your machine, that exact configuration can be rebuilt from scratch on another machine. Your homelab becomes portable.

No imperative state. On traditional distros, an AI agent would need to manage config files scattered across /etc/, track which packages are installed, handle service dependencies manually, and hope nothing was changed out of band. On NixOS, there's one source of truth. If it's not in configuration.nix, it doesn't exist.

This is what makes agentic system management practical. Without NixOS's guarantees, letting an AI modify your system would be risky. With them, it's just another tool.

How It Works

You: deploy jellyfin on port 8096

Demi: Here's the plan:
      - Container: jellyfin
      - Image: docker.io/jellyfin/jellyfin:latest
      - Port: 8096 -> 8096
      - Volume: /srv/jellyfin/config:/config, /srv/jellyfin/cache:/cache
      - Firewall: open 8096

      Ready to proceed, or want to change anything?

You: yes

      ★ nixos_deploy_container (...)
      ★ nixos_rebuild (action=switch)
      ★ container (action=list)

Demi: Jellyfin is live on port 8096.

Runs entirely on your hardware. The LLM, the agent, the services. No cloud. No telemetry.

Demi remembers. She learns your homelab over time: what services you've deployed, your preferences, and what she's researched. Follow-up conversations are smarter because she builds on prior work. All memory is stored locally in SQLite, never sent anywhere. See Memory for details.

Demi's Toolbox

Tool Actions Description
system_info overview, processes, memory, cpu, io, network System info, live stats, resource usage
network ping, dns, port_check, http_check Network diagnostics and connectivity testing
container list, inspect, logs, restart, stop, start, exec, update Manage containers, run commands inside them
files read, write, list Read, write, and list files under /srv/
nixos_info config, generations Read NixOS configuration or list generations
nixos_deploy_container - Add a container to configuration.nix
nixos_remove_container - Remove a container from configuration.nix
nixos_set_option - Set a NixOS option (hostname, timezone, etc.)
nixos_rebuild switch, test, dry-run, rollback Apply NixOS changes or rollback
system_reboot - Reboot the system
timer list, status, add, remove, enable, disable, run, run_at Scheduled tasks via systemd timers
mount scan, add, remove, list, status Network shares (NFS/SMB) and drive mounts
firewall list, open, close Manage firewall ports
cleanup status, containers, nix, all Free disk space (prune images, nix garbage collect)
service_templates list, get Browse pre-built service templates
registry search, tags, info, readme Search Docker Hub, look up images, fetch READMEs
memory save, search, list, delete, update Persistent memory across sessions

Quick Start

curl -sSL https://codeberg.org/ewrogers/nurvus/raw/branch/main/install.sh | sudo bash

Then run demi to start chatting. See Getting Started for details.