DEV Community

René Knierim
René Knierim

Posted on Originally published at renmy.net

Salesforce IDE in IntelliJ IDEA: renmy runtime for JetBrains

Nimbus was renamed renmy runtime in October 2026, and the JetBrains plugin that was listed as "Nimbus - Local Apex Runtime" is the same plugin under its new name; the record of the rename is at https://renmy.net/blog/nimbus-is-now-renmy.

Short version. renmy runtime is a local Salesforce Apex runtime: it executes real Apex, SOQL, DML and Salesforce Flows on your machine against an embedded PostgreSQL, with no Salesforce org, no scratch org, no Docker and no JVM. Its JetBrains plugin, Renmy Runtime - Salesforce IDE (version 1.15.1), puts that runtime inside IntelliJ IDEA Community or Ultimate: a run icon on every Apex test, a native debugger with breakpoints, Apex and SOQL consoles against the local runtime or any org, and one tool window with six workspaces. It installs its own runtime on first open of a Salesforce DX project, the Free tier needs no account, and it coexists with Illuminated Cloud.

What a Java developer expects from an IDE, and what Apex developers never had

Open IntelliJ IDEA on a Java project. A run icon sits in the gutter next to every test; click it and the JVM on your laptop answers in under a second. Set a breakpoint, press Debug, and execution stops on that line with every variable in view. Open a database console, type a query, read the rows. None of this is remarkable; it is what an IDE is for.

Now open a Salesforce DX project in the same IDE. The Apex you write cannot run on your machine, because the compiler, the database and the test runner all live inside a Salesforce org. So the workflow became: save, deploy to a sandbox or scratch org, wait, run the test there, download a debug log, read it. The gutter icon has nowhere to send the test. The breakpoint has nothing to stop.

A local runtime is the missing piece: a program on your machine that executes Apex the way the platform does, SOQL and DML included, against a real database it brings along. That is what renmy runtime is, and the JetBrains plugin wires it into IntelliJ IDEA. What a local runtime is, and why Salesforce never gave you one explains the idea from zero.

Who this is for: Java and Kotlin developers who also touch Salesforce and want their ordinary workflow back; Salesforce developers already in IntelliJ IDEA with Illuminated Cloud; teams standardised on JetBrains who do not want a second editor for one language. Coming to Salesforce from Java: where did my test runner go? is the companion piece.

What is renmy runtime for JetBrains?

The plugin is listed on the JetBrains Marketplace as Renmy Runtime - Salesforce IDE: https://plugins.jetbrains.com/plugin/32360-renmy-runtime--salesforce-ide. The current version is 1.15.1 (October 2026). Before 1.15 the listing was called "Nimbus - Local Apex Runtime" (1.0.x); an installed 1.0.x updates in place. The product page is https://renmy.net/jetbrains.

What it needs:

  • IntelliJ IDEA Community or Ultimate, or any JetBrains IDE from 2025.3 that ships JCEF.
  • No JDK of your own, and no Salesforce org for the local loop.
  • LSP4IJ, which the Marketplace installs for you.

Everything the IDE does runs on the same two backends the CLI ships, renmy lsp for language features and renmy daemon for execution. Nothing is reimplemented in the plugin, so a test that passes in the IDE passes the same way under renmy test in a terminal or in CI.

How to install the Salesforce IDE plugin in IntelliJ IDEA

1. Install from Settings → Plugins

Open Settings → Plugins, search for "Renmy Runtime", install, and restart if the IDE asks. Or open the Marketplace page and press Install.

2. Open a Salesforce DX project

On first open of a project with an sfdx-project.json, the plugin installs its runtime into ~/.nimbus/bin (macOS, Linux and Windows). The Free tier needs no account: no sign-up, no card, one machine.

3. Run a test

Open any @IsTest class. There is a run icon in the gutter. Click it.

If you also want the runtime in a terminal, the CLI is the same binary:

curl -fsSL https://renmy.net/install.sh | sh          # macOS, Linux
irm https://renmy.net/install.ps1 | iex              # Windows PowerShell
cd your-sfdx-project
renmy test "*"
Enter fullscreen mode Exit fullscreen mode

The tool window: six workspaces

One tool window, six workspaces:

  • Home: the runtime, project health, your account.
  • Develop: Apex and SOQL consoles, Schema, Workbench, Events.
  • Org: Browse, Drift, Logs, Data Loader.
  • Verify: Tests, Coverage, History, Governor.
  • Release: deploys and releases.
  • Admin: Users, Permissions, Tracing, Setup, Limits.

Opening a Salesforce file selects the panel that belongs to it without taking focus; the cursor stays in the editor.

Running Apex tests from the gutter in IntelliJ IDEA

Every @IsTest class and method gets a run icon in the gutter and four code lenses: Run, Debug, Coverage and Trace. Results stream into IntelliJ's own test runner tree. After a run, each method shows its time and its SOQL and DML counts inline, so a method that issued forty queries announces itself before a governor limit does.

@IsTest
private class InvoiceTotalsTest {
    @TestSetup
    static void makeData() {
        insert new Account(Name = 'Local Test Account');
    }

    @IsTest
    static void sumsOpenLines() {
        Account a = [SELECT Id FROM Account LIMIT 1];
        Invoice__c inv = new Invoice__c(Account__c = a.Id, Status__c = 'Open');
        insert inv;
        insert new List<Invoice_Line__c>{
            new Invoice_Line__c(Invoice__c = inv.Id, Amount__c = 40),
            new Invoice_Line__c(Invoice__c = inv.Id, Amount__c = 60)
        };

        Test.startTest();
        Decimal total = InvoiceTotals.openTotal(inv.Id);
        Test.stopTest();

        Assert.areEqual(100, total);
    }
}
Enter fullscreen mode Exit fullscreen mode

Click Run on sumsOpenLines and the test executes on your machine: @TestSetup runs, the DML lands in the embedded PostgreSQL, any triggers on Invoice__c fire in the platform's order of execution, Test.startTest resets the limits, and the result appears in the test tree in tens of milliseconds. Tests can also run in an org from the same place.

Governor limits are enforced; Test.startTest/stopTest, @TestSetup, per-test transaction isolation, the Stub API and the order of execution across triggers and flows behave as on the platform. It is not a mock and not a transpiler. The parity record is public at https://renmy.net/parity; read it before you trust any claim, including this one. The published benchmark at https://renmy.net/benchmarks ran four open-source Apex suites, 837 tests, in about 1 min 46 s in a Salesforce org (deploy and run) and in 2.4 s locally, every test passing in both.

Debugging Apex with breakpoints, not debug logs

Click Debug instead of Run and IntelliJ opens a native debug session against the local runtime. Breakpoints go in .cls and .trigger files. Step over, into and out. Variables per frame, watches, evaluate, break on exceptions. It is the debugger Java developers already know, pointed at Apex, and it stops a running test rather than replaying a log.

Replay adds Step Back, Reverse Continue and a Run Timeline, so a recorded run can be walked backwards to the statement that set the wrong value. Recording is free; stepping is Pro, free during the public beta. Details: https://renmy.net/debugger.

Apex and SOQL consoles: local runtime or any org

The Develop workspace has an Apex console and a SOQL console, both with completion and diagnostics, each running against the local runtime or any org the Salesforce CLI is logged in to.

SELECT Account__r.Name, SUM(Amount__c) total
FROM Invoice_Line__c
WHERE Invoice__r.Status__c = 'Open'
GROUP BY Account__r.Name
Enter fullscreen mode Exit fullscreen mode

Two things an org alone cannot do. "Run and Compare" runs the same code locally and in the org and shows what differs. "Find in All Orgs" runs one query in every org you are logged in to, so "which sandbox has this record" stops being a tour.

Data: Workbench, and a Data Loader that simulates first

Workbench queries and edits local rows, keeps data branches, and clones an org's data into a local copy, so tests and consoles run against realistic records without touching the org.

Data Loader maps a CSV onto an object and simulates the load locally first: triggers and validation rules run against the embedded database and the transaction is rolled back. You see which rows would be rejected before one reaches the org. Then it uploads. Anything that writes to an org asks first and names the org.

Org: Drift, Browse and debug-log replay

Browse an org and retrieve what the project lacks. Drift marks every file as in sync, differs, org only or local only; "Compare with Org" opens a diff, and "Retrieve from Org" refuses to overwrite uncommitted work. Logs reads the org's debug logs and replays them locally, so a failure that only happened in the org is not only a text file. Admin shows users, permissions, trace flags and limits.

Editing: inspections, refactorings and metadata as forms

The language features come from renmy lsp: completion, hover docs, go to definition, find references, rename, diagnostics and inlay hints. On top of that:

  • Sixteen inspections with quick-fixes: SOQL, DML or callouts in loops, hardcoded Ids, empty catch blocks, seeAllData, tests without assertions, unused locals, and more.
  • Generate: constructor, getters and setters, implement and override, toString, equals and hashCode.
  • Refactor: Extract Variable, Extract Constant, Extract Method, Change Signature.
  • Rename a custom field everywhere: across Apex, SOQL, metadata XML, LWC, Aura and Visualforce.
  • Nineteen live templates: tm, soqlf, bulkt, trycatch, mapid and others.
  • Go to Test and Create New Test.

Metadata opens as forms: objects, fields, permission sets, labels, custom metadata, page layouts, Lightning pages and more. sfdx-project.json gets a Form tab beside the text.

Previews (Pro, free during the beta) render React, LWC and Visualforce from your source against the local API server. Visualforce renders 25 of the 77 apex: components; the rest are drawn as labelled placeholders, not faked. Previews need Node 20.19+ or 22.12+. Renmy Learn adds ten replayable workshops inside the editor and a searchable field manual.

Does it work with Illuminated Cloud?

Yes. Illuminated Cloud handles editing and org deployment for many IntelliJ teams; renmy runtime adds the local runtime and test loop beside it. Shortcuts live in the Alt+Shift namespace so nothing collides: Alt+Shift+D deploys, Alt+Shift+U retrieves. When Illuminated Cloud is installed it keeps the Apex file types, and a setting under Tools → Renmy decides. Guide: https://renmy.net/how-to/intellij-illuminated-cloud.

I already have a sandbox. Why would I need this?

The sandbox is still where you deploy, where the UI lives and where integrations are checked. The runtime is where the hundred edits before that happen, each costing a click instead of a deploy and a log. When the code is right, renmy deploy (Free) snapshots the payload, runs the local gates, validates the same bytes in the org with a real check-only validation, and only then deploys. The org sees proven code, less often.

Try it

curl -fsSL https://renmy.net/install.sh | sh          # macOS, Linux
irm https://renmy.net/install.ps1 | iex              # Windows PowerShell
cd your-sfdx-project
renmy test "*"
Enter fullscreen mode Exit fullscreen mode

Frequently asked questions

Does renmy runtime for JetBrains work in IntelliJ IDEA Community Edition?

Yes. The plugin works in IntelliJ IDEA Community and Ultimate, and in any JetBrains IDE from 2025.3 that ships JCEF. You do not need a JDK of your own. LSP4IJ, which the plugin builds on, is installed for you by the Marketplace.

Do I need a Salesforce org to run Apex tests in IntelliJ IDEA?

Not for the local loop. The plugin installs renmy runtime into ~/.nimbus/bin the first time you open a Salesforce DX project and runs Apex tests against an embedded PostgreSQL on your machine. You need an org for Browse, Drift, running tests in an org, Data Loader uploads and deploys. Anything that writes to an org asks first and names the org.

Does the plugin work alongside Illuminated Cloud?

Yes. The two are complementary. Shortcuts live in the Alt+Shift namespace so nothing collides (Alt+Shift+D deploys, Alt+Shift+U retrieves), and when Illuminated Cloud is installed it keeps the Apex file types, with a setting under Tools → Renmy to decide. The guide is at https://renmy.net/how-to/intellij-illuminated-cloud.

What happened to the Nimbus - Local Apex Runtime plugin?

It is the same plugin. Nimbus was renamed renmy runtime in October 2026, and the JetBrains listing became Renmy Runtime - Salesforce IDE with version 1.15. An installed 1.0.x updates in place.

Is the JetBrains plugin free?

The Free tier is for individual developers: $0, no card, no account, with unlimited local test runs, gated deploys, CLI pass-through and IDE integration on one machine. Pro adds the daemon, parallel runs, watch mode, debugger stepping, mutation testing, previews and the MCP server on three machines; it is free during the public beta, with a list price of $19 a month afterwards. Pricing is at https://renmy.net/#pricing.

Top comments (0)