Auto-join #nosterm on startup; add mission/roadmap; chat-window banner
This commit is contained in:
@@ -19,6 +19,53 @@ Open a pull request against `main` — see [CONTRIBUTING.md](CONTRIBUTING.md). E
|
||||
merge to `main` builds the container image and publishes it to ECR Public for
|
||||
anonymous pulls (see [Deploy](#deploy)).
|
||||
|
||||
## Mission
|
||||
|
||||
Nosterm aims to be the premier, full-featured **Nostr Relay Chat (NRC)**
|
||||
client — the terminal-native way to talk over Nostr. We believe private
|
||||
communication is a right, not a feature, so Nosterm is built to advocate for and
|
||||
promote **anonymity, end-to-end encryption, and censorship resistance** by
|
||||
default rather than as opt-in extras.
|
||||
|
||||
Three principles guide every decision:
|
||||
|
||||
- **Small footprint.** A static SPA with no application backend, served from a
|
||||
single lightweight container. It should stay auditable, fast to load, and cheap
|
||||
to self-host — no build-time secrets, no telemetry, no lock-in.
|
||||
- **Easy to deploy, anywhere.** One prebuilt image, configured at runtime, that
|
||||
drops cleanly onto different **overlay network protocols** (Tor, I2P, Yggdrasil,
|
||||
Nym, and WireGuard-style meshes) so operators can run it wherever they trust
|
||||
the transport.
|
||||
- **Privacy as the default.** Anonymity, encryption, and anti-censorship are the
|
||||
baseline behavior. The client should make the private path the easy path.
|
||||
|
||||
## Roadmap
|
||||
|
||||
The roadmap turns the mission into concrete direction. Items are aspirational and
|
||||
unordered — contributions that move any of them forward are welcome.
|
||||
|
||||
- **Full NRC feature set** — channels, threads, DMs, presence, and moderation
|
||||
tools that make Nosterm a complete relay-chat experience, not just a demo.
|
||||
- **Overlay-network first** — first-class, documented deployment recipes for Tor
|
||||
hidden services, I2P, and other overlay transports, keeping the same single
|
||||
runtime-configured image.
|
||||
- **Encryption everywhere** — modern encrypted DMs and private groups (e.g.
|
||||
NIP-17 / gift-wrapped events), with sensible key handling and no plaintext
|
||||
fallbacks that surprise the user.
|
||||
- **Anonymity by design** — minimize metadata leakage, support ephemeral and
|
||||
disposable identities, and avoid any client behavior that fingerprints or
|
||||
phones home.
|
||||
- **Censorship resistance** — graceful multi-relay failover, easy relay
|
||||
discovery and rotation, and resilience when individual relays are blocked or
|
||||
disappear.
|
||||
- **Mature the Nostermd companion relay** — grow the
|
||||
[nostermd-relay](https://git.nerdworks.io/nerdworks/nostermd-relay) home relay
|
||||
into a first-class **NIP-29** (relay-based groups) implementation, deepening
|
||||
its federation and group-chat features so a self-hosted relay is a complete
|
||||
NRC backend for the client.
|
||||
- **Stay small** — hold the line on bundle size, dependency count, and container
|
||||
footprint as features grow.
|
||||
|
||||
## Layout
|
||||
|
||||
```
|
||||
@@ -82,13 +129,14 @@ secrets) — change one → rebuild the image.
|
||||
|
||||
**Build-time** (baked into the bundle; rebuild to change):
|
||||
|
||||
| Variable | Default | Purpose |
|
||||
| ------------------------------------- | ------- | --------------------------------------------- |
|
||||
| `PUBLIC_DEFAULT_RELAYS` | _empty_ | Fallback relays when no runtime config is set |
|
||||
| `PUBLIC_DEFAULT_THEME` | `nord` | Theme applied before the user picks one |
|
||||
| `PUBLIC_MAX_TERMINAL_ENTRIES` | `1000` | Terminal entries kept in memory / rendered |
|
||||
| `PUBLIC_MAX_MESSAGE_LENGTH` | `2000` | Max outbound message length (characters) |
|
||||
| `PUBLIC_MAX_CACHED_MESSAGES_PER_ROOM` | `500` | Messages retained per room in IndexedDB |
|
||||
| Variable | Default | Purpose |
|
||||
| ------------------------------------- | --------- | ------------------------------------------------- |
|
||||
| `PUBLIC_DEFAULT_RELAYS` | _empty_ | Fallback relays when no runtime config is set |
|
||||
| `PUBLIC_DEFAULT_THEME` | `nord` | Theme applied before the user picks one |
|
||||
| `PUBLIC_DEFAULT_CHANNEL` | `nosterm` | Channel auto-joined on startup (blank = disabled) |
|
||||
| `PUBLIC_MAX_TERMINAL_ENTRIES` | `1000` | Terminal entries kept in memory / rendered |
|
||||
| `PUBLIC_MAX_MESSAGE_LENGTH` | `2000` | Max outbound message length (characters) |
|
||||
| `PUBLIC_MAX_CACHED_MESSAGES_PER_ROOM` | `500` | Messages retained per room in IndexedDB |
|
||||
|
||||
## Talking to a relay
|
||||
|
||||
|
||||
Reference in New Issue
Block a user