Lucia

Lucia takes the 2 a.m. shift.

An on-call engineer and a homelab easy button in one box. Lucia onboards Debian servers, keeps DNS, apps and updates in line, and runs scheduled jobs that triage dead containers before you notice. It asks before anything destructive. You keep root. You just stop needing it.

Install from sourceStar on GitHubDesktop bootstrapComing soon

MIT licensed. Runs on your hardware, on your network, under your accounts.

Shift clockLucia on duty
Mode
Asks first
Owner
Asleep
Status
Handling it

Everything you used to babysit.

Each channel is a chore Lucia now watches, fixes or asks you about. Numbers in the tubes come from the source code or a working lab, not a slide deck.

Daily, 7:00

Assistant jobs

Saved prompts on a cron schedule. Every run opens its own chat thread, uses only the actions you approved for that job, and sends a push notification to the devices you picked when it needs you.

How jobs work
Lucia's Assistant jobs page: a job named Fix stopped containers, scheduled every day at 7:00, with its last run finished.
Captured lucia.homelab.seiggy.com/#/ai/jobsOn 2026-10-07Unretouched

Seconds per reading

Debian, PXE'd

Servers without a monitor

Network-boot a box, approve the disk, and Lucia installs Debian 13 and enrolls it. From then on it reports CPU, memory, GPU and temperatures every 30 seconds.

Nodes and onboarding
  • lucialab01Primary · .230
  • lucialab02Replica · .231

Example lab

DNS that survives a reboot

AdGuard runs on every node, each on its own virtual IP. Change a filter on the primary and the replicas follow. Reboot a server and the house still resolves.

AdGuard high availability

Thousand tokens · TensorFold, example lab

Local AI on the Spark

One language model and one embedding model, served on the Spark's GB10 and reachable from your apps through Lucia's OpenAI-compatible API. Memory is budgeted so the rest of the system keeps breathing.

Local AI
Lucia's Playground page with the hosted model Qwen3.8-Flash-Next ready, served context 200,000 tokens, backend TensorFold.
Captured lucia.homelab.seiggy.com/#/aiOn 2026-10-07Unretouched

Port, with a real certificate

Names and certificates

Connect a Cloudflare zone and every app gets a name under your domain and a Let's Encrypt certificate, with local DNS answered by AdGuard. Skip it and Lucia serves everything from its own private CA. Public access is off until you turn it on.

Networking and DNS

One account

One sign-in for the lab

Authentik runs the front door. One account covers Lucia, the apps a person's groups can open, and, for owners, the servers themselves.

Identity

Seconds per Spark sample

Watching the watcher

Traces, metrics and logs from Lucia and your nodes land in Grafana, along with the inference server's Prometheus metrics. The Spark's own health is sampled every 10 seconds.

Observability
  • Check
  • Install all
  • Restart what changed

Patch Tuesday, any day

Lucia lists the Spark's pending packages and security fixes, installs them in one pass or on a schedule, and restarts only the services still holding old files.

Spark updates

A job run, start to finish.

This is a real job from the lab that wrote this page. It runs at seven every morning.

Fix stopped containersDaily, 7:00

Saved prompt

Scan all apps for failed containers that are offline that aren't supposed to be in the "Stopped" state. Pull the logs. Triage the issue, and resolve it as long as it does not require modification to the application. If it requires modifications, notify the user.

Allowed without asking

  • Start, stop, restart and update apps
  • Create and change custom apps
  • Move apps between servers
  1. Detect

    Checks every app for containers that are down but were never meant to be stopped.

  2. Pull logs

    Reads the failing container's logs on whichever server runs it.

  3. Triage

    Works out whether a restart will do, or whether the app itself needs changing.

  4. Fix, if allowed

    Restarts or updates the app, because this job was allowed to. Anything outside that list waits for you.

  5. Notify

    Writes up what happened in the run's chat thread and pings your phone if you need to look.

The owner holds the keys.

Lucia is helpful the way a good junior engineer is helpful: it does the reading, shows its work, and asks before it touches anything that matters.

Plan
Changes nothing at all. It reads, reasons and tells you what it would do.
Execute
Makes the changes you have allowed. Everything else waits for your approval in the chat.
Jobs
Act unasked only inside the permissions saved on that one job.

In a chat it always asks first before deleting an app, restoring a backup, putting an app on the internet, updating or restarting a server, or running a command on one.

Lucia's Assistant settings: a list of changes it may make without asking, all unchecked by default.
Captured lucia.homelab.seiggy.com/#/settings/assistantOn 2026-10-07Unretouched

What Lucia assumes about your lab.

Opinionated on purpose. If your lab looks like this, setup is short. If it doesn't, read this first.

Controller
An NVIDIA DGX Spark on DGX OS, past NVIDIA's first-run setup. Lucia, Authentik and Local AI live here.
Gateway
UniFi Network. It stays your DHCP server; Lucia never brings its own.
Servers
Network-bootable machines that Debian 13 installs on. Lucia owns them after enrollment.
Domain
Optional. A Cloudflare zone and a scoped API token for public certificates; without one, a private CA.
Apps
Docker Compose. Each app is one Compose file placed on one server.
You
Comfortable with SSH, and happy to let something else hold the pager.
Full requirements

Not yet.

Some tubes are still dark. We would rather say so than let you find out at 2 a.m.

  • Coming soon

    Voice

    Wake word, speech and voice print sign-in are planned. Local AI already keeps 8 GiB free for them.

  • Coming soon

    Releases

    There is no packaged release. You build from source, and the docs walk you through it.

  • Coming soon

    Desktop download

    The one-window setup app works today if you build it yourself. There's no signed download yet, so SmartScreen and Gatekeeper will grumble.

Every known limitation

Go back to bed.

Lucia has the pager.

Install from sourceStar on GitHubDesktop bootstrapComing soon