Run and debug Salesforce Apex tests without connecting to an org. Gutter run icons, a native debug session, and a renmy runtime tool window, driven by the same local runtime the CLI uses.
IntelliJ IDEA Community and Ultimate, and any JetBrains IDE from 2024.2.
Every discovered @IsTest class and method gets a clickable run icon in the editor gutter, the IDE's own test affordance. Run the class, run the method, debug it, or open its trace. After a run the icon carries the last outcome, and results stream into the standard IntelliJ test runner tree with per-method timings.
Code lenses sit above the declaration they act on, and each one is offered only where it means something. Above an @IsTest method: Run test, Debug, Coverage, View Trace. Above a test class: Run class, Bench class, Coverage. Above a class that holds no tests: Mutate, the one lens that belongs on the code under test rather than on the test. Prefer a saved entry point? Create a Renmy Apex Test run configuration for a glob pattern or an explicit Class.method list.
Debugging is a real IntelliJ debug session. Set line breakpoints in .cls and .trigger files, hit Debug, and step over, into, and out while inspecting variables and the call stack. The local runtime is executing your code, so this is live stepping rather than a replayed debug log.
The Renmy tool window docks on the right with eight tabs. Tests lists every discovered test; double-click one to jump to source, or run and debug the selection from the toolbar. Coverage, History (with a Trends chart and run comparison) and Governor (per-method SOQL, DML, CPU and heap against the limits) read the last run. Schema browses the local tables, columns and relationships, Apex and SOQL are consoles against the local database, and Releases shows the deploy queue and the receipt history.
Run a coverage pass, snapshot it with Set Coverage Baseline, then toggle the delta overlay to see which lines your change covered, and which it stopped covering, in the gutter.
The dependency graph, execution traces, Trends, and run diffs open in embedded browser panels, the same views the VSCode extension ships, rendered inside the IDE.
Native Apex and SOQL live templates: tm for an @IsTest method, soqlf for a bulk-safe SOQL for-loop, bulkt for a 200-record data block. Tab to expand, Tab through the placeholders.
Nothing about the Apex engine is reimplemented for JetBrains. The plugin drives the two backends that ship with the CLI: renmy lsp for editing intelligence and renmy daemon for the runtime (test discovery, running, debugging, coverage, traces, history, schema, and governor limits).
The VSCode extension drives the same two backends, so a test, a trace or a coverage number reads the same in either editor.
Editor intelligence arrives through LSP4IJ, so completion, hover, navigation, rename, semantic tokens, call hierarchy, diagnostics, quick-fixes, code lenses, and inlay hints are the language server's, identical to what the VSCode extension consumes. A fix in the server lands in both editors at once.
LSP4IJ works in Community editions as well as the paid ones, so nothing on this page depends on an Ultimate license. The gutter run icons take a separate path entirely. They read the daemon's discovery index directly, with no PSI and no language registration, which is why they coexist with whatever else already claims Apex files in your IDE.
Read what the server does on the language server page, or compare the editor surface with the VSCode extension.
Illuminated Cloud made IntelliJ a serious Salesforce IDE, and renmy runtime does not replace it. Keep it for editing, org metadata, and deployment. renmy runtime adds the one thing an org-backed workflow cannot: a local Apex runtime, so the test loop stops round-tripping to a sandbox.
Both plugins read the same sfdx-project.json and the same source tree. No project conversion, no second checkout, no exclusive lock on .cls files.
Read the how-to for the full side-by-side setup.
The plugin runs the renmy binary on your PATH. Install it first; Settings → Tools → Renmy takes an explicit path if a GUI-launched IDE does not see the one your shell uses.
curl -fsSL https://install.renmy.net | shIn Settings → Plugins → Marketplace, install the plugin listed as Nimbus - Local Apex Runtime. The Marketplace resolves the LSP4IJ dependency for you.
Any project with an sfdx-project.json. The plugin starts the daemon and warms the language server: tests appear in the tool window and run icons in the gutter.
Settings are stored per project under Settings → Tools → Renmy: the binary path, parallel workers, whether the language server runs and whether it defers to another Apex plugin, coverage collection, gutter icons and the delta overlay, check-on-save, inline timings, inline governor usage, and auto-run on open or save. The full table is in the settings reference.
Running tests, coverage, traces, history, governor readings, the schema and the consoles are free. Pro adds the debugger, parallel test workers, watch mode, mutation testing and benchmarking, in the IDE and the CLI alike. Pro is currently free: create an account, activate it, and run renmy login.
Gutter run icons, a native debug session, coverage in the editor, and the renmy runtime tool window, with no org connection.