Skip to content

Phone Notifications Plugin

@yoooclaw/phone-notifications is an OpenClaw / QClaw host plugin. It handles phone notification ingest and local storage, notification search/summary/stats, scheduled monitoring, long-recording sync with ASR transcription, hardware light control and rule evaluation, and Relay Tunnel connectivity.

Features

  • Phone notification ingest with local JSON storage, supporting both Gateway Native and HTTP fallback ingest.
  • Notification search, summary, stats, and date-based sync into a memory system.
  • Scheduled notification monitors, useful for an Agent to periodically process important messages.
  • Hardware light control and light-rule management, with async rule evaluation after notifications land.
  • Long-recording sync, audio download, ASR transcription, and Markdown transcript output.
  • Relay Tunnel status checks and remote connectivity.

Installation

OpenClaw CLI install

For a standard OpenClaw environment with a global openclaw command:

bash
openclaw plugins install @yoooclaw/phone-notifications
openclaw plugins update @yoooclaw/phone-notifications

Verify:

bash
openclaw ntf --help
openclaw ntf --version

If another plugin already uses the ntf command, use the alias instead:

bash
openclaw phone-notifications --help

About installing the npm package directly

In a standard OpenClaw environment, prefer openclaw plugins install @yoooclaw/phone-notifications — it handles downloading the npm package, registering the plugin, and updating the host config. Running the command below on its own only downloads the package into the current project's or global node_modules; it does not write to openclaw.json or restart the host:

bash
npm install @yoooclaw/phone-notifications

So a bare npm install isn't a recommended install path — it's mainly useful for debugging, packaging verification, or being invoked internally by the OpenClaw plugin manager.

A JvsClaw environment may expose a read-only host root via JVSCLAW_STATE_DIR (e.g. /opt/jvs-claw). A bare npm install won't complete plugin registration there either, and shouldn't attempt to write into that directory. Use the JvsClaw-specific script instead, which writes the plugin and config into the writable state dir /home/admin/.openclaw:

bash
curl -fsSL https://artifact.yoooclaw.com/plugin/install-jvsclaw.sh | bash

To customize the writable directory, use the plugin-specific variables — don't override the host path variable:

bash
curl -fsSL https://artifact.yoooclaw.com/plugin/install-jvsclaw.sh |
  PHONE_NOTIFICATIONS_STATE_DIR=/custom/writable/openclaw \
  PHONE_NOTIFICATIONS_CONFIG_PATH=/custom/writable/openclaw/openclaw.json bash

One-command install script

Recommended for QClaw, and a valid alternative for OpenClaw. The script downloads the plugin package from CDN, auto-detects the host state directory, pre-checks write permissions, writes the authorization config per the plugin's tool contract, and rolls back on failure.

macOS / Linux:

bash
curl -fsSL https://artifact.yoooclaw.com/plugin/install.sh | bash

JvsClaw:

bash
curl -fsSL https://artifact.yoooclaw.com/plugin/install-jvsclaw.sh | bash

Windows PowerShell:

powershell
& ([scriptblock]::Create((irm https://artifact.yoooclaw.com/plugin/install.ps1)))

Common options:

OptionDescription
--version <ver>Install a specific version; latest is fetched automatically if omitted.
--tgz-url <url|path>Use a specific plugin package URL or local package.
--target-dir <path>Specify the install directory.
--state-dir <path>Specify the OpenClaw / QClaw / JvsClaw state directory.
--config-path <path>Specify the host config file path.
--channel <name>Specify the channel: openclaw, arkclaw, or jvsclaw.
--api-key <key>Write the API key used by light control etc. during install.
--retention-days <n>Set notification data retention in days; unset means keep forever.

Examples:

bash
curl -fsSL https://artifact.yoooclaw.com/plugin/install.sh | bash -s -- --version 1.11.17-beta.8
curl -fsSL https://artifact.yoooclaw.com/plugin/install.sh | bash -s -- --api-key ock_xxx

On OpenClaw, the script verifies the plugin command works after a restart; on JvsClaw, the script writes into /home/admin/.openclaw and triggers a gateway restart, but skips the immediate CLI self-check to avoid false negatives while platform RPC is recovering. If the host's plugins.deny explicitly blocks this plugin, the script aborts and asks you to remove the denylist entry first. QClaw usually has no global openclaw command — if the plugin doesn't take effect right away after install, restart the QClaw desktop app, and use QClaw's own wrapper to run OpenClaw subcommands. JvsClaw's host root may be read-only; the dedicated script never treats it as the plugin's write target.

Next steps