newnimbus record — managed packages on tape

The local runtime for Salesforce Apex

Run real Apex.
No Salesforce org.

Your SOQL, your triggers, your flows — even your managed packages, recorded once from your org — executed on your machine, in milliseconds. The write-run-fix loop you repeat forty times a day, with the org out of it. And when tests pass, the same tool ships them: gated deploys, Salesforce validation, release receipts.

prove it on the repo you already have

curl -fsSL https://testnimbus.dev/install.sh | sh

Installs in seconds macOS · Linux · Windows No Docker, no JVM

InvoiceServiceTest.cls
@isTeststatic void recalculatesNetTotal() {  Invoice__c inv = new Invoice__c(Amount__c = 100);  insert inv;                    // real DML  Test.startTest();  InvoiceService.recalc(inv.Id); // triggers fire  Nebula.Logger.saveLog();       // from your org  Test.stopTest();  System.assertEquals(119, [    SELECT Net__c FROM Invoice__c WHERE Id = :inv.Id  ].Net__c);}
the org loop
sf apex run test --wait 10
Deploying source… Enqueued… Polling…
Test run complete4m 12s
the local loop
nimbus test InvoiceServiceTest
✓ recalculatesNetTotal
1 passed · 0 failed240ms
// now multiply by every run you make today
powertrain · source in, deploy out
apexsoqlsqlrowsgatepayloadflowsreplaysavepointsLOCKSTEPflow runtimeCASSETTErecord & replayERAtransaction fidelityQUILLapex interpreterCARBONsoql translatorLEDGERdata engineSIGNETdeployability

seven engines, one binaryOpen the engine room

  • Runs entirely on your machine
  • Drops into your existing SFDX project
  • Managed packages included
  • First green test in minutes, not days

why this, why now

Every language runs on the developer's machine. Now Apex does too.

Every wait your team treats as normal — the four-minute deploy to test a one-line change, the shared-sandbox data bleed, the CI org ritual — exists because Apex only ran in an org. That constraint is gone. Install Nimbus, point it at the repo you already have, and run the whole suite this morning. When it's green, ship it with the same tool.

the bottleneck

The Salesforce org is your bottleneck.

If you wrote Apex today, you also waited today. Push, deploy, wait, repeat — a tax on every single change, for every developer on the team. This is the part of the job Nimbus deletes.

The shared org problem

You change one line in a trigger. Push to scratch org. Wait 4 minutes. Tests fail because another developer's test data is polluting the database. Spend 20 minutes debugging someone else's problem. Multiple devs, one environment, constant friction.

The onboarding tax

New developer joins. Day 1: request org access. Day 3: admin provisions a sandbox. Day 5: they finally run their first test. Five days to run a single test. Every new hire, on every project.

The CI/CD tax

Your pipeline needs a connected org, a JWT cert, a DevHub with available scratch org limits, and a prayer the org pool isn't exhausted. When it breaks — and it eventually does — the failure is rarely in your code. Meanwhile your Java team has Codecov badges that just work.

None of this is the work. It's overhead from the org being in the loop — and it ends the first time you run nimbus test. Install and run your suite now.

Proof, not adjectives

Runs the frameworks Apex teams actually depend on — unmodified.

apex-recipes, fflib-apex-mocks, and Nebula Logger run on Nimbus with no source changes — thousands of their own real tests, passing locally. No per-test limits. Run your whole suite.

Verify it yourself:

git clone …/fflib-apex-mocks && cd fflib-apex-mocks && nimbus test "*"

the surface

Apex, SOQL, DML, triggers & flows — executed locally.

The Apex surface Nimbus executes natively — classes, data, automation, and tests. It grows with every release.

Language

  • Classes, interfaces, enums
  • Inheritance and polymorphism
  • Generics and typed collections
  • Exception handling
  • All Apex annotations

Data

  • SOQL queries
  • DML (insert, update, delete, upsert)
  • Bind variables
  • Aggregate functions
  • Relationship queries

Automation

  • Before and after triggers
  • Record-triggered flows
  • Autolaunched flows and subflows
  • Flow formulas and decisions
  • Platform event flows

Testing

  • @isTest and @testSetup
  • System.assert variants
  • Test.startTest / stopTest
  • Stub API / ApexMocks
  • Per-test transaction isolation
limits · what the org still owns

What still needs the org.

Nimbus runs the ~80% of tests that exercise business logic, SOQL, triggers, and class behaviour. It does not replace your org for:

  • OWD and role-hierarchy sharing (the with sharing keyword is enforced)
  • Approval processes, assignment rules, validation-rule packages
  • Lightning UI / browser testing
  • Final pre-deployment validation — your org is still the source of truth

The org stays the source of truth — and Nimbus now runs that final gate for you: gated deploys with real Salesforce validation. See the full comparison.

the machinery, named

Seven engines. Each owns a slice of the platform.

Real execution isn't one trick — it's purpose-built machinery for every layer of platform behaviour. These are the engines inside the binary.

Quill

apex interpreter

Executes real Apex — classes, triggers, async jobs, order of execution — from a full parse of your source. Built to agree with the platform down to the error messages.

Carbon

soql translator

Rewrites every SOQL query as PostgreSQL on the fly — binds, relationship queries, aggregates, sharing. A faithful copy of the platform's query semantics, one sheet down.

Ledger

data engine

An embedded PostgreSQL that behaves like the Salesforce database: standard objects, field-level security, record types, rollups. No Docker, no setup, no org.

Era

transaction fidelity

Savepoints, partial success, rollback. DML that fails inside a test fails exactly the way the platform fails it — caught, partial, or rolled back — without the speed tax.

Lockstep

flow runtime

Record-triggered and autolaunched flows fire in the same order-of-execution slots the platform uses — in step with triggers, formulas, and rollups.

Cassette

record & replay

Records managed-package calls from a real org once, then replays them offline forever. Written to disk, checked into git, deterministic.

Signet

deployability

The ship-gate: save-time rejects caught locally, green validations sealed into release receipts, deploys gated on exactly that payload.

How the seven engines fit together

One binary, the whole toolchain

Once Apex runs locally, everything else follows.

A debugger, a language server, mutation testing, coverage, AI agents — none of it was possible while the org was in the loop. Move execution to your machine and the whole toolchain comes with it. And once every gate runs locally, the deploy itself can be gated too.

Run

Real Apex runtime

Classes, SOQL, DML, and triggers execute against an embedded PostgreSQL.

Run

Managed packages

nimbus record captures a package's classes, values, and per-call answers from your org once. NPSP and Nebula Logger code then runs locally.

Run

Flow testing

Record-triggered, autolaunched, and screen flows run alongside your Apex.

Edit

Apex Language Server

Code lenses, inlay hints, semantic tokens, and call hierarchy in any LSP editor.

Edit

VS Code & JetBrains

First-class plugins with full parity — inline results, run buttons, coverage gutters.

TestPro

Mutation testing

Mutates your code and checks your tests catch it — a category first for Apex.

TestTeam

Coverage & CI

Line and branch coverage. JUnit XML, Cobertura, and HTML into any pipeline.

DebugPro

Live step debugger

Breakpoints and variable inspection over DAP — live, not log replay.

DebugPro

Execution traces

Structured OpenTelemetry traces of every call, query, trigger, and branch.

Debug

Browser Dev UI

Test explorer, coverage, schema browser, and an Apex REPL — no editor needed.

Integrate

MCP for AI agents

Agents call the runtime natively over JSON-RPC for tight write-test-fix loops.

IntegratePro

Local Salesforce API

A Salesforce-compatible REST and gRPC Pub/Sub server, on localhost.

IntegratePro

Background daemon

Warm the whole codebase once; every run after that starts in milliseconds.

Ship

Gated deploys

nimbus deploy: local gates, Salesforce validation of the same bytes, then deploy. One command.

ShipPro

Release receipts

Validate once, approve, quick-deploy exactly the validated payload — portable across CI machines.

Ship

Salesforce CLI pass-through

Any sf command through nimbus sf — arguments, prompts, and exit codes preserved.

The modern way to develop Apex

What fast, local Apex development unlocks.

Four capabilities that reshape Apex development day to day — real execution, live debugging, mutation testing, and traces. Each links to the full story.

Real execution. Not mocks.

Your SOQL actually runs. Your triggers actually fire. Your DML actually persists. Nimbus executes Salesforce Apex against a real embedded PostgreSQL database — not a simulated environment. No fake return values, no stubbed runtime. And no speed tax: a typical test still completes in tens of milliseconds.

Why an embedded database

Live debugging — not replay.

Pro

The Apex Replay Debugger works from a log after execution. Nimbus debugs live — set breakpoints, step through code, inspect variables in real time. Supported in VS Code and JetBrains IDEs.

See the debugger

Mutation testing for Apex.

Pro

Nimbus mutates your code — flips operators, negates conditions, changes returns — and checks if your tests catch it. A category first for the platform. 75% coverage means nothing if mutants survive.

How mutation testing works

Execution traces, not log files.

Pro

Every test run produces a structured OpenTelemetry trace — method calls, SOQL, DML, triggers, branches, variable assignments — visualized as an interactive tree. Not a 40,000-line debug log.

Explore traces & analytics

From local pass to production

When the tests pass, ship — with proof.

The tool that watched every test pass is the right tool to deploy them. nimbus deploy snapshots your source, runs your local gates, validates the identical payload in Salesforce, then deploys it — one command, receipt included. nimbus release splits validate from deploy so an approval can sit between them, in CI or in your editor.

And nimbus sf passes any Salesforce CLI command through unchanged — every current and future sf capability, one entry point.

How assured deploys work
deploy & release
# One command: gates → org validation → deploy
nimbus deploy --target-org staging --source-dir force-app

# Or split it: validate now, approve, deploy later
nimbus release validate --release-profile production
nimbus release deploy --receipt .nimbus/releases/rel_01J9.json \
  --confirm-production

# Any sf command, unchanged
nimbus sf org login web
nimbus sf data query --query "SELECT Id FROM Account"
The safe path is the short command — and it's Free.

For the whole team

Every release, provable — by anyone.

Each release leaves a signed receipt: what was tested, who validated it, who deployed it, whether the org drifted, and a change reference — tamper-evident, and true whether you read it on the command line or hand it to an auditor.

nimbus assurance opens that evidence to the people who read releases but never open a terminal — release managers, auditors — in a console that verifies every signature live. It runs read-only on your own network. Your code and receipts never leave your walls; there is nothing to trust us with.

The Assurance console
assurance
# A team console over every release's evidence
nimbus assurance

# Verified live in the browser: who validated,
# who deployed, checks, drift, signature status.

# Archive the evidence for retention — and
# re-verify it, offline, years later.
nimbus release export  --output evidence-Q3.json
nimbus release verify-export evidence-Q3.json
Runs inside your walls. Nimbus hosts nothing.

the boundary

Where Nimbus fits.

Nimbus owns the loop — the org stays the platform. Here's the contrast in one screen — full comparison.

vs. scratch orgs
Push source. Wait. Run. Wait again. 2–10 min per cycle, plus DevHub limits.
No push. Tests run in milliseconds against an embedded database.
vs. ApexMocks
Stub everything. Tests pass while real SOQL, triggers, and DML stay untested.
Real SOQL. Real DML. Real triggers — executed against a real database. Same speed as mocks, with real coverage.
vs. sandbox CI
JWT cert, connected org, scratch org pool, prayer. Breaks in ways nobody can debug.
JUnit XML and Cobertura — plug into GitHub Actions, SonarQube, Codecov.
vs. deploy-and-pray
sf project deploy start ships whatever is in the worktree. The tests that passed ran against a different revision.
nimbus deploy snapshots the payload, gates it locally, validates the same bytes in Salesforce, then deploys — with a receipt.

Configuration

Your test environment belongs in git.

In Salesforce, your test environment is configured through Setup UI and Custom Settings — none of it in source control, none of it shared with your team. Nimbus flips that. One nimbus.properties file, committed to your repo, configures everything: governor limits, org defaults, custom setting seeds, database settings.

Profiles let CI enforce strict governor limits while local dev stays relaxed. Same binary. Same file. No wrapper scripts.

nimbus.properties
# Commit this to your repo

nimbus.governor.mode=warn
nimbus.org.currency=EUR
nimbus.org.timezone=Europe/Berlin

# Seed custom settings - no @testSetup boilerplate
nimbus.seed.org-default.TriggerSettings__c=IsEnabled__c=true
nimbus.seed.org-default.FeatureFlags__c=NewUI__c=false

# CI: strict enforcement, no browser
%ci.nimbus.governor.mode=strict
%ci.nimbus.test.parallel=2
%ci.nimbus.devui.open-browser=false
%ci.nimbus.db.url=${DATABASE_URL}
NIMBUS_PROFILE=ci nimbus test

Why fast, local Apex matters now

AI agents can write Apex. They can't wait 10 minutes to test it.

Tools like Claude Code, Cursor, and Copilot work in write-test-fix loops. That loop only works when "run tests" takes seconds, not minutes. An AI agent can generate a trigger handler in seconds — but verifying it still means deploying to an org.

Agents need fast feedback to self-correct. With Nimbus, an agent iterates on Apex the same way it iterates on Python or TypeScript.
Agents don't have org credentials. An agent running in your terminal can run nimbus test. Local testing makes Apex accessible to the same agentic workflows that work for every other language.
Agent writes Apex~5s
nimbus test~200ms
Agent reads results, fixes~5s
With org testing5–10 min / iteration
With Nimbus~10 sec / iteration

For tech leads

How Nimbus fits a real Salesforce team.

What about platform fidelity?

Nimbus runs the 80% of tests that exercise business logic, SOQL, triggers, and class behavior. Sharing rules, UI, and approvals still need an org. We list every gap on the comparison page — no hand-waving.

Isn't a real database slower than an in-memory runtime?

No — not where it counts. A typical Salesforce Apex test on Nimbus completes in tens of milliseconds, real SOQL and DML included, and suites of thousands of tests finish in seconds. The embedded PostgreSQL is stripped down and tuned for test workloads (unix socket, fsync and WAL off), and in head-to-head suite runs Nimbus finishes entire OSS suites that in-memory Apex simulators time out on. The real database buys correctness; it does not cost you speed.

What runs locally vs. on Salesforce?

Everything Nimbus supports runs on the developer machine. No source code or schema leaves the laptop. The org remains the deployment target and the system of record for production.

How does this fit our release pipeline?

Both ends of it. Pre-merge: nimbus test in CI, no connected org — JUnit XML and Cobertura drop into the tools you already run. Pre-deploy: nimbus release validate runs your local gates plus a real Salesforce check-only validation and writes an immutable receipt; after approval, nimbus release deploy ships exactly that validated payload. The raw sf deploy stays available, spelled explicitly.

Works withVS CodeJetBrainsCursorWindsurfNeovimGitHub ActionsGitLab CISonarQubeCodecovClaude CodeCopilotMCP

pricing

Free for every developer.

Free

$0 forever

For individual developers

  • Apex runtime — real execution
  • Unlimited test runs
  • SOQL, DML, triggers & flows
  • Code coverage (console, JSON, HTML)
  • Governor limit enforcement
  • Gated deploys (nimbus deploy)
  • Salesforce CLI pass-through (nimbus sf)
  • VS Code & JetBrains integration
  • 1 machine
  • Community support
Install free

get started

Available today. Install in one line.

The Free tier is live now — install in one line. Sign up for a free Pro license, and join the Slack to ask questions and shape what's next.