Encrypted terminal chat, IRC-style, on the Nostr overlay network. Docs Launch client

Nosterm

Encrypted terminal chat, IRC-style, on the Nostr overlay network.

Nosterm is a browser-based Nostr client that looks and behaves like a classic IRC command-line terminal. It connects directly to relays over WebSockets — clearnet or Tor .onion, including your own self-hosted relay — with no custom backend, and driven entirely by IRC-style slash commands.

Old-school chat. New-world protocol.

The interface is pure IRC muscle memory — channels, nicks, /-commands, a scrolling log. Underneath, it's Nostr: an open, decentralized network of relays with no central owner. Familiar on the surface, unstoppable underneath.

Self-host the whole stack — the web client and the NIP-29 home relay — in a couple of minutes. Prebuilt images are published on Amazon ECR Public, so there's nothing to build. Pull them directly, or bring up both together with Docker Compose.

Nosterm — web client

The browser client, served by Caddy (which also reverse-proxies the relay).

docker pull public.ecr.aws/nosterm/nosterm:latest

Nostermd — home relay

The NIP-29 managed-groups relay with capability handshake and optional federation.

docker pull public.ecr.aws/nosterm/nostermd:latest

Or run both together with Docker Compose:

# docker-compose.yml
services:
  relay:
    image: public.ecr.aws/nosterm/nostermd:latest
    environment:
      # stable identity; required in production — openssl rand -hex 32
      RELAY_SECRET_KEY: ${RELAY_SECRET_KEY:-}
    volumes:
      - relay-data:/data
    restart: unless-stopped

  nosterm:
    image: public.ecr.aws/nosterm/nosterm:latest
    ports:
      - '8080:80'
    depends_on:
      - relay
    restart: unless-stopped

volumes:
  relay-data:
docker compose up -d          # client on http://localhost:8080

The client is served at http://localhost:8080, with the home relay reachable through the same origin at /relay. Full configuration and Tor hosting are in the deployment docs.

Command-driven

Drive everything with familiar IRC-style slash commands — /join, /msg, /nick, /theme. Tab completion included.

No backend

A client-only SPA that talks straight to Nostr relays over WebSockets. Your data path is you and the relays — nothing in between.

🔐Keys stay yours

Sign in with a NIP-07 extension, a remote signer (NIP-46), an nsec, or a freshly generated key. No third-party analytics, ever.

#NIP-29 rooms

Join relay-scoped managed groups with real rosters, invites, and moderation — the IRC channel model, on Nostr.

🌐Federated

Channels can span multiple relays run by different operators — mirror chat across peers so a room outlives any single relay. No single point of failure.

🧅Works over Tor

Connect to .onion relays straight from the browser. Reach hidden-service relays for location privacy and censorship resistance — no exit node required.

🖥Run your own relay

Ships with a self-hostable Nostr relay in a bundled Docker stack. Point Nosterm at your own relay — clearnet or onion — and own the whole path end to end.

🎨Themeable

Twelve built-in terminal themes — Nord, Gruvbox, Dracula, Tokyo Night, Solarized and more — switchable live with /theme.

Private DMs

End-to-end encrypted direct messages via NIP-17 gift wrapping. Send with a single /msg.

Channels without servers. Identity without passwords.

Rooms are NIP-29 managed groups that live on relays, not on a company's servers — spin one up anywhere, or run your own relay in the bundled Docker stack. Channels can even federate across relays run by different operators, so a room outlives any single one. And you never register: your identity is a key pair you already control, so there's nothing to sign up for and no password to leak.

/join #generalJoin a NIP-29 managed room
/msg <npub> heySend an encrypted direct message
/nick satoshiSet your public display name
/theme set nordChange the color theme live
/connect wss://…Add a relay — clearnet, onion, or your own
/whois <npub>Show a profile, NIP-05 verified
/helpList every command, or usage for one

Chat without surrendering your identity.

No tracking, no third-party analytics, no remote scripts — the client only ever talks to the relays you choose. Your private key signs your messages and nothing else, and with a browser extension or remote signer it never even touches the page.

Ready to /connect?

No account. No password. Just your keys.

Open the client in your browser. No install, no signup wall — just type and go.

Launch Nosterm