Skip to content

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).

npm install @noble/curves@1 @noble/hashes@1
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.