gupt-sdk

Builds end-to-end encrypted GUPT bots that send and receive encrypted DMs over Nostr relays.

26|2|Updated Mar 25, 2026
One-click install
npx skills add https://github.com/besoeasy/gupt --skill gupt-sdk-besoeasy
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: gupt-sdk
Source: https://github.com/besoeasy/gupt
Command: npx skills add https://github.com/besoeasy/gupt --skill gupt-sdk-besoeasy

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires gupt-sdk.

What problem does it solve? Sending status updates, CI results, or bot replies through tools like ntfy.sh exposes plaintext on public topics. This Skill builds GUPT bots with gupt-sdk so messages travel as end-to-end encrypted Kind-4 DMs over user-chosen relays, readable only by the recipient's key. ## Core Features & Use Cases - Encrypted notifications: Push CI, backup, deploy, or agent status directly to a GUPT account as an encrypted DM, replacing ntfy.sh plaintext topics. - Interactive bots: Listen for inbound DMs with onMessage and reply with text or AES-256-GCM encrypted files via ctx.reply and ctx.replyFile. - Public bot directory: Publish a Kind-1 gupt-bot listing with publicBot metadata so the bot appears under Talk to bot in the GUPT app. - Use Case: A backup script finishes on a home server; a GuptBot with a dedicated keypair calls bot.reply(process.env.GUPT_USER_PUBKEY, "Backup completed successfully") and only the account owner can decrypt it. ## Quick Start Install gupt-sdk with npm, set GUPT_BOT_KEY and GUPT_USER_PUBKEY environment variables with at least two shared wss relays, then start a GuptBot and call reply to send an encrypted message to the recipient's public key.

Frequently Asked Questions about gupt-sdk

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I send an encrypted notification to a GUPT account?▼

Install gupt-sdk, create a GuptBot with a dedicated bot secret and at least two wss relays, then call bot.reply with the recipient's 64-character public key after bot.start(). The message arrives as an encrypted DM that only that key can decrypt.

How do I build a bot that replies to GUPT messages?▼

Register a handler with bot.onMessage and use ctx.reply for text or ctx.replyFile for files. Inbound messages are serialized per sender with default cooldowns of 1 second and a 20 replies per minute per peer limit.

Can GUPT bots replace ntfy.sh notifications?▼

Yes for message payloads: GUPT sends an encrypted DM to your pubkey instead of plaintext on a public topic. However, it is not an OS wake-up ping while the app is fully closed; that remains the separate ntfy PING path.

What file types and sizes can a GUPT bot send?▼

ctx.replyFile and bot.replyFile accept a path, Blob, Buffer, Uint8Array, or ArrayBuffer. Bytes are AES-256-GCM encrypted and pinned via Originless with a default cap of 100 MiB, while text messages are capped at 8000 characters.

Why is my GUPT bot not receiving messages from a user?▼

The bot and recipient must share at least one relay, or the recipient must DM the bot first so it learns a relay hint. Also check that SDK bots ignore other bots' messages unless acceptBotMessages is enabled.

Can I reuse my personal GUPT key for a bot?▼

No. Each bot needs its own dedicated secp256k1 keypair passed as GUPT_BOT_KEY. Reusing a personal identity or logging secrets violates the framework's security rules.