Self-hosted · Windows fleet control

Every Windows box.
One command center.

Lillith is a fleet-management platform for Windows workstations that refuses to need a domain. One Rust server, a lightweight agent, and typed operations over WebSocket — no inbound ports, no shared admin passwords, no control plane in someone else's cloud.

75 machines, one server
0 inbound ports
1 static binary
100% self-hosted
lillith.achi.tech/machines
live
Fleet overviewSite A · Site B · Site C
All healthy
47 / 48Online
3Pending
2Reboots
HostSiteDiskAgent
WS-0142Site A0.6.10
WS-0088Site A0.6.10
WS-0211Site B0.6.9
WS-0034Site C0.6.10
WS-0176Site B0.6.8
Presence watchdog · 10s2 queued jobs
Built for the LAN No domain required Outbound WSS only Typed ops, never a shell SQLite, single binary
The platform

Everything you log into each box for.

Inventory, software, updates, remote control, files, and time — one authenticated surface, served by the same process that holds the fleet together.

Fleet inventory & presence

OS build, CPU, RAM, disks, SMART health, battery, network adapters, users, and Windows activation. Live online, reconnecting, and offline states with a 10-second watchdog.

SMARTTagsHistory

Software deployment

Upload MSI or EXE installers with automatic product detection, hash verification, per-package silent arguments, and bulk deploy to every applicable host.

SHA-256TrashRollback

Windows Update

Scan and install pending software, driver, and firmware updates through the Windows Update Agent — with reboot-required reporting and full QFE history.

WUADriversQFE

Remote control

An in-browser noVNC session over a TLS-pinned proxy, with monitor selection, clipboard sync, fullscreen, and automatic session recording.

noVNCRFBRecording

Files & registry

Browse drives, upload and download with resumable transfers, check SHA-256, and edit registry values by type — all through the agent, never a shell.

4 GiBResumeREG_*

Time, services & utility

Force a fleet-wide time resync, set NTP servers and time zones, repair the Windows Time service, and control services and startup types.

w32tmtzutilServices
Protocol

The agent is the management fabric.

No domain means no GPO, so the agent owns the work. It dials out over a single WebSocket, advertises exactly what it can do, and receives only named, typed operations. There is no exec() in the protocol.

  • Capability-gated. The server never offers an operation the connected agent did not advertise.
  • Compile-checked both ways. A shared Rust protocol crate makes agent/server drift a build error.
  • Durable by design. Jobs survive disconnects, expire instead of firing late, and can be retried with their original arguments.
  • Audited end to end. Every job, enrollment, package, and setting change lands in the audit log.
agent → server · hello
{
  "type": "hello",
  "protocol_version": 1,
  "agent_version": "0.6.10",
  "fingerprint": "9f3c…a71b",
  "capabilities": [
    { "name": "system.info", "version": 1 },
    { "name": "programs.list", "version": 1 },
    { "name": "windows_update.scan", "version": 1 },
    { "name": "vnc.session", "version": 1 }
  ]
}
Capabilities are stored per machine and drive the UI. New agent features roll out without breaking old hosts.
Topology

Built to disappear into your network.

Clients behind NAT dial out. Nothing listens on Windows. The server holds one durable record of everything and one live socket per machine.

Site A · B · C

Windows agents

SYSTEM service + per-user tray. Enrolls by token or approval; updates itself.

Linux · 443

lillithd

Rust + Axum. WebSocket hub, job queue, SQLite, ACME/TLS, and the embedded UI.

Any browser

Admin browser

Local or Microsoft 365 sign-in. Live updates over one authenticated socket.

0 inbound ports on clients SQLite source of truth ACME DNS-01 in-process 1 static server binary
Install

Zero to managed in three moves.

A Linux host, a Rust toolchain, and an enrollment decision. No domain join, no certificate authority, no cloud dependency.

Build & deploy the server

Cross-compile the Windows agent, then install the hardened systemd unit, environment file, and data directories.

$ ./deploy/deploy.sh user@server

Create the first admin

Local accounts use Argon2id hashes. Add viewers for read-only browsing, or configure Entra ID for SSO.

$ lillithd user add --username admin

Enroll your machines

Use an enrollment token for rollouts, or let tokenless clients appear on the Pending page for one-click approval.

$ lillith-agent.exe --install --token …
Detail work

The boring parts, handled.

Fleet tools earn their keep on the day something goes wrong. Lillith is built around recovery, visibility, and reversible actions.

Live over one socket

Presence badges, events, jobs, pending enrollments, inventory, services, and screenshots update in place through an authenticated WebSocket. A status pill tells you when the link drops.

Recoverable by default

Deleted packages sit in a 30-day trash with Undo. Failed jobs retry with their original arguments. Restoring a backup stages it for the next boot instead of swapping the database underneath live connections.

Backup is a download

One .tar.gz: consistent SQLite snapshot via VACUUM INTO, packages, screenshots, VNC recordings, and ACME state — with a manifest and restore README.

Queued, not forgotten

Jobs for offline hosts persist as queued, can be reordered, edited as JSON, given an expiry, and are marked expired instead of running hours late.

Staged rollouts

Beta-tagged hosts receive a new agent binary first. The rest of the fleet follows once every beta host reconnects on the target version.

Design is part of the job

Five selectable themes — including Windows XP Luna and Hotdog Stand — deep links into every machine tab, and per-account preferences for tabs, sections, filters, and notifications.

Security with a short leash

Per-machine Argon2 secrets, single-use enrollment tokens, CSRF protection, role-enforced viewers, one-hour default sessions, and immediate session revocation. The identity provider is the source of truth at sign-in — and only at sign-in.

No domain. No drama.

Point it at your fleet.

Read the deployment guide, skim the protocol, or go straight to the quick start. Lillith is proprietary software, self-hosted on your hardware.