Runtime upgrades
Move every service from Node.js 18 to 22 with engines, .nvmrc, Docker images and CI matrices found for you.
Verified end to end for Node.js
Codebase-wide change, run as a campaign
ShiftOps plans, coordinates, and verifies code migrations across every repository from one place. Find every affected repository, plan the order, hand the work to Devin with your approval, and accept a change only when its own checks pass.
Campaign
Upgrade Node.js 18 to Node.js 22
Wave 1
shared-config
auth-sdk
Wave 2
orders-api
billing-api
Wave 3
web-storefront
legacy-admin
billing-api · latest verification
The problem
Organisation-wide changes stall in spreadsheets: nobody knows which repositories are affected, which order is safe, or whether an automated change actually works.
Without ShiftOps
With ShiftOps
How a campaign runs
Each step stores what it saw and what it decided, so the campaign can be audited after the fact.
Open a checkout, search a folder, or import from GitHub: metadata only, a clone into an approved workspace, or a link to a clone you already have.
A read-only scanner records runtimes, package managers, frameworks, scripts, Docker and CI, each with the file and line it came from.
A deterministic planner classifies every repository against the goal, scores risk with cited evidence and orders dependency-first waves.
Each repository gets a generated Devin task. You approve its exact text; dispatch runs in Devin's sandbox, only for trusted, clean checkouts.
ShiftOps runs the repository's own checks itself and records real exit codes. A finished agent session never counts as verified on its own.
Repairable failures become a bounded repair task, at most two per repository. The same approved checks re-run afterwards, only if unchanged.
Use cases
Move every service from Node.js 18 to 22 with engines, .nvmrc, Docker images and CI matrices found for you.
Verified end to end for Node.js
See which repositories declare a package, at which range, and which internal packages depend on each other.
Planning and delegation
Find every workflow and Dockerfile that needs the same edit, and track the change repository by repository.
Planning and delegation
Independent verification
ShiftOps reads the plan from the repository's own package.json and lockfile, shows you every command and script body, and runs them only after you confirm. The plan is hashed: if a script changes, nothing runs until you review it again.
Checked in the native core, not just the interface.
Every check stores its exit code, duration and redacted output.
At most two repair tasks per repository. No infinite loops.
Only a passing run marks a repository verified.
Safety by construction
State lives in SQLite on your machine. Repositories are read with your own Git.
Tokens stay in the OS keychain and never reach the interface, logs or database.
Every process runs from an allow-listed argument vector, never a shell string.
An initial HTTPS clone into a workspace you approved. No hooks, no submodules, no tokens in URLs.
Read the full security model.
Desktop app
Unsigned pre-release installers for macOS, Windows and Linux are on GitHub Releases, or build ShiftOps from source in a few commands.