Nostr (nak)
Overview
Use nak for all Nostr actions: publish notes, reply in threads, and query relays for replies/mentions. Default relay: wss://relay.primal.net unless the user specifies another.
Install / Update nak
- Repo: https://github.com/fiatjaf/nak
- Install (script):
curl -sSL https://raw.githubusercontent.com/fiatjaf/nak/master/install.sh | sh - Update: re-run the install script above (it installs latest)
- Tip: review the script before running if you want to audit what it does.
Onboarding (keys)
- Generate a new key:
nak key generate(prints nsec + npub) - Save the secret: store
NOSTR_SECRET_KEYin a shell profile or a local.envwith restricted permissions.- Example:
export NOSTR_SECRET_KEY="nsec1..." - Optional:
chmod 600 .envif you store it locally. - Prefer env vars over inline
--secin commands.
- Example:
Quick Start (common tasks)
- Post a note:
nak event -k 1 --sec $NOSTR_SECRET_KEY -c "..." <relay> - Reply to a note: include
rootandreplytags (see below) - Check replies:
nak req -k 1 -e <event_id> -l <N> <relay> - Check mentions:
nak req -k 1 -p <your_pubkey_hex> -l <N> <relay>
Workflow: Posting & Replies
1) Create a new note
- Build content.
- Publish:
nak event -k 1 --sec $NOSTR_SECRET_KEY -c "<content>" wss://relay.primal.net
2) Reply to a reply (correct threading)
Always include both root and reply tags so clients display it as a reply:
root= original top‑level note idreply= the specific note you’re replying to
Use -t e="<id>;<relay>;root" and -t e="<id>;<relay>;reply".
Example:
nak event -k 1 --sec $NOSTR_SECRET_KEY \
-t e="<root_id>;wss://relay.primal.net;root" \
-t e="<reply_id>;wss://relay.primal.net;reply" \
-p <other_pubkey_hex> \
-c "<reply content>" \
wss://relay.primal.net
3) Check for replies to a note
nak req -k 1 -e <root_id> -l 20 wss://relay.primal.net
4) Check mentions of your pubkey
nak req -k 1 -p <your_pubkey_hex> -l 20 wss://relay.primal.net
Conventions
- Default relay:
wss://relay.primal.net - Prefer
NOSTR_SECRET_KEYenv var instead of inline--sec. - When tagging users, include
-p <npub/hex>. - For human-facing links, encode with
nak encode nevent ...and format ashttps://primal.net/e/<nevent>.
References
- Use
nak event --helpandnak req --helpfor flag details.