OpenClaw · Skill
Qr Password
Bidirectional credential transfer using QR codes as an optical channel. No secret touches a network.
Install
Start with the primary install command. Alternate entrypoints are included below for ClawHub and OpenClaw CLI users.
Primary command
clawhub install lifehackjohn/qr-passwordClawHub installer
npx clawhub@latest install lifehackjohn/qr-passwordOpenClaw CLI
openclaw skills install lifehackjohn/qr-passwordDirect OpenClaw install
openclaw install lifehackjohn/qr-passwordWhat this skill does
Bidirectional credential transfer using QR codes as an optical channel. No secret touches a network.
Why it matters
Using the camera as the credential transport eliminates all network exposure, which no password manager sync or USB transfer can guarantee for truly isolated environments.
Typical use cases
- Logging into an air-gapped server with credentials from a password manager
- Moving admin credentials to an isolated lab machine
- Importing credentials printed as a QR code on hardware
- Sharing a vault entry with an offline kiosk
- Transferring a Wi-Fi password to a device with no keyboard
Source instructions
QR Password — Air-Gapped Credential Bridge
Bidirectional credential transfer using QR codes as an optical channel. No secret touches a network.
Security Rules (MANDATORY)
- Never log credentials to chat history or memory files
- Redact passwords from all conversation output — show
****instead - Auto-clear canvas display after 30 seconds using timed canvas hide
- QR images are ephemeral — delete after use with
rm - Never store decoded credentials in any file
Mode A: Vault → QR (Outbound)
Generate a QR code from a credential for an air-gapped device to scan.
echo '{"username":"USER","password":"PASS","domain":"DOMAIN"}' | \
python3 skills/qr-password/scripts/generate-qr.py /tmp/qr-out.png
Then display via canvas and auto-clear:
canvas present /tmp/qr-out.png
# Wait 30s
canvas hide
rm /tmp/qr-out.png
When reporting to user, say "QR displayed" — never echo the password.
Mode B: Camera → Credential (Inbound)
Read a QR code from a camera image to extract credentials.
- Capture image:
nodes camera_snap(or accept user-provided image) - Decode:
python3 skills/qr-password/scripts/read-qr.py /path/to/image.png
- Output is JSON:
{"username":"...","password":"...","domain":"..."} - Use the credential (fill, copy, deliver) — never echo password to chat
- Delete the image:
rm /path/to/image.png
Offline QR Generator
For air-gapped devices, provide assets/qr-generator.html — a standalone offline HTML page that generates QR codes locally in-browser. No network required.
Dependencies
Python 3 with: qrcode, Pillow, opencv-python-headless
Install: python3 -m pip install --user qrcode Pillow opencv-python-headless