Relay¶
wss://chat.omxus.com is a Nostr
relay. Any Nostr client or library can publish signed events to it and read
them back. It is free and open: no sign-in, no payment, no allowlist.
It runs Nosflare 7.9.39 (MIT) on Cloudflare Workers with a D1 database. Omxus changed only its settings: payment off, NIP-42 auth off, and its name and contact.
What it answers¶
Checked live on 30 Oct 2026.
| Ask | Answer |
|---|---|
Relay information (NIP-11)GET https://chat.omxus.com/ with Accept: application/nostr+json |
Name "OMXUS Relay", version 7.9.39, contact [email protected] |
| Supported NIPs | 1, 2, 4, 5, 9, 11, 12, 15, 16, 17, 20, 22, 33, 40, 42 |
| Sign-in required | No |
| Payment required | No |
| Writes restricted | No |
Rules it applies¶
| Rule | Value |
|---|---|
| Events per query | At most 500 across all filters in one REQ |
| Blocked kinds | 1064 |
| Blocked authors | 5 spam public keys, set in the relay's config |
| Duplicate check | Off |
| Storage | Kept until the database passes 9 GB; then the oldest events are pruned down to 8 GB. Profiles (kind 0), follow lists (kind 3) and relay lists (kind 10002) are never pruned |
Pruning runs daily at 00:00 UTC. Do not treat the relay as permanent storage: publish to more than one relay if an event must last.
Publish and read back¶
This publishes one note with a fresh key, then asks for it by id. Tested against the live relay on 30 Oct 2026 (Node 26).
import { schnorr } from "@noble/curves/secp256k1";
import { sha256 } from "@noble/hashes/sha256";
import { bytesToHex } from "@noble/hashes/utils";
const sk = schnorr.utils.randomPrivateKey();
const pubkey = bytesToHex(schnorr.getPublicKey(sk));
const event = {
pubkey,
created_at: Math.floor(Date.now() / 1000),
kind: 1,
tags: [],
content: "hello from the docs",
};
event.id = bytesToHex(sha256(new TextEncoder().encode(JSON.stringify(
[0, event.pubkey, event.created_at, event.kind, event.tags, event.content]))));
event.sig = bytesToHex(schnorr.sign(event.id, sk));
const ws = new WebSocket("wss://chat.omxus.com");
ws.onopen = () => ws.send(JSON.stringify(["EVENT", event]));
ws.onmessage = ({ data }) => {
const msg = JSON.parse(data);
console.log(msg);
if (msg[0] === "OK") ws.send(JSON.stringify(["REQ", "docs", { ids: [event.id] }]));
if (msg[0] === "EOSE") ws.close();
};
The relay answers in three steps:
["OK", "<event id>", true, "Event saved successfully"]
["EVENT", "docs", { ...the note... }]
["EOSE", "docs"]
A rejected event comes back as ["OK", "<event id>", false, "<reason>"].
Relay and Omxus accounts¶
The relay knows nothing about Omxus sign-in. Nostr events are signed with a secp256k1 Schnorr key the client holds; an Omxus account is not needed and is not checked.
Run your own¶
Nosflare deploys to any Cloudflare account. Follow its
README: set your own
name, public key and contact in src/config.ts, your own D1 database in
wrangler.toml, then npm run build and wrangler deploy.