Decode and embed Stegstr payloads in PNG images. Use when the user needs to extract hidden Nostr data from a Stegstr image, encode a payload into a cover PNG, or work with steganographic social networking (Nostr-in-images). Supports CLI (stegstr-cli decode, detect, embed, post) for scripts and AI agents.
Stegstr hides Nostr messages and arbitrary payloads inside PNG images using steganography. Users embed their feed (posts, DMs, JSON) into images and share them; recipients use Detect to load the hidden content. No registration, works offline.
Build the CLI from the Stegstr repo:
git clone https://github.com/brunkstr/Stegstr.git
cd Stegstr/src-tauri
cargo build --release --bin stegstr-cli
Binary: target/release/stegstr-cli (or stegstr-cli.exe on Windows).
stegstr-cli decode image.png
Writes raw payload to stdout. Valid UTF-8 JSON is printed as text; otherwise base64:<data>. Exit 0 on success.
stegstr-cli detect image.png
Decodes and decrypts; prints Nostr bundle JSON { "version": 1, "events": [...] }.
stegstr-cli embed cover.png -o out.png --payload "text or JSON"
stegstr-cli embed cover.png -o out.png --payload @bundle.json
stegstr-cli embed cover.png -o out.png --payload @bundle.json --encrypt
Use --payload @file to load from file. Use --encrypt so any Stegstr user can detect. Use --payload-base64 <base64> for binary payloads.
stegstr-cli post "Your message here" --output bundle.json
stegstr-cli post "Message" --privkey-hex <64-char-hex> --output bundle.json
Creates a Nostr bundle; use stegstr-cli embed to hide it in an image.
# Create a post bundle
stegstr-cli post "Hello from OpenClaw" --output bundle.json
# Embed into a cover image (encrypted for any Stegstr user)
stegstr-cli embed cover.png -o stego.png --payload @bundle.json --encrypt
# Recipient detects and extracts
stegstr-cli detect stego.png
PNG only (lossless). JPEG or other lossy formats will corrupt the hidden data.
STEGSTR (7 bytes ASCII)--encrypt)Decrypted bundle: { "version": 1, "events": [ ... Nostr events ... ] }. Schema: bundle.schema.json.