Remember the job
The mission and task history live outside the AI conversation.
Claude and Codex could do a lot of the coding, but the project around them was still fragile. Sessions ended. Limits got hit. Context disappeared. A worker would say something was done, and I still had to figure out whether it actually worked. So I started building Nightshift to keep the work organized even when the AI, terminal, or session changes.
The annoying part was everything I still had to remember and babysit around it: what the goal was, which worker was doing what, whether two jobs could collide, what had already failed, whether “done” really meant done, and how to recover when a long session stopped halfway through.
The mission and task history live outside the AI conversation.
Claude or Codex can do the work without owning the project state.
Each coding task gets its own Git worktree instead of sharing one messy checkout.
A worker saying “done” starts validation. It does not end it.
Attempts, events, handoffs, and recovery state are saved so the work can resume.

These started as practical annoyances, not architecture buzzwords. The technical design came afterward.
When a coding worker finishes, Nightshift moves the work to validation. Tests, repository checks, and independent review determine whether it becomes verified.
COST: more steps and more time. BENEFIT: “the agent said it worked” is never the acceptance test.Claude, Codex, and future workers sit behind adapters. The objective, tasks, attempts, evidence, and history belong to Nightshift, not to whichever model happens to be running.
COST: adapter code and normalization. BENEFIT: the mission can outlive the worker.Workers get isolated repository state. Verified commits can move toward an integration branch in order, while unrelated changes stay contained.
COST: more Git bookkeeping. BENEFIT: containment, provenance, and rollback.Mission, task, attempt, and event data are written durably, while tmux keeps worker sessions attachable. Recovery is something the system knows about, not something I have to reconstruct from memory.
COST: state management. BENEFIT: long-running work becomes resumable instead of disposable.There is AI in the system, but I intentionally did not make every decision an AI decision. Once a plan is approved, ordinary deterministic code owns as much of the execution lifecycle as practical.
The job is written down independently of any one conversation.
An AI planner can help propose the task graph, but Nightshift validates the structure before execution.
Nightshift chooses an allowed worker based on the task and availability instead of handing over the whole mission.
The coding task happens in isolated repository state with its own provenance.
Tests, build, typecheck, targeted checks, and review evidence decide whether the work is actually acceptable.
Failures stay classified. Good work can move forward. Interrupted work can be resumed. Nothing silently merges the default branch.
For Run 10, I gave the system a small real change to its own codebase: add JSON output to nightshift doctor. The feature was intentionally boring. The point was to see whether the whole workflow could operate on itself without cheating.
Nightshift accepted the objective through its bounded operator interface, compiled the mission, launched a worker in an isolated worktree, ran the validation path, and produced a verified commit. The result was pushed and deliberately left unmerged.
I would rather show the line clearly than make the project sound further along than it is.
I wanted Nightshift to be operable from another interface without handing that interface a raw shell or the keys to the machine. So the operator bridge exposes ten named things it can ask Nightshift to do, and leaves arbitrary shell, filesystem, and SQL access out.
Nightshift started because I was already using AI coding tools constantly and kept running into the same operational problems. I am not trying to prove that an agent can run a company by itself. I am trying to make long-running AI-assisted work easier to trust, resume, inspect, and recover when real life happens.