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
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.
MIT licensed. Runs on your hardware, on your network, under your accounts.
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
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
Seconds per reading
Debian, PXE'd
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 onboardingExample lab
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 availabilityThousand tokens · TensorFold, example lab
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
Port, with a real certificate
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 DNSOne account
Authentik runs the front door. One account covers Lucia, the apps a person's groups can open, and, for owners, the servers themselves.
IdentitySeconds per Spark sample
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.
ObservabilityLucia 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 updatesThis is a real job from the lab that wrote this page. It runs at seven every morning.
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
Checks every app for containers that are down but were never meant to be stopped.
Reads the failing container's logs on whichever server runs it.
Works out whether a restart will do, or whether the app itself needs changing.
Restarts or updates the app, because this job was allowed to. Anything outside that list waits for you.
Writes up what happened in the run's chat thread and pings your phone if you need to look.
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.
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.

Opinionated on purpose. If your lab looks like this, setup is short. If it doesn't, read this first.
Some tubes are still dark. We would rather say so than let you find out at 2 a.m.
Coming soon
Wake word, speech and voice print sign-in are planned. Local AI already keeps 8 GiB free for them.
Coming soon
There is no packaged release. You build from source, and the docs walk you through it.
Coming soon
The one-window setup app works today if you build it yourself. There's no signed download yet, so SmartScreen and Gatekeeper will grumble.