Screens from the app running on example projects (a shop's web front end, its API and its docs).
Nightcrew hands each task you write to Claude Code, Codex or another agent from the ACP registry in its own git branch, checks the work before calling it done, and leaves you a short report in one inbox.
Screens from the app running on example projects (a shop's web front end, its API and its docs).
Nightcrew makes a git worktree and branch for each task, so several agents can work at once without touching each other's files or yours. In a background run the agent works inside that worktree without asking before every edit.
Changes run through harness, a set of skills, checks and reviewer agents shipped with the app. A run writes a short spec, works in small steps with a test and a commit each, and sends the result to reviewers before it reports.
When a step needs a decision only you can make, the run stops and says so on its card, instead of guessing.
Claude Code and Codex are built in. Settings → Engines lists the official ACP registry, so you can add another agent in one click; the bot picks one per task by its size and the quota left on your accounts.
45 in the registry today, among them Gemini CLI, Grok Build, GitHub Copilot, Cursor, OpenCode, goose, Qwen Code, Kimi Code and Mistral Vibe.
Download
This is a beta: it works for daily use, but expect rough edges and changes between builds. macOS 13 or later on Apple silicon. The disk image includes Node.js, an editor and the harness kit. Linux and Windows packages come next.
xattr -dr com.apple.quarantine /Applications/Nightcrew.app
0 downloads · 0 visitors so far
From the sentence you type to the report you read, in the order it happens. Everything here describes the current beta build.
The bot reads, sizes the task and delegates. It never edits files itself.
A bot runs on a Claude model you pick, in Claude Code print mode with read-only built-in tools (read, search, fetch) and only the MCP servers Nightcrew passes it. The engines below it can be any of the agents you installed. Its rules for each message:
/something is passed to the engine unchanged, so your own skills keep working.# what an engine receives for "Add CSV export to the orders page" /autopilot Add CSV export to the orders page: same filters as the table, at most 50,000 rows.
Each session works in <repo>/.worktrees/<branch> on its own branch from the base you chose. .env files are copied in and the project's setup script runs once. Two autopilot runs never share a worktree, so parallel agents cannot overwrite each other or your own checkout.
Autopilot is a harness skill. Harness is a folder of agent context shared by all your projects: skills, reviewer agents, hooks, standards per stack, and a record per run. A run goes through these stages, and the card follows them by reading the run record every 15 seconds:
Autopilot needs Claude Code through the ACP adapter and a repo registered in harness. Other engines and unregistered repos still run tasks, with normal approval cards.
A background run uses bypass permissions so it never waits for you. What it can do is still limited:
git push --force, -f, +ref, --mirror, --delete, :ref and --prune pushes in background runs, whatever the engine. In an ordinary session they come to you as an approval card.When an engine ends, the bot reads its report and the run's outcome, writes Done, Left and Needs you, and sends a macOS notification: done with the slice count, or blocked with the reason. The inbox regroups every few seconds.
The header shows the bot's context, measured from the model's own usage, against a limit: 200k tokens, or 60% of a smaller model window. It turns amber at 70%. When the conversation reaches the limit, and has grown at least a quarter of the limit past its fresh size, the next turn starts a fresh conversation from a brief.
Session brief: - Task: Add CSV export to the orders page - Branch: feat/orders-csv (base main) - Done: CSV export on /orders, 3 slices - Needs you: review the branch and open the PR - Latest engine run: Claude Code · sonnet (done) · autopilot · 3/3 slices · done + the last 20 messages
An engine prompt may run for up to 12 hours. If it still times out, the main run continues once on its own. Engines can also consult an advisor model (Fable 5.2 by default, set in Settings → Advisor) when they have a concern, instead of stopping to ask you.
About ten minutes on a Mac that already has git. Steps one to five happen once per machine, step six once per repo.
Open the disk image and drag the app to Applications. Builds are not notarized yet, so macOS stops the first open: go to System Settings → Privacy & Security and click Open Anyway. When macOS asks whether the app may use the Keychain, allow it: sign-ins and tokens are stored there.
The disk image already contains Node.js, a terminal editor, the notification helper and the harness kit, so a bare Mac needs only git and Python 3.11+ on top.
The first launch opens Settings → Setup. Every tool shows as found (with its path or version) or missing, with an Install or Sign in button that runs in a terminal you can watch. Re-check runs it again; when PATH changed, a Restart bar appears.
| Tool | Needed | What it is for |
|---|---|---|
| git | required | Worktrees and branches. Xcode's command-line tools are enough. |
| Claude Code CLI | required | The bot runs on it, and it is the default engine. |
| Claude sign-in | required | An account for the bot and engines. Sign in opens Accounts. |
| Node.js / npx | required | Runs the ACP adapters. Bundled in the app. |
| Claude ACP adapter | optional | @agentclientprotocol/claude-agent-acp, fetched by npx on first use. Needed for autopilot. |
| GitHub CLI (gh) | optional | Pull requests from Source Control. |
| Docker | optional | Projects whose checks start databases or services. |
| Python 3.11+ | optional | Only needed to install harness. macOS ships 3.9, which is too old. |
| harness | required | Install copies the bundled kit, links its skills, agents and hooks into ~/.claude and puts harness on PATH. |
Settings → Accounts lists Claude and Codex accounts. The default one is your normal Claude Code login; add more to spread work across quotas. Each account keeps its own config folder, and the bot runs a task on the account with the most quota left.
/accounts add codex for Codex.Claude Code (@agentclientprotocol/claude-agent-acp) and Codex (@zed-industries/codex-acp) are built in and start through npx. Any agent from the ACP registry installs from Settings → Engines in one click; an agent that is not listed is one block in the config file; it then appears in the bot profile's engine list, and the bot can pick it.
# ~/.config/w-terminal/config.toml [[engines]] name = "Claude Code (work)" command = "npx" args = ["-y", "@agentclientprotocol/claude-agent-acp"] models = ["sonnet", "opus", "haiku"]
Then choose, per bot, which engines it may use (Settings → Bots). The permission mode for a session cycles with shift+tab in the message box:
The mode is remembered per session, per project or for everything. When something needs approval, a card offers Approve, Always for this bot (saved as a rule) or Deny, and a macOS notification tells you it is waiting.
Settings → MCP servers: pick GitHub, Sentry, Linear, Notion, GitLab, Playwright or Filesystem, or a custom HTTP server or command. Paste its token (Linear and Notion sign in through the browser) and choose whether this project or all projects get it. The token goes to the Keychain; sessions get the server from their next turn.
Add a project folder with the + in the sidebar. If harness does not know it yet, you are asked once, with a key from the git remote (owner/name, or local/name without a remote) and layers guessed from the files it finds: Next.js, React, NestJS, .NET, Kotlin Spring, Postgres, Kubernetes. Register, or Not now. Setup lists every project and lets you register later.
Start a session on the repo (the + next to the project) and write the task. Then close the window or the laptop. A notification arrives when the run is done or blocked; the inbox has the rest.
you Add CSV export to the orders page. Same filters as the table, max 50k rows. bot Delegated to Claude Code · sonnet as a background autopilot run worktree feat/orders-csv · 0/3 slices · starting … 47 minutes later … Done: CSV export on /orders, 3 slices, checks green, walked in a browser Left: nothing Needs you: review the branch in Source Control and open the PR
# question there to ask the bot about the last command.