Install
openclaw skills install privateclaw-plugin-setupInstall, enable, verify, pair, and manage PrivateClaw OpenClaw sessions, preferring same-conversation /privateclaw QR replies and falling back to the local C...
openclaw skills install privateclaw-plugin-setupUse this skill when the user wants to install, enable, verify, configure, or pair the PrivateClaw OpenClaw plugin.
This skill is especially relevant for requests like:
/privateclaw, /privateclaw group, /session-qr, or openclaw privateclaw pairopenclaw privateclaw sessionsopenclaw privateclaw kick <sessionId> <appId>privateclaw-provider CLI instead of the OpenClaw alias/mute-bot or /unmute-bot@privateclaw/privateclaw.--dangerously-force-unsafe-install on every manual install path. openclaw plugins install --dangerously-force-unsafe-install @privateclaw/privateclaw@latest is the default published install, and if the user already has a local package directory, prefer openclaw plugins install --dangerously-force-unsafe-install ./packages/privateclaw-provider over archive installs.privateclaw.privateclaw-provider.https://relay.privateclaw.us.https://apps.apple.com/us/app/yourclaw/id6760531637.https://play.google.com/store/apps/details?id=gg.ai.privateclaw, but Google Play only grants access after the tester joins https://groups.google.com/g/gg-studio-ai-products.https://github.com/topcheer/PrivateClaw/releases; tell users to choose the app-v* GitHub Releases when they need Windows / macOS / Linux builds.relayBaseUrl.openclaw channels add privateclaw.pair, sessions, and kick, available as either openclaw privateclaw <subcommand> or privateclaw-provider <subcommand>.pair now defaults to returning after printing the QR while the session stays alive in a background daemon until expiry.pair --foreground keeps the session in the current terminal; on supported runtimes, Ctrl+D hands the live session off to the detached background daemon without invalidating the QR.pair --print-only prints the invite and QR, then immediately closes the session instead of keeping it alive./session-qr and /renew-session; active group sessions also expose /mute-bot and /unmute-bot.openclaw plugins install, openclaw plugins enable, or any openclaw config set plugins.entries.privateclaw.config... change, the running OpenClaw gateway or service must be restarted before testing.Default to the production npm install path unless the user explicitly asks for:
If the user wants the pairing QR or invite to be sent back to the current existing OpenClaw chat conversation, prefer the registered plugin command flow:
/privateclaw for a normal one-to-one encrypted session/privateclaw group for a multi-participant encrypted roomThat flow is preferred because the plugin command returns the invite URI and QR image back to the original Telegram, Discord, or QQ conversation through OpenClaw's normal reply payload path.
If the current environment can directly invoke the registered privateclaw plugin command in the active conversation, prefer that over local CLI pairing.
If there is no suitable active OpenClaw chat channel available, fall back to the local CLI pairing flow:
openclaw privateclaw pairopenclaw privateclaw pair --groupopenclaw privateclaw pair --openopenclaw privateclaw sessionsopenclaw privateclaw kick <sessionId> <appId>If the user does not have the OpenClaw alias available but does have the standalone npm binary installed, use the equivalent privateclaw-provider ... commands.
When a user asks where to get the PrivateClaw client builds, point them at:
https://apps.apple.com/us/app/yourclaw/id6760531637https://groups.google.com/g/gg-studio-ai-productshttps://play.google.com/store/apps/details?id=gg.ai.privateclawapp-v* releases): https://github.com/topcheer/PrivateClaw/releasesBe explicit that Android testers must join the Google Group before Google Play will admit them to the closed alpha, and that desktop users should download from the app-v* GitHub Releases rather than the provider / relay v* releases.
First confirm that the openclaw CLI is available:
openclaw --version
If openclaw is missing, stop and tell the user that OpenClaw itself must be installed first.
Use the published npm package by default, and keep --dangerously-force-unsafe-install on every manual install path:
openclaw plugins install --dangerously-force-unsafe-install @privateclaw/privateclaw@latest
openclaw plugins enable privateclaw
If the user already has a local package directory, prefer installing that directory instead of an archive because OpenClaw 2026.3.31 can drop the unsafe-install override on archive installs:
openclaw plugins install --dangerously-force-unsafe-install ./packages/privateclaw-provider
openclaw plugins enable privateclaw
Only do this when the user explicitly wants to point PrivateClaw at a self-hosted or custom relay:
openclaw config set plugins.entries.privateclaw.config.relayBaseUrl https://your-relay.example.com
If the user is using the default public relay at https://relay.privateclaw.us, skip this step.
Do not claim setup is complete until the running OpenClaw process has reloaded the plugin and config.
That usually means restarting the active openclaw start process or whichever service unit hosts the gateway.
Check that the privateclaw command is now registered:
openclaw commands list
Confirm that privateclaw appears in the command list before moving on.
Use this flow when:
Preferred next step:
/privateclaw in that same conversation/privateclaw group when the user wants a shared encrypted room for multiple app participantsExpected result:
If the runtime can execute the registered plugin command directly for the current channel conversation, do that instead of asking the user to repeat the command manually.
Use this flow when there is no active OpenClaw chat channel available, or when the user explicitly wants local terminal pairing:
openclaw privateclaw pair
Useful variants:
openclaw privateclaw pair --group
openclaw privateclaw pair --open
openclaw privateclaw pair --group --foreground
openclaw privateclaw sessions
openclaw privateclaw kick <sessionId> <appId>
--group creates a multi-participant room.
--open opens a local browser preview page for the QR, which is useful when terminal rendering alone is inconvenient.
By default, pair prints the invite and then returns while a background daemon keeps the session alive until expiry.
Use --foreground when the user explicitly wants to keep the session attached to the current terminal. On supported runtimes, Ctrl+D hands that live foreground session off to the background daemon without replacing the QR.
Do not recommend --print-only unless the user only wants a one-shot QR printout, because that mode closes the session immediately after printing.
The same public subcommands also exist on the standalone npm binary:
privateclaw-provider pair --group --foreground
privateclaw-provider sessions
privateclaw-provider sessions killall
privateclaw-provider killall
privateclaw-provider kick <sessionId> <appId>
Once a PrivateClaw session is already active, the participant can request the current pairing QR again from inside that encrypted session:
/session-qr
Use this when the user wants to re-share the existing active session instead of creating a new one.
If the user needs to extend the session lifetime without replacing the whole setup, use:
/renew-session
In active group sessions, participants can also pause or resume assistant replies without interrupting participant-to-participant chat:
/mute-bot
/unmute-bot
Use those only for group sessions where the user specifically wants the chat room to stay open while temporarily muting or restoring bot replies.
Only use this when the user explicitly wants to install from a local repository checkout instead of npm:
openclaw plugins install --link ./packages/privateclaw-provider
openclaw plugins enable privateclaw
openclaw config set plugins.entries.privateclaw.config.relayBaseUrl ws://127.0.0.1:8787
Then restart the running OpenClaw gateway or service before testing.
openclaw channels add privateclaw; PrivateClaw is not a channel transport.relayBaseUrl unless the user asks for a custom relay.--link development install unless the user is working from a local checkout.openclaw commands list shows privateclaw./privateclaw over openclaw privateclaw pair.--print-only when the user expects the QR to remain usable after the command exits.privateclaw-provider ... rather than inventing a different command surface.privateclaw does not appear in openclaw commands listLikely causes:
/privateclaw in Telegram, Discord, or QQ but nothing happens therePrivateClaw is only the plugin that creates the QR invite. The surrounding channel transport still has to exist separately in OpenClaw. If the user wants /privateclaw inside Telegram, Discord, or QQ, those channels must already be set up in OpenClaw.
Set:
openclaw config set plugins.entries.privateclaw.config.relayBaseUrl <relay-base-url>
Then restart the running OpenClaw gateway or service before testing again.
openclaw privateclaw pair returns immediately and the user thinks the session stoppedThat is expected with the current default behavior. Local pairing now returns after printing while a background daemon keeps the session alive.
If the user wants the session to stay attached to the current shell, use:
openclaw privateclaw pair --foreground
If the user already started a foreground session and wants to hand it off without stopping it, Ctrl+D is the preferred path on supported runtimes.
Check whether they used --print-only. That mode prints the invite and QR, then immediately closes the session.
If they need a live reusable session, have them use normal pair, pair --group, or pair --foreground instead.
Use:
openclaw privateclaw sessions
openclaw privateclaw sessions killall
openclaw privateclaw kick <sessionId> <appId>
Use the standalone privateclaw-provider sessions / privateclaw-provider kick ... forms when the user is working outside the OpenClaw alias. If they need to clear all background daemon sessions at once, use openclaw privateclaw sessions killall or privateclaw-provider killall.
The setup should usually end with all of the following being true:
openclaw commands list shows privateclaw/privateclaw QR reply in the original channel conversation, oropenclaw privateclaw pair or privateclaw-provider pair QR and invite URIsessions shows the active session instead of the session having been created with --print-only