Configuration
LookLootCapture accepts two required options and a few optional app-integration helpers.
type LookLootCaptureOptions = {
appId: string;
getDeviceToken: (context: {
appId: string;
appVersion?: string;
deviceName?: string;
}) => Promise<string> | string;
appVersion?: string;
dataDir?: string;
overwolfPackages?: unknown;
apiBaseUrl?: string;
deviceName?: string;
inputHelperPath?: string;
loopbackAudioHelperPath?: string;
obsPath?: string;
elevatedCapturePipeName?: string;
autoStartOnGame?: boolean;
manageElectronQuit?: boolean;
appQuitDisposeTimeoutMs?: number;
};The package is ESM-only and targets Node.js 22 or newer. It has a required electron peer dependency supplied by the host desktop app. The SDK package carries the FFmpeg fallback dependency and bundles Windows helper assets. Packaged Windows builds must also include the OBS Studio portable runtime under Electron resources/obs.
appId
Required. Registered LookLoot partner app slug for this desktop application. Your LookLoot contact will register each app slug for your partner account. Pass this exact slug to your backend and then to https://www.lookloot.gg/api/partner/auth/token.
The token endpoint rejects missing, unknown, or inactive app IDs.
appVersion
Recommended. Desktop app version stored with each capture session for debugging and dashboard filtering. The SDK passes it to getDeviceToken, and the runtime snapshots it when capture starts.
getDeviceToken
Required. Return a LookLoot device token from your own backend. The SDK calls your provider with { appId, appVersion, deviceName }; forward those values to your backend token route.
Do not put LOOKLOOT_PARTNER_KEY in desktop or browser code. The partner key belongs only on your backend.
dataDir
Optional. Writable per-user directory for SDK working files.
Recommended for Electron:
join(app.getPath("userData"), "lookloot")If omitted, the SDK uses an OS-appropriate LookLoot folder.
Defaults:
| OS | Default |
|---|---|
| macOS | ~/Library/Application Support/LookLoot/Capture |
| Windows | %LOCALAPPDATA%\LookLoot\Capture |
| Linux | $XDG_STATE_HOME/lookloot/capture or ~/.local/state/lookloot/capture |
overwolfPackages
Optional. In Overwolf Electron, pass:
app.overwolf?.packagesLeave it undefined in other Electron environments.
apiBaseUrl
Optional. Defaults to the production LookLoot API. Use only when LookLoot gives you a sandbox or staging URL.
deviceName
Optional. Passed to getDeviceToken so your backend can attach a friendly device label.
The SDK trims empty labels before calling getDeviceToken.
inputHelperPath
Optional. Override path to the Windows input helper. Omit this unless LookLoot support asks you to debug a helper build; the SDK auto-resolves its bundled helper.
loopbackAudioHelperPath
Optional. Override path to the Windows loopback audio helper. Omit this unless LookLoot support asks you to debug a helper build; the SDK auto-resolves its bundled helper.
obsPath
Optional. Override path to the bundled OBS Studio portable runtime executable (obs64.exe).
Packaged Electron apps can omit this when the portable OBS root is copied to:
resources/obsThe SDK then resolves:
resources/obs/bin/64bit/obs64.exePass obsPath in local development, CI smoke tests, or nonstandard packaging layouts. LOOKLOOT_OBS_PATH and CAPTURE_OBS_PATH are also honored as environment-variable fallbacks.
elevatedCapturePipeName
Optional. Only use this when your desktop app owns a privileged capture helper lifecycle. Passing a pipe name lets the SDK route protected or administrator-level game capture through that helper while still refusing desktop capture fallbacks.
Most partner apps should omit this option and rely on the bundled OBS runtime plus normal game/window capture path.
autoStartOnGame
Optional. Defaults to true. When enabled, the SDK starts recording immediately after it detects a game process. Recording stops automatically when that game exits.
This is not limited to a LookLoot telemetry allowlist. The detector recognizes known game processes, common launcher/library install paths, and installed Steam games, while filtering normal desktop/browser windows so the SDK does not treat arbitrary apps as capture targets.
Set this to false only for custom diagnostic tools that intentionally call start() manually.
manageElectronQuit
Optional. Defaults to true. When enabled, the SDK listens for Electron's before-quit event, delays process exit briefly, and calls dispose() so any active recording can stop, finalize, and upload.
Set this to false only if your app owns a custom shutdown coordinator and always awaits capture.dispose() itself.
appQuitDisposeTimeoutMs
Optional. Defaults to 8000. Maximum time the SDK's Electron quit handler waits for capture cleanup before allowing the process to exit.
getRuntimeDiagnostics()
Call this after constructing LookLootCapture in smoke tests or installer QA. It does not mint a token or start capture; it only checks that the local OBS runtime, FFmpeg binary, input helper, and loopback audio helper can be resolved from the current app package.
