NightShift
NightShift is an on-prem agentic system administrator. One operator enrolls Linux servers, and a Rust agent on each host takes the shift nobody wants: watch the machine, defend it during an attack, or harden it afterward. Nearly nine in ten ransomware deployments land outside business hours (Sophos Active Adversary Report, 2026). Small businesses are hit hardest, and they are the ones with nobody watching at 3 AM.
What it does
An operator signs in, creates a network, and adds a server. The backend returns a one-time pairing code, valid for fifteen minutes. On the host, ns-agent setup consumes that code, stores a hashed token, and the agent starts polling. From the dashboard the operator assigns one job:
- Tracking — observe processes, listeners, logins, and file changes. Always read-only.
- Blue team — detect and contain live threats while required services stay up.
- Incident response — walk the host area by area the way a CyberPatriot team would, and refuse to call the run done while any audit area is still open.
The agent does not improvise a checklist. Before it changes anything, it searches a local corpus of CIS, STIG, and CyberPatriot benchmarks and can cite the source and page. Every completed run files a PDF built from the persisted summary and the full event history.
How it is built
Three repositories, one install:
- Agent (Rust, Tokio) — pairs once, polls about every two seconds, runs concurrent collectors (
ps,ss,journalctl, …), and calls the OpenAI Responses API (defaultgpt-5) with function calling. Tools:inspect,read_file,track_file,search_knowledge, and, only if allowed,execute_commandandwrite_file. Events go through a durable outbox so a dropped connection cannot lose work. - Backend (Go, Gin, SQLite) — firms, sessions, networks, servers, pairing codes, runs, events, and FTS5 search over ingested PDFs. At most one active run per server. Reports are generated server-side when a run ends.
- Frontend (Vite, React, TypeScript) — networks, roster, pairing dialog, and a node inspector for mode, log, and reports.
Safety
Root-capable AI is the product risk, so it is treated as the main problem.
- No long-lived install token. Pairing is a one-use code; minting a new code kicks the old agent.
- The agent cannot change the machine unless setup was given
--allow-changes. Tracking stays read-only even then. - Every file write is backed up first and can be restored.
- Protected services and HTTP/TCP health checks run around every mutating command. If a required service drops, recovery comes first.
- Commands time out at 30 seconds; process groups are killed on cancel. Stop requests interrupt the next poll. An offline agent stays offline — the backend does not invent a finished report.
Attackers do not keep business hours. NightShift does not either.
Log in or sign up for Devpost to join the conversation.