Nostr
Nostr gives Fased a lightweight decentralized DM lane without a central service account. The gateway signs in with a Nostr private key, listens on one or more relays, and routes encrypted DMs into the normal Fased session model. Status: bundled channel extension, disabled until configured.Setup from Agent > Channels
Nostr ships with Fased as a local bundled channel extension. You do not need to download an npm package in a normal install. Open Agents, select the Agent, then use Agent > Channels > Nostr. Enter the private key and relay list, save the channel, then restart the gateway if the UI reports that the runtime still needs to load.Quick setup
For most setups, treat Nostr as a DM-only channel with explicit allowlists. Start with one keypair and two or three relays, then widen from there only if you need more reach.- Generate a Nostr keypair (if needed):
- Add the private key in Agent > Channels > Nostr or config:
- Export the key:
- Restart the Gateway if the UI asks for it.
Configuration reference
| Key | Type | Default | Description |
|---|---|---|---|
privateKey | string | required | Private key in nsec or hex format |
relays | string[] | ['wss://relay.damus.io', 'wss://nos.lol'] | Relay URLs (WebSocket) |
dmPolicy | string | pairing | DM access policy |
allowFrom | string[] | [] | Allowed sender pubkeys |
enabled | boolean | true | Enable/disable channel |
name | string | - | Display name |
profile | object | - | NIP-01 profile metadata |
Profile metadata
Profile data is published as a NIP-01kind:0 event. You can manage it from
Agent > Channels > Nostr > Profile or set it directly in config.
Example:
- Profile URLs must use
https://. - Importing from relays merges fields and preserves local overrides.
Access control
DM policies
- pairing (default): unknown senders get a pairing code.
- allowlist: only pubkeys in
allowFromcan DM. - open: public inbound DMs (requires
allowFrom: ["*"]). - disabled: ignore inbound DMs.
Allowlist example
Key formats
Accepted formats:- Private key:
nsec...or 64-char hex - Pubkeys (
allowFrom):npub...or hex
Relays
Defaults:relay.damus.io and nos.lol.
- Use 2-3 relays for redundancy.
- Avoid too many relays (latency, duplication).
- Commercial relays can improve reliability.
- Local relays are fine for testing (
ws://localhost:7777).
Protocol support
| NIP | Status | Description |
|---|---|---|
| NIP-01 | Supported | Basic event format + profile metadata |
| NIP-04 | Supported | Encrypted DMs (kind:4) |
| NIP-17 | Planned | Gift-wrapped DMs |
| NIP-44 | Planned | Versioned encryption |
Testing
Local relay
Manual test
- Note the bot pubkey (npub) from logs.
- Open a Nostr client (Damus, Amethyst, etc.).
- DM the bot pubkey.
- Verify the response.
Troubleshooting
Not receiving messages
- Verify the private key is valid.
- Ensure relay URLs are reachable and use
wss://(orws://for local). - Confirm
enabledis notfalse. - Check Gateway logs for relay connection errors.
Not sending responses
- Check relay accepts writes.
- Verify outbound connectivity.
- Watch for relay rate limits.
Duplicate responses
- Expected when using multiple relays.
- Messages are deduplicated by event ID; only the first delivery triggers a response.
Security
- Never commit private keys.
- Use environment variables for keys.
- Consider
allowlistfor production bots.
Limitations (MVP)
- Direct messages only (no group chats).
- No media attachments.
- NIP-04 only (NIP-17 gift-wrap planned).