Skip to content

Using Demi

Demi is a conversational agent that manages your homelab. You can interact with her through a TUI (terminal user interface) over SSH, or through a web UI accessible from any device on your network.

The Basics

Just describe what you want. Demi figures out which tools to use and handles the details.

You: what services are running?
Demi: ★ container (action=list)
      PostgreSQL is running on port 5432.

You: restart my postgres
Demi: ★ container (action=restart, name=postgres)
      Postgres restarted. Was running since Sun 2026-03-22 02:24:39 UTC.

You: show me the postgres logs
Demi: ★ container (action=logs, name=postgres)
      PostgreSQL started successfully, listening on 5432. Ready to accept connections.

Plan-Confirm-Execute

For anything that changes the system (deploying, removing, rebuilding), Demi follows a strict workflow:

  1. Gather information about the current state
  2. Plan and show you exactly what will change
  3. Wait for your confirmation
  4. Execute the changes and confirm the result

Demi will never modify your system without asking first.

Slash Commands

Type / to see available commands with autocomplete. The dropdown appears as you type and filters to matching commands.

Command Description
/clear Clear conversation history (persistent memories are kept)
/reset Same as /clear
/memory List Demi's recent memories
/quit Exit Nurvus
/exit Same as /quit

Example Prompts

Deploying services:

  • "deploy pi-hole on port 8053"
  • "set up a minecraft server"
  • "I need a postgres database for my app"
  • "deploy nextcloud with its own database"

Managing services:

  • "what services are running?"
  • "restart my postgres"
  • "show me the nginx logs"
  • "stop the minecraft server"

Running commands inside containers:

  • "how many players are on the minecraft server?"
  • "run a query on postgres to list all databases"

Editing files:

  • "create a dark-themed index page for nginx"
  • "show me what's in /srv/postgres/"

System administration:

  • "what's using the most CPU?"
  • "how much disk space do I have?"
  • "set my hostname to homelab"
  • "change the timezone to America/New_York"

Network diagnostics:

  • "can you reach google.com?"
  • "is port 8096 open?"
  • "check if nginx is responding on port 9000"

Reverse proxy and HTTPS:

  • "set up caddy as a reverse proxy"
  • "I want to access jellyfin at media.home.local"
  • "put nextcloud behind caddy with HTTPS"
  • "add grafana to caddy at graphs.home.local"

Network shares and drives:

  • "scan my NAS at 192.168.1.50 for shares"
  • "mount the media share from my NAS for jellyfin"
  • "mount //nas.local/photos with username erik"
  • "what mounts do I have?"
  • "remove the photos mount"

Scheduled tasks:

  • "back up my postgres every night at 2am"
  • "restart the minecraft server weekly on Sundays"
  • "run the postgres backup now"
  • "clean up old backups in an hour"
  • "what timers are running?"
  • "disable the nightly backup"

Memory:

  • "remember that I prefer Caddy over Traefik"
  • "what do you remember about my homelab?"
  • "what services have we deployed before?"
  • "forget the note about using port 9000 for nginx"

Researching services:

  • "search docker hub for a password manager"
  • "what tags are available for postgres?"
  • "read the README for https://github.com/dani-garcia/vaultwarden"

Updating services:

  • "update jellyfin to the latest version"
  • "update all my containers"
  • "what version of postgres am I running?"

Firewall:

  • "what ports are open?"
  • "open port 8080"
  • "close port 3001"

Disk cleanup:

  • "how much disk space do I have?"
  • "clean up old container images"
  • "garbage collect the nix store"
  • "free up disk space"

Troubleshooting:

  • "why is the server slow?"
  • "the minecraft server isn't starting, check the logs"
  • "rollback to the previous configuration"