pulumi/pulumi · error · Error
fatal: Missing <engine> address
Error message
fatal: Missing <engine> address
What it means
The resource provider gRPC server's `configureRuntime` requires the engine address passed with the Configure RPC to initialize global settings (project, stack, parallelism). A undefined `engineAddr` means the host did not supply the engine's gRPC endpoint, so the server cannot communicate back and fails hard.
Source
Thrown at sdk/nodejs/provider/server.ts:608
failure.setReason(f.reason);
failureList.push(failure);
}
resp.setFailuresList(failureList);
}
callback(undefined, resp);
} catch (e) {
console.error(`${e}: ${e.stack}`);
callback(e, undefined);
}
}
}
async function configureRuntime(req: any, engineAddr: string | undefined) {
// NOTE: these are globals! We should ensure that all settings are identical between calls, and eventually
// refactor so we can avoid the global state.
if (engineAddr === undefined) {
throw new Error("fatal: Missing <engine> address");
}
settings.resetOptions(
req.getProject(),
req.getStack(),
req.getParallel(),
engineAddr,
req.getMonitorendpoint(),
req.getDryrun(),
req.getOrganization(),
);
// resetOptions doesn't reset the saved features
await settings.awaitFeatureSupport();
const pulumiConfig: { [key: string]: string } = {};
const rpcConfig = req.getConfigMap();
if (rpcConfig) {View on GitHub (pinned to 793f7b2e16)
Solutions
- Run the provider through `pulumi` (not directly) so the engine address is supplied to the Configure RPC.
- Ensure the `PULUMI_NODEJS_ENGINE` environment variable is set and not stripped when launching the program.
- Upgrade the Pulumi CLI and provider SDK together to keep the engine/host RPC contract in sync.
Example fix
// before (standalone run) node node_modules/@pulumi/my-provider/bin/provider.js // after PULUMI_NODEJS_ENGINE=127.0.0.1:57575 node node_modules/@pulumi/my-provider/bin/provider.js
Defensive patterns
Strategy: try-catch
Validate before calling
if (!process.env.PULUMI_NODEJS_ENGINE && !process.env.PULUMI_DEBUG_GRPC) {
console.error("Not launched by the Pulumi engine (no engine address env var); refusing to start");
process.exit(1);
} Try / catch
try {
await server.listen(args);
} catch (e) {
if (/Missing <engine> address/.test((e as Error).message)) {
console.error("This provider must be run by the Pulumi engine, not directly. Set PULUMI_NODEJS_ENGINE or use 'pulumi up'.");
process.exit(1);
}
throw e;
} Prevention
- Never run provider binaries standalone without an engine address
- Keep Pulumi CLI and language SDK versions aligned
- Verify container/CI images preserve PULUMI_NODEJS_ENGINE
When it happens
Trigger: The `PULUMI_NODEJS_ENGINE` env var / engine address argument is not forwarded when the language host launches the provider; invoking the provider server manually (e.g. `node provider.js`) without an engine address; a bug or version mismatch where the engine omits the address field in the Configure request.
Common situations: Running the provider binary standalone for debugging; stale Pulumi CLI/host versions where the RPC contract changed; environment variable stripped in containerized or CI shells.
Related errors
AI-assisted analysis of pulumi/pulumi@793f7b2e16 (2026-08-31).
Data as JSON: /api/errors/efc99015fb0ae7e3.
Report an issue: GitHub.