Boo: Is anyone out there?

Find your people.Talk peer to peer.

Ghostly connects you straight to the people you invite. Chat one to one or as a group, send files and sats, call, and share what runs on your computer.

Peer to peer · No account to createNothing to install · Free and open source

01 · The invitation

  1. Create an invitation.

    Boo makes an invitation for one person. It holds the keys, not an account.

  2. Share it your way.

    A link, a QR code or a text code. Send it only to the person you want to meet.

  3. Connect.

    Casper opens it, both apps find each other and confirm. You're talking.

02 · The meeting place

  1. A public network with no owner.

    The apps meet on the Mainline DHT, which millions of BitTorrent users already share. There is no Ghostly server in the middle.

    The desktop app reads it directly. Browsers use public Pkarr relays.

  2. Small, signed, sealed notes.

    Boo leaves a few tiny signed records in the network. What matters inside is encrypted.

  3. Only the invitation opens them.

    Casper knows where to look and how to read them. Anyone else sees sealed records.

  4. Then they fade.

    They are refreshed only while you're online. Stop, and they age out. Copies someone already made are not erased.

03 · The agreement

  1. Each side says what it can do.

    Boo's desktop app and Casper's browser each list what they support.

  2. They keep what they share.

    Only what is on both lists is used. The rest stays off.

  3. A plan both agreed to.

    Here: chat, files and Cashu over WebRTC. Other apps, another plan.

    Chats with Ghostly 0.4 contacts keep a fixed set.

04 · The connection comes alive

  1. The DHT only introduced them.

    Once they know how to reach each other, the conversation moves off the DHT.

  2. A direct line.

    Messages, files and payments travel over a live connection between the two devices: WebRTC, Iroh or HyperDHT.

  3. Honest about the route.

    Public STUN servers help find a way through home routers. If the direct path drops, short texts keep going over the DHT.

    You can add your own TURN relay in settings.

05 · What happens next

Now that you're connected.

Here is what the app does.

  1. Say it your way.

    Private one-to-one conversations. Reply to a message, edit what you sent, react with an emoji, see when they are typing or recording. No phone number, no public profile.

    Voice messages you can lock, pause and play at 2x. Delivery marks beside the time, local history, and messages held for a contact who is away.

    Boo's chat with Casper: text, a voice message and delivery marks beside the time
    Ghostly 1.9
  2. Paste it. See it.

    Rich text with lists, quotes and links, and a card for what you paste: an invite, a payment request, a Nostr profile, a link with its preview.

    Your app makes the preview, so your contact's app never opens the link. A seed or a private key asks before it goes.

    Casper's messages in Boo's chat: a link with the preview his app made, and a bitcoin request shown as a Test money card
    Ghostly 1.9
  3. Send the actual thing.

    Paste a screenshot or drop a file into the chat. It goes straight from your device to theirs, checked on arrival.

    Any size, with both of you online. Videos play right in the chat. A big file picks up where it stopped, and a stuck one can be sent again.

    A photo Casper sent in the chat, with its preview and a download button
    Ghostly 1.9
  4. Be a little closer.

    Voice, video and screen sharing, one to one. Turn the camera on or share your screen without calling again.

    In the browser, the extension and the desktop app, Linux included. Screen sharing needs a computer, not Linux yet. A call rings while the chat is live, not over the DHT. No group calls yet.

    An audio call with Casper in progress: the timer, the name and the mute, camera, screen and hang-up controls
    Ghostly 1.9
  5. A little thank-you.

    Send or request sats right in the conversation: ecash, a Lightning invoice, or from the wallet you already use.

    Real and test wallets side by side, one tab per network, test coins a tap away. Several Lightning cards (NWC, LND, Core Lightning, WebLN, Breez), Lightning addresses, Ark, Spark, Fedimint, USDT and on-chain bitcoin. The BDK on-chain wallet runs on test networks only.

    Paying in the chat with Casper on test networks: 2,100 sats received for the snacks, a request paid over Ark, and the deck of eight wallet cards
    Ghostly 1.9
  6. Bring the whole group.

    A private group of up to 32, or a community of up to 256 that anyone with its link can join. Invite people from your chats or share the link.

    Text, @mentions, replies, edits, reactions, a group picture and payments between members. Files, photos and voice messages too, up to 100 MB each, fetched from whoever in the group has them. Typing shows in private groups. No calls yet.

    A private group called Lake house trip: its picture, four members talking, a request to the group paid by Wendy, and a photo Casper sent
    Ghostly 1.9
  7. Prove who you are. Only to whom you choose.

    Attach an outside identity to your profile once (a Nostr or Pubky key, a domain, an OpenPGP or SSH key, a Bitcoin address, a DID) and share it with one contact at a time. Their app verifies it on the device.

    A shared card lands in the chat with its public profile: picture, name, posts. Never required to talk. Withdraw it from one chat, or revoke it everywhere.

    Casper's chat with Boo, the identities panel open: Boo's Nostr, OpenPGP, SSH and Bitcoin identities, each verified by Casper's app
    Ghostly 1.9
  8. Made here. Open there.

    While you're online, let a contact open a web app running on your computer: a photo gallery, a dashboard, a prototype.

    Desktop app or browser extension at both ends; plain HTTP, no WebSockets. You choose which contacts see each app.

    Choosing which of your apps a contact can open: Lake photos, running on Boo's computer, shared with Casper
    Ghostly 1.9
  9. Give your code a voice.

    The app's own engine without a screen, for scripts, bots and agents: chats, groups, files, payments and voice calls, with every event as a JSON line.

    Needs Node: npm install -g @ghostlytools/cli.

    CLI guide →
    $ ghostly daemon --detach
    $ ghostly invite create --label casper
    {"invite":"ghostly1…","link":"https://ghostly.tools/#ghostly1…"}
    $ ghostly send casper "Boo! 👻"
    $ ghostly listen --type message.received
    {"type":"message.received","message":{"text":"deploy?"}}
    Illustration
06 · Your space

Everything stays yours, on your devices.

Chats, keys, wallets and services live in the app. No server of ours.

The Profile page with three profiles, Personal, Work and Club, and backups above them
Ghostly 1.9

Separate lives, one device.

Contacts never learn the others exist · web, desktop and extension

One profile, more than one device.

Desktop
  • active
  • sends, receives, pays
Phone
  • standby
  • Use here takes over

One device active at a time · up to 4 · both online to move · web, desktop and extension

Backup is what. Storage is where.

Backup
  • chats & keys
  • wallets
  • services
  • settings
Storage
  • a file you keep
  • S3 · R2 · B2 · MinIO

Sealed with your passphrase · restoring creates a new profile, nothing is overwritten

Make it look like you.

Four themes · light or dark · eight languages · sounds · app lock

One wallet, many ways to pay.

Each payment method is its own card, with its own rules. Pick one to see what it does and how ready it is.

Private ecash tokens you can pass along in a chat. A mint you choose holds the funds.

Trust the mint you pick: it can see its own operations and holds the backing sats.

Real and test wallets live side by side, one tab per network. On Testnet, a button brings free test coins.

One you, many ways to prove it.

Show a contact that a key or an account elsewhere is yours. Each kind of proof is its own card: pick one to see what it proves and how ready it is.

Proves you hold a Nostr key: your signer signs once, and the key never leaves it.

A browser extension (NIP-07) or a remote signer (NIP-46) signs. The proof is never published to a relay, and it is not permission to post.

Never required. Each proof is made once and shared only with the contacts you pick, who check it themselves. You can withdraw it at any time.

07 · Under the ghosts

  1. Everything you just saw…

    …is one app composing independent pieces: a small rendezvous core, transports, and abilities like chat, files and payments.

  2. …is built from open pieces.

    Each piece is described in a WISP, a public draft contract. Another app can implement only the pieces it needs and still meet Ghostly halfway.

08 · Your turn
  • Boo: Boo! 👻
  • Casper: Found you.
  • Boo: Wanna see my app?
  • Casper: It's on your localhost…
  • Boo: Not anymore ✨
  • Casper: Here, 21 sats ⚡
  • Boo: See you around.
  • Casper: *poof* 👻

One little step. You're a ghost.

Open Ghostly in your browser and invite someone you know. Or take it with you on your desktop.

Open app.ghostly.tools

For your computer v1.9.0

All release files

Browser extension

Chrome, Brave, Edge

Add to Chrome Web Store

Command line

For bots and agents. Needs Node; on npm as @ghostlytools/cli.

CLI guide