A dark factory for software.

Table of contents
  1. The name
  2. Why this exists
  3. How it works
  4. Where work comes in
  5. FAQs
  6. The full list
  7. The creators
  8. Book a demo

Background coding agents

Describe the task. Get back a pull request that proves it works.

Darkshift is a dark factory for software. You describe a change in plain language. An isolated AI coding agent implements it, runs your repo's own checks, and QAs it in a real browser with the session recorded. Most tasks finish in 5 to 30 minutes, and the pull request is waiting when you look. No local dev environment, ever.

Book a demo

$99 per user per month, plus model usage at the provider's rates. See pricing.

The line, end to endA task written in plain language enters a sealed sandbox. Inside, the repos are cloned, the change is implemented, your checks run with fix attempts, and the result is QA'd in a real browser with the session recorded. What leaves the boundary is one pull request per changed repo, carrying the passing checks and the recording.1 · TASKwebapiPLAIN LANGUAGE2ISOLATED SANDBOXCLONEIMPLEMENTCHECKSFIX ATTEMPTSBROWSER QAQA SESSION RECORDED TO VIDEO3 · PULL REQUESTfactory/csvlintPASStypesPASSe2ePASSqa.webm 0:47ONE PER CHANGED REPO
Fig. 1A task enters, the factory works inside a sealed boundary, evidence comes out.

The name

The factory floor is dark. The output isn't.

A dark factory is manufacturing's term for a plant that runs unattended, lights off, because nobody is on the floor. That is what a software factory becomes when the work no longer needs your laptop open.

Darkshift runs the shift nobody is staffing. Lights out on the line, evidence on every pull request.

Why this exists

Ramp and Uber built their own. You can plug one in.

The best engineering orgs already run a second shift. They had to build it. You don't.
~40%of merged PRs at Ramp are written by their in-house agentRamp · Inspect
~1,800agent-written changes shipped per week at UberUber · Minion
90%of the Fortune 100 use a background coding agentGitHub · Copilot
180+features shipped across Darkshift, Hashnode and Bug0 in two weeksDarkshift · July 2026

How it works

Task in, pull request out.

The PR is the approval gate, so there is no new workflow to adopt: work arrives where your team already reviews it. Fig. 1 above is the whole line; the three figures below are detail views of each station.

1

Describe the task

Describe it in plain language, or feed it in from Linear: a ticket becomes a task. Point Darkshift at one repo or several, and pick the AI coding agent per task: Claude Code, Codex, Grok Build, or Kimi Code.

A task fans out to sibling repo clonesA single plain-language task names the repos it affects. Each is cloned as a sibling directory inside the same sandbox, so a change spanning several services is one task, not several.TASKwebapiworkersCLONED AS SIBLINGSONE TASK · ONE SANDBOX
Fig. 2One task, every repo it touches, cloned side by side.

2

The factory works

An isolated sandbox clones your repos and implements the change. It runs your repo's own checks and fixes its own failures, up to 3 attempts. Then it re-reads the diff the way a skeptical reviewer would, and QAs any UI change in a real browser, recorded.

Checks and fix attempts inside the sandboxThe agent edits the working tree inside an isolated sandbox and runs the repo's own checks. A failing check is fed back for another fix attempt.ISOLATED SANDBOXIMPLEMENTCHECKSFIX ATTEMPTSlintPASStypesPASSe2eRUN
Fig. 3Your checks run inside the boundary, with fix attempts when one fails.

3

Review evidence-backed PRs

One pull request per changed repo, with the QA recording attached. Follow-up messages stack commits onto the same PRs.

Pull requests with attached evidenceEach changed repo gets its own pull request on a factory branch. The passing checks and the recorded browser QA session are attached to it, so the pull request is the review surface: there is no separate approval step.factory/csv-exportlintPASSe2ePASSqa.webm 0:47factory/csv-exportlintPASSe2ePASSwebapiTHE PR IS THEREVIEW SURFACENO APPROVAL GATE
Fig. 4One pull request per changed repo, carrying its own proof.

Most tasks finish in 5 to 30 minutes, depending on size. The run is server-side, so you can close the tab and it finishes without you.

Several repos at once
One task can touch the API and the frontend. Each changed repo gets its own pull request.
Several tasks at once
Every task runs in its own isolated sandbox, so queue as many as you like.
Your pick of agent
Claude Code, Codex, Grok Build, or Kimi Code, chosen per task.
QA behind your login
Sign in to your app once; later runs test the signed-in pages too.

Where work comes in

Work comes in the way it already does.

From a PRD to a pull request: work enters the factory the way it already enters your team, as specs, tickets, and logged bugs. It leaves as PRs.

Work in
Linear, Jira, Slack
Code out
GitHub
Agents
Claude Code, Codex, Grok Build, Kimi Code

PRD → PR

Hand it the spec

Paste a PRD as the task. The factory implements it across every repo it touches and opens one PR per changed repo.

Ticket → PR

Point it at the board

Connect Linear or Jira: a labeled ticket becomes a task, and the finished PR lands back on the ticket, ready to review. Or tag the agent in Slack.

Bug → PR

Route it the bug

A logged bug becomes a fix run: the factory patches, re-runs your checks, QAs the fix in a real browser, and the PR is ready to review and merge.

As for what it runs on: any repo Darkshift can clone, install, and run your checks against. You give it the setup and check commands once, on the Repos page, and every future run follows them.

FAQs

Built for the questions your team will ask.

What does it cost?

$99 per user per month. That is the platform: tasks against your connected repos, isolated sandboxes, recorded browser QA, and the pull requests. Model usage is separate and paid one of three ways: metered at each provider's published rates with no markup, or on your own API key, or on a Codex subscription you already pay for.

Does it work with our stack?

If your repo builds and tests on a Linux box, it runs here. You register setup and check commands once per repo, plus any environment variables it needs, and every future run follows them. Darkshift connects through a GitHub App you scope to the repos you choose.

Can the agent see our secrets?

No real credential ever enters the sandbox. The agent's CLI runs on a placeholder. Real model keys and GitHub tokens are injected into outbound requests in transit by the sandbox firewall, and each repo gets its own token scoped to that repo alone. There is nothing in the VM to exfiltrate.

What happens when it gets something wrong?

You close the pull request. Darkshift never merges and never pushes to your default branch. A run that changed nothing opens nothing. The worst case is a branch you delete, and the PR description tells you upfront what it did not verify.

“Agent PRs are slop.”

Every PR ships with evidence. Your repo's checks run with fix attempts, the agent self-reviews, and UI changes are QA'd in a real browser with the recording attached to the PR. Reviewers can watch the change working before they read the diff.

“We could build this ourselves.”

You could. It costs a platform team. Sandbox infrastructure, image caching, credential plumbing, browser QA, then permanent maintenance. Darkshift is a GitHub App you connect today.

“An agent doesn't know our codebase.”

The agent improves with every task. Key decisions and caveats from every run persist to a team-wide shared memory, so the next task starts smarter, for everyone on the team. Seed it by importing shared context from Notion, Jira, or Linear.

The full list

Everything the factory does.

  • Task in, PRs out. Submit a task and close the tab; the finished pull request waits for you.
  • Recorded browser QA. Every UI change ships with a video of it working in a real browser.
  • Parallel tasks. Every task runs in its own isolated sandbox, so queue several at once.
  • QA behind your login. Sign in to your app once; later runs test the signed-in pages too.
  • Follow-ups on the same PR. Reply like you would to a teammate and new commits stack on.
  • Your checks decide done. It runs your repo's lint, types, and tests, and fixes its own failures before you see a PR.
  • Multi-repo tasks. One task can touch the API and the frontend; each changed repo gets its own PR.
  • Intake from anywhere. A Linear ticket, a Slack mention, a screenshot, or a plain sentence.
  • Your pick of agent. Claude Code, Codex, Grok Build, or Kimi Code, chosen per task.
  • Bring your own keys. Add your Anthropic, OpenAI, Azure OpenAI, xAI, or Kimi key, or connect a Codex subscription; the provider bills you directly.
  • It can't wreck your repo. No merging, no pushing to your default branch; the worst case is a PR you close.
  • PRs that explain themselves. Every description carries a summary, verification steps, and honest caveats.
  • No junk PRs. A run that changed nothing opens nothing.
  • House rules, remembered. Per-repo notes and commands that every future run follows.
  • Live narration. Watch the agent reason through the work in plain prose, or check back later.
  • Nothing to install. No CLI, no plugin, no local checkout; any browser works.
  • Grant one repo to start. Access is a GitHub App install you scope and revoke in GitHub.
  • Self-improving agent. Key decisions and caveats from every run persist, so the next task starts smarter.
  • Team collaboration. Invite teammates by email; everyone shares the team's repos, runs, and history.
  • Cloud MAX. Our name for the whole point: no local dev environment at all, the entire workflow runs in the cloud.

The creators

We built it to run our own companies.

Darkshift runs Hashnode, one of the largest developer publishing platforms, and Bug0. It started as the internal factory that kept both shipping with 1 or 2 engineers, built by the team behind them, and that factory became the product.

Your backlog isn't getting shorter.

Book 30 minutes and watch Darkshift clear a real ticket from your repo, live.

Book a demo

$99 per user per month, plus model usage at the provider's rates. See pricing.