Give your AI agent a Nostr identity. Users can message your agent from Sigil Messenger, Damus, Primal, or any Nostr client — all E2E encrypted.
bash
cargo install --git https://github.com/lmanchu/sigil sigil-cli
The simplest way — pipe messages between Nostr and your agent:
bash
# Generate agent identity
sigil whoami
# Your agent's npub is shown — users can DM this to reach your agent
# Add your npub to the access whitelist:
# Edit ~/.sigil/<agent>.access.json → add npub to "authorized" array
This skill works with both OpenClaw and Hermes agent frameworks.
OpenClaw: Add to your openclaw.json channels config:
json
{
"channels": {
"nostr": {
"enabled": true,
"relay": "wss://relay.damus.io",
"dmPolicy": "personal",
"allowFrom": ["npub1yourownpubkey..."]
}
}
}
Hermes: Install as a skill:
bash
# Copy this skill directory to ~/.hermes/skills/sigil-nostr/
cp -r skills/sigil-nostr ~/.hermes/skills/
Once your agent bridge is running, users connect from any of these clients:
bash
cargo install --git https://github.com/lmanchu/sigil sigil-cli
# Add your agent
sigil add sigil://agent?npub=<AGENT_NPUB>&relay=wss://relay.damus.io&name=MyAgent
# Start chatting
sigil
Same app as iOS — build from source with Xcode or install via sigil-cli. Link Mac to iPhone by scanning QR code (Mac shows QR, iPhone scans).
Your agent is a standard Nostr identity. Send a NIP-04 DM to the agent's npub from any Nostr client. TUI components (buttons, cards) only render in Sigil — other clients show raw JSON.
Every agent gets a shareable QR code and sigil:// URI:
bash
sigil qr # prints sigil://agent?npub=...&relay=...&name=...
Share this URI or QR — anyone who scans it gets your agent added instantly.
text
User (Sigil/Damus/Primal)
↓ NIP-04 Encrypted DM
Nostr Relay (relay.damus.io)
↓ WebSocket
Sigil Bridge (this skill)
↓ stdin/stdout or HTTP
Your Agent (OpenClaw / Hermes / Custom)
For standalone use, run the bridge directly:
bash
# Start the Nostr bridge for your agent
cd /path/to/sigil
cargo run --example hermes_bridge
Or use the Node.js bridge for OpenClaw integration:
bash
node skills/sigil-nostr/bridge.js
sigil encrypt-key for passphrase protectionConfig file: ~/.sigil/<agent-name>.access.json
json
{
"mode": "personal",
"owner": "npub1...",
"authorized": ["npub1friend1...", "npub1friend2..."],
"reject_message": "This is a personal agent. Contact the owner for access."
}
Your agent can send rich interactive messages:
json
{"type": "buttons", "text": "What do you need?", "items": [
{"id": "search", "label": "Search", "style": "primary"},
{"id": "help", "label": "Help", "style": "secondary"}
]}
Supported types: text, buttons, card, table
When a user taps a button, your agent receives: sigil:callback:<button_id>