bind.ws

Relay on demand. Sign once, and it's yours.

A relay at a name picked for you, open to anyone for 14 days. Claim it to keep it.

damusamethystnostrudela script wss, https wss://kitchen.bind.ws workerhost -> object durable object "kitchen" sqlite events, tags, search, rules sockets live subscriptions alarm sweep, retention, fuel hibernates when idle r2files, dumps zapkind 9735 leavenip-77

durable object

Each name has one object. The object holds the SQLite database and the relay's open sockets. The owner is the pubkey that signed the first claim. After the claim, all management is done via NIP-86 calls signed by that key. The relay page is a client of this API. The object can hibernate between frames; retained storage and scheduled work still count.

lease

A lease is a relay at a name picked for you, open to everyone, for a fixed number of days. POST /lease returns one; no key needed. A claim before it expires keeps it, events and files included. After that, the object is wiped and the name is free again.

fuel

Fuel prices four values: events stored, files stored, estimated hours awake and metered rows written. Mirrored site files share the file allowance; Git repositories use SQLite storage and the events allowance. Traffic is visible but uncharged. Below the allowances, you owe nothing. Above them, a zap adds balance. The Health tab and public /fuel show usage and prices.

leave

NIP-77 sync copies readable events to a different relay. Copy site files through Blossom and clone Git repositories separately; event sync does not copy their bytes.

Interfaces

EndpointProtocolAuthNotes
wss://<name>.bind.wsNIP-01, 09, 13, 17, 29, 40, 42, 43, 45, 46 transport, 50, 56, 59, 62, 66, 67, 70, 77optional NIP-42Sockets hibernate; a negentropy session carries on after a wake.
GET / (accept nostr+json)NIP-11nonelimitation, retention, payments_url, self
POST /NIP-86NIP-98, ownerclaim and the management methods
POST /leaseleaseoptional NIP-98A temporary relay for 14 days. A signature reserves the claim for that key.
wss://relay.example.comcustom domainownerA hostname you own, CNAME to customers.bind.ws. Set on the Identity tab; up to three per relay.
POST /events /query /countHTTP bridgeNIP-98The signer has the same access as an authenticated socket.
PUT /upload, GET /<sha256>Blossomkind 24242Stored in R2. Counted as files. HEAD /upload checks first; PUT /mirror copies from a URL; PUT /report files a report.
POST /nip96, GET /.well-known/nostr/nip96.jsonNIP-96NIP-98Same bucket and file list as Blossom. NIP-94 tags in every answer.
GET /.well-known/nostr.jsonNIP-05noneMembers that have a name.
GET /e/<id>, /a/<d>, /feed.xmlpages, AtomnoneNotes and articles as pages with Open Graph tags, and a feed. Only when anyone may read.
GET /card.json, /card.svg, /card.nostrcardnoneA status card for links and profiles: members, rules, fuel, the group naddr as a QR. The .nostr form is signed by the relay key.
GET /fuel, POST /fuel/invoiceNIP-57noneGauges are public. The invoice comes from a signed zap request.
https://<site-label>.bind.ws/NIP-5Arelay read ruleRoot, named and snapshot sites, verified files and custom-domain targets. Restricted sites use browser sign-in or NIP-98.
/<npub>/<identifier>.gitGRASP-01signed NIP-34 statePublic clone, fetch and state-authorized push while enabled with open reads. The identifier is percent-encoded. Bounded hosting; storage limits remain independent of fuel balance.

Limits

ParameterDefaultRange
name3 to 32 of a-z 0-9 -some names are reserved
max_message_length128 KB16 to 1,024 KB
max_subscriptions201 to 200
max_limit5001 to 5,000
eventsPerMinute / reqsPerMinute120 / 240 per connectionset by the owner
maxBlobMB251 to 95
min_pow_difficulty0set by the owner

Metering

LineBacking costFree / monthBeyond
events storedDO SQLite100 MB400 sats/GB-mo
files storedR21,024 MB30 sats/GB-mo
time awakeDO duration100 h11 sats/h
rows writtenSQLite writes250,0002,000 sats/M
traffic, rows readnot fuel-pricednot billedfree

Below the allowances, you owe nothing. With no balance past an allowance, event writes and uploads stop; GRASP requests and remote site fetches also stop. Fuel exhaustion does not delete stored data.

The meters are relay totals, not a bill per feature. Git history remains in retained SQLite storage after refs expire. Provider requests and object operations are host overhead, not separate tenant charges. Understanding fuel explains the shared allowances and metering limits.

Protocol

NIPWhat it does here
01Publish, subscribe, and query events. All clients use this.
09Delete your own events.
11The relay describes itself: limits, retention, owner, payment.
13The owner can require proof of work on events.
29The relay is one group: joins, leaves and moderation by owner and moderators, state signed by the relay.
40Events with an expiration tag are removed at that time.
42Clients prove their key. Needed for private kinds and members-only reads.
45Count events without downloading them.
50Prose search by default; the owner can index all public content or switch search off.
17, 59Private messages are sent only to the sender and the recipient.
62Request to vanish: the relay deletes all your events and refuses older ones.
70Protected events are accepted only from their author, over an authenticated socket.
77Sync events with a different relay, in either direction.
86Manage the relay with signed JSON-RPC calls.
98Sign an HTTP request with your key. Used by claim, management, and the HTTP endpoints.
05Members with a name are you@name.bind.ws.
43The relay signs and publishes its member list.
57Zaps to the relay add fuel. The receipt is stored on the relay.
66The relay signs a discovery record about itself, so directories find it without a probe.
BlossomUpload and fetch files by hash on the same host. Check an upload before sending it, mirror a file from a URL, report one by hash.
94, 96The same files through the NIP-96 door, with NIP-94 metadata in every answer.
NIP-5ARoot, named and snapshot websites from signed manifests, on isolated hostnames. Site hosting and mirroring are on by default; the relay's read rule governs access.
MarmotOpt-in KeyPackages and opaque MLS group messages. Account admission and caps apply to ephemeral authors; clients handle encryption.
GRASP-01Opt-in public Git Smart HTTP. Signed NIP-34 state authorizes refs, and publication waits for matching Git objects. Owners can inspect retained storage. Later GRASP specifications are not advertised.