Skip to content

Configuration

The plugin's config schema is defined by openclaw.plugin.json inside the plugin package; the common fields are listed below.

Common settings

SettingDescription
retentionDaysNotification data retention in days; unset means keep forever.
ignoredAppsList of app package names to ignore.
relay.heartbeatSecHeartbeat interval between the plugin and Relay.
relay.reconnectBackoffMsRelay reconnect backoff time.
autoUpdate.enabledWhether to enable the plugin's auto-update check.
autoUpdate.checkIntervalHoursAuto-update check interval.
autoUpdate.channelUpdate channel: latest or beta.
asr.modeRecording transcription mode: api, local, or yoooclaw.
asr.api.*Cloud ASR parameters.
asr.local.*Local Whisper parameters.

Setting example (OpenClaw)

bash
openclaw config set plugins.entries.phone-notifications.config.retentionDays 30
openclaw config set plugins.entries.phone-notifications.config.ignoredApps '["com.android.systemui"]'

The relay.*, asr.api.*, and asr.local.* groups are all additionalProperties: false in the schema — writing an unknown field under them fails host-side schema validation outright. If a setting doesn't seem to take effect, check for a typo'd field name first.

Besides openclaw config set writing into openclaw.json, the plugin also reads these environment variables — useful when debugging environment isolation or multi-key setups:

VariableDescription
YOOOCLAW_API_KEYOverrides the apiKey in credentials.json; highest priority.
PHONE_NOTIFICATIONS_STATE_DIROverrides the plugin state directory.
PHONE_NOTIFICATIONS_CONFIG_PATHOverrides the host config file path.
PHONE_NOTIFICATIONS_CLAW_PROFILESelects the CLI profile.
PHONE_NOTIFICATIONS_LANGLanguage for the plugin's runtime output (CLI output, error messages, skill replies): zh-CN / zh-TW / en-US; equivalent to the installer's --lang.
OPENCLAW_GATEWAY_TOKEN / OPENCLAW_GATEWAY_PASSWORD / OPENCLAW_GATEWAY_PORTHost gateway auth passthrough and port (QClaw has QCLAW_* equivalents); *_PORT is also the port doctor's local-gateway checker uses when probing the local gateway (default 127.0.0.1:18789).
PHONE_NOTIFICATIONS_GATEWAY_BASE_URL / OPENCLAW_GATEWAY_BASE_URL / QCLAW_GATEWAY_BASE_URLOverride the full base URL doctor's local-gateway checker probes (checked in this priority order); without one, a 127.0.0.1 URL is assembled from *_PORT.
OPENCLAW_HOST_DEVELOPMENT / _TEST / _PRODUCTIONOverride the Relay / light-control API hostnames for each environment; only needed for self-hosted/internal setups.

The PHONE_NOTIFICATIONS_ENV environment variable no longer has any effect: earlier versions read it to override the current environment, but a process managed by launchd/systemd re-injects a "managed environment snapshot" on every restart, which was silently clobbering whatever ntf env switch had just written. The only source of truth now is the .env file that ntf env switch writes into the state directory — if you used to switch environments by setting this variable, switch to openclaw ntf env switch <env> instead.

State-directory auto-discovery also relies on JVSCLAW_STATE_DIR/JVSCLAW_HOME/JVSCLAW_CONFIG_PATH, OPENCLAW_STATE_DIR/OPENCLAW_ROOT/OPENCLAW_HOME, QCLAW_STATE_DIR/QCLAW_HOME, ECLAW_STATE_DIR/ECLAW_HOME/ECLAW_CONFIG_PATH, etc. These are normally set by the host itself — confirm which host you're running under before overriding them manually.