Run, test, debug, and ship Salesforce Apex locally. No org. No Docker. No JVM.
At its core, Nimbus is a local Apex runtime: it executes Apex classes, triggers, Flows, SOQL, and DML on your machine — against a real embedded PostgreSQL database — so you can run Apex tests locally without a Salesforce org. A typical test finishes in milliseconds, which makes Apex fast enough for tight TDD loops, agent-driven development, and CI that doesn't depend on a scratch org pool.
Around that runtime has grown the rest of the toolchain: a Language Server and live debugger, an interactive dependency graph of your whole codebase, mutation testing, execution traces, and a release surface that validates and deploys the same code it just proved — all from one binary.
🌐 testnimbus.dev · 📖 Docs · 🚀 Quickstart · 💬 Slack
The Salesforce inner dev loop runs through an org. You change one line, push to a scratch org or sandbox, wait minutes, and run your tests over the wire. Nimbus removes the org from that loop:
- ⚡ Tests in milliseconds, not minutes — no deploy, no round-trip.
- 🗄️ Real execution, not mocks — SOQL runs as SQL against embedded PostgreSQL, DML persists, triggers fire, Flows execute.
- 🔌 No org, no credentials, no Docker, no JVM — a single binary, point it at your existing SFDX project and run. Works offline.
- 🕸️ Your codebase as a graph —
nimbus graphmaps classes, triggers, Flows, SObjects, custom metadata, and labels into a dependency graph — in the terminal, or the interactive viewer in the Dev UI, VS Code, and JetBrains. It includes the edges no static analyzer sees: DML on an object reaching its triggers and record-triggered Flows. - 🚢 Ship what you proved —
nimbus deployruns your local gates, validates the same bytes against Salesforce, then deploys.nimbus releaseadds signed receipts, recorded quality gates, promote & rollback. - 🤖 Built for AI agents —
nimbus mcpexposes the test runner over MCP so Claude Code, Cursor, and Copilot can iterate in write-test-fix loops. - 🧪 Mutation testing for Apex — verify your tests actually catch bugs.
- 🧰 CI-native — JUnit and Cobertura XML drop straight into GitHub Actions, GitLab CI, SonarQube, and Codecov.
macOS / Linux
curl -fsSL https://install.testnimbus.dev | shHomebrew
brew install nimbus-solution/nimbus/nimbusWindows (PowerShell)
irm https://testnimbus.dev/install.ps1 | iexScoop
scoop bucket add nimbus https://github.com/nimbus-solution/scoop-nimbus
scoop install nimbusSalesforce CLI plugin
sf plugins install @nimbus-solution/nimbus-sf-plugin
sf nimbus login
sf nimbus test "*"The plugin source lives in sf-plugin/. It installs the native
Nimbus runtime automatically, verifies the release checksum, and shares the
same Nimbus Pro login as the standalone CLI.
From the root of your SFDX project:
# Run every test
nimbus test "*"
# Run a class or method pattern
nimbus test "AccountServiceTest.*"
# With coverage (Cobertura XML) + JUnit XML test results for CI
nimbus test "*" --coverage-report coverage.xml --results-xml results.xml
# What can a change to this class reach? The dependency graph, from the CLI
nimbus graph AccountService
# Local gates → Salesforce validation → deploy, in one command
nimbus deploy --target-org stagingA ready-to-copy GitHub Actions workflow lives in
examples/ — see also the CI/CD guide.
Nimbus reads your sfdx-project.json, finds your classes, triggers, and Flows,
and runs your real @isTest classes — the same ones that run on the platform.
No copying, no parallel project, no rewriting tests.
No project at hand? Clone
berlinbrew-demo — a
real-shape Salesforce DX project built to showcase Nimbus — and run
nimbus test in it.
Full guide: testnimbus.dev/quickstart
Everything below ships in the same binary you just installed.
nimbus test · nimbus exec — classes, triggers, SOQL, and DML execute
against an embedded PostgreSQL, with parallel execution. nimbus exec is
Execute Anonymous, locally.
Why an embedded database →
Record-triggered, autolaunched, and platform-event Flows (and their subflows) run alongside your Apex — same DML, same test. Flow testing →
Line, method, and branch coverage on every run — console, HTML, JSON, and
Cobertura output. nimbus coverage diff compares two runs for PR gates: the
delta, per-file regressions, the exact lines that lost coverage.
Coverage →
nimbus test:watch — save a class and the impacted tests re-run in
milliseconds. Dependency-tracked, so only the tests that need to run do. (Pro)
Watch mode →
nimbus mutate — flips operators, negates conditions, changes returns, and
checks your tests notice. Coverage tells you code ran; this tells you it's
tested. (Pro)
Mutation testing →
nimbus fixture — generates a TestDataFactory from your actual schema: a
create method per SObject, required fields populated, required lookups wired
parents-first.
Test data →
Declarative mock responses for callout tests and anonymous execution — URL pattern matching (Pro), no code changes to your classes. HTTP mocking →
SOQL, DML, CPU, and heap limits enforced locally — and configurable, so limit bugs surface on your machine instead of in the org. Governor limits →
Run tests that touch managed-package classes: namespace handling, symbol resolution, stub scaffolding and auto-generation (Pro). Managed packages →
nimbus explain · nimbus triage · nimbus history — the full account of a
failure (exception, source location, expected vs. actual, the SOQL and DML
just before), failures grouped by cause, and every past run browsable in a TUI.
Failure intelligence →
nimbus dap — breakpoints, stepping, and variable inspection over DAP. Live
execution, not log replay. (Pro)
Debugger →
Every test run produces a structured OpenTelemetry trace — method calls, SOQL, DML, triggers, branches — explorable as a tree, not a 40,000-line debug log. (Pro) Traces & analytics →
nimbus bench — run a test method N times and get mean, median, p95, p99, and
governor-limit headroom. Treat Apex performance like any other language. (Pro)
Bench →
nimbus graph — classes, triggers, Flows, SObjects, custom metadata, and
labels as one graph, including DML-to-trigger and DML-to-Flow edges no static
analyzer sees. Interactive viewer in the Dev UI, VS Code, and JetBrains.
Dependency graph →
The dependency graph of berlinbrew-demo in the interactive viewer — highlighted, what a change to the selected class can reach.
nimbus dev — test explorer, coverage, schema browser, and an Apex REPL in
your browser. No editor needed. (nimbus schema opens the schema explorer
directly.)
Dev UI →
nimbus lsp — code lenses, inlay hints, semantic tokens, and call hierarchy in
any LSP editor: VS Code, Cursor, Neovim, Zed, JetBrains, Helix, Emacs.
Language Server →
nimbus app — a local development server for Salesforce Multi-Framework UI
bundles, running your app against the local runtime and database. A drop-in
replacement for sf ui-bundle dev that works offline. (Pro)
App hosting →
nimbus deploy — local gates, Salesforce validation of the same bytes, then
deploy, in one command. nimbus release adds signed receipts, recorded quality
gates, promote & rollback (Pro). The self-hosted Assurance console serves
the whole audit trail — receipts, gate results, deployment history — to your
team. nimbus sf passes any Salesforce CLI command through untouched.
Deploy & release → ·
Assurance →
nimbus mcp — Claude Code, Cursor, and Copilot call the runtime natively for
tight write-test-fix loops, with curated agent skills via nimbus skills. It
also tests Headless 360 tool surfaces — @InvocableMethod, @AuraEnabled,
@RestResource — locally.
Agentic development → ·
Headless 360 →
nimbus serve — a Salesforce-compatible REST and Pub/Sub gRPC server on
localhost, for testing integrations without an org. (Pro)
Local API →
nimbus daemon — warm the codebase once; every run after that starts in
milliseconds. (Pro)
Daemon →
| Command | What it does |
|---|---|
nimbus validate |
Syntax and apiVersion checks without running tests — catches what the deploy would reject |
nimbus doctor |
Verify install, project layout, governor settings, runtime version |
nimbus sync |
Incremental schema sync into the local database (--rebuild for full) |
nimbus orgs |
List SF-CLI-authenticated orgs available for sync and fallback |
nimbus stub |
Scaffold and inspect stubs/, loaded before your main source |
nimbus new |
Scaffold a class, test class, or trigger with its -meta.xml |
nimbus skills |
Install curated agent skills for Apex development |
nimbus toolchain |
Pinned Salesforce CLI versions for reproducible CI |
nimbus config · cache · db · reset |
Configuration and database housekeeping |
nimbus login · status |
Pro license and install status |
nimbus upgrade |
Self-update in place |
Full reference for every command and flag: testnimbus.dev/docs
| Area | Coverage |
|---|---|
| Language | Classes, interfaces, enums, inheritance, generics, exceptions, all annotations |
| Data | SOQL (WHERE, ORDER BY, LIMIT, aggregates, relationships, bind vars), DML (insert/update/delete/upsert/undelete) |
| Automation | Before/after triggers, record-triggered Flows, autolaunched Flows, subflows, platform-event Flows |
| Testing | @isTest, @testSetup, System.assert*, Test.startTest/stopTest, Stub API / ApexMocks, per-test transaction isolation |
| Insight | Interactive dependency graph (classes, triggers, Flows, SObjects, custom metadata), nimbus explain, failure triage, run history, execution traces |
| Tooling | Live debugger (DAP), standalone Language Server, browser Dev UI, watch mode, mutation testing, fixture generation, governor-limit enforcement |
| Ship | Gated deploys (nimbus deploy), assured releases with signed receipts (nimbus release), sf pass-through (nimbus sf), pinned CLI toolchain for CI |
| CI | JUnit XML, Cobertura XML, JSON, HTML coverage, release-in-CI templates |
| AI | MCP server (nimbus mcp) for Claude Code, Cursor, Copilot; agent skills for Apex |
Coverage expands every release — see the changelog.
The Nimbus Language Server is standalone, so it works beyond VS Code: VS Code, Cursor, Windsurf, Neovim, Zed, JetBrains, Emacs, Helix. The VS Code extension is published to both the Microsoft Marketplace and the Open VSX registry, and there's a dedicated JetBrains plugin.
- vs scratch orgs — milliseconds vs minutes; no DevHub limits.
- vs ApexMocks / fflib — a real database vs stubbed return values.
- vs Apex Replay Debugger — live breakpoints vs replaying a log.
Free for individual developers, forever — including the runtime, unlimited test runs, coverage, and gated deploys. Pro and Team add the daemon, parallel execution, watch mode, the live debugger, mutation testing, the local Salesforce API, and assured releases. Pro is currently free for every developer, no card required — see pricing.
- Website — https://testnimbus.dev
- Documentation — https://testnimbus.dev/docs
- Quickstart — https://testnimbus.dev/quickstart
- FAQ — https://testnimbus.dev/faq
- Changelog — https://testnimbus.dev/changelog
- Demo project — https://github.com/nimbus-solution/berlinbrew-demo
- Agent skills for Apex — https://github.com/nimbus-solution/nimbus-skills
Nimbus is a Salesforce dev toolchain and local Apex runtime for developers who want to run Apex tests locally without an org. Keywords for the humans and the crawlers: local apex runtime, run apex tests locally, apex test runner, salesforce apex without org, apex interpreter, apex dependency graph, salesforce deployment validation, local salesforce development, apex CI without scratch org.

