diff --git a/packages/coding-agent/CHANGELOG.md b/packages/coding-agent/CHANGELOG.md
index 8f225ac04..2c25a2fb3 100644
--- a/packages/coding-agent/CHANGELOG.md
+++ b/packages/coding-agent/CHANGELOG.md
@@ -27,7 +27,7 @@
- Updated collab link handling to accept compact `roomId#key` links and relay hosts without explicit scheme when joining or starting sessions
- Added `/collab stop` and `/collab status` options to control and inspect active shared sessions
-- Added `/collab`, `/join`, and `/leave` for live session sharing: the host shares an end-to-end encrypted link (AES-256-GCM key only in the link fragment; the relay sees opaque bytes) and guests render the session natively in their own TUI — streaming text, tool cards, footer state, ctrl+o expansion, `/dump` — and can prompt or interrupt the host's agent. Guest prompts render with an author badge; session-mutating commands stay host-only. Defaults to the public `relay.omp.sh` relay (`collab.relayUrl`); a self-hostable Go relay lives in the pi-www repo as `omp-collab-relay`
+- Added `/collab`, `/join`, and `/leave` for live session sharing: the host shares an end-to-end encrypted link (AES-256-GCM key only in the link fragment; the relay sees opaque bytes) and guests render the session natively in their own TUI — streaming text, tool cards, footer state, ctrl+o expansion, `/dump` — and can prompt or interrupt the host's agent. Guest prompts render with an author badge; session-mutating commands stay host-only. Defaults to the public `my.omp.sh` relay (`collab.relayUrl`); a self-hostable Go relay lives in the pi-www repo as `omp-collab-relay`
- Added `collab.relayUrl` and `collab.displayName` settings plus a `collab` status-line segment showing the participant count (host) or guest role. Guests mirror the host's real model/thinking state into their replica agent and the host's subagent ecosystem end-to-end: the live subagent HUD, the Agent Hub table with live progress, hub chat/kill/revive (routed to the host), and on-demand subagent transcript viewing
- Added `omp join ` subcommand that launches the interactive TUI and immediately runs `/join `
diff --git a/packages/coding-agent/test/collab/crypto.test.ts b/packages/coding-agent/test/collab/crypto.test.ts
index 706330a3b..41c41839d 100644
--- a/packages/coding-agent/test/collab/crypto.test.ts
+++ b/packages/coding-agent/test/collab/crypto.test.ts
@@ -102,7 +102,7 @@ describe("collab link format", () => {
});
it("parses the scheme-less display form of web deep links", () => {
- const parsed = parseCollabLink(`relay.omp.sh/#${formatCollabLink(DEFAULT_RELAY_URL, roomId, key)}`);
+ const parsed = parseCollabLink(`my.omp.sh/#${formatCollabLink(DEFAULT_RELAY_URL, roomId, key)}`);
if ("error" in parsed) throw new Error(parsed.error);
expect(parsed.wsUrl).toBe(`${DEFAULT_RELAY_URL}/r/${roomId}`);
expect(Buffer.from(parsed.key)).toEqual(Buffer.from(key));
@@ -137,7 +137,7 @@ describe("collab link format", () => {
it("keeps the key out of web-link path and query", () => {
const webLink = formatCollabWebLink(DEFAULT_RELAY_URL, roomId, key);
const url = new URL(webLink);
- expect(url.origin).toBe("https://relay.omp.sh");
+ expect(url.origin).toBe("https://my.omp.sh");
expect(url.pathname).toBe("/");
expect(url.search).toBe("");
expect(url.hash).toBe(`#${roomId}#${Buffer.from(key).toString("base64url")}`);
diff --git a/packages/coding-agent/test/join-command.test.ts b/packages/coding-agent/test/join-command.test.ts
index 16246c0f2..5bf0926e4 100644
--- a/packages/coding-agent/test/join-command.test.ts
+++ b/packages/coding-agent/test/join-command.test.ts
@@ -9,8 +9,8 @@ import { isSubcommand, resolveCliArgv } from "@oh-my-pi/pi-coding-agent/cli-comm
describe("join command is registered as a top-level subcommand", () => {
test("CLI runner routes `join ` to the join command, not launch", () => {
expect(isSubcommand("join")).toBe(true);
- expect(resolveCliArgv(["join", "wss://relay.omp.sh/s/abc#key"])).toEqual({
- argv: ["join", "wss://relay.omp.sh/s/abc#key"],
+ expect(resolveCliArgv(["join", "wss://my.omp.sh/s/abc#key"])).toEqual({
+ argv: ["join", "wss://my.omp.sh/s/abc#key"],
});
});
});
diff --git a/packages/collab-web/README.md b/packages/collab-web/README.md
index a3d1d8df0..98d7b660c 100644
--- a/packages/collab-web/README.md
+++ b/packages/collab-web/README.md
@@ -20,10 +20,10 @@ Host a session from any omp instance (`/collab`, or `/collab ws://localhost:7466
bun run build # static site in dist/
```
-`dist/` is a fully static SPA — host it anywhere. JS/CSS bundles are content-hashed; favicons, `manifest.webmanifest`, `robots.txt`, `sitemap.xml`, and `og-image.png` come from `public/` and are emitted at the site root under stable names (canonical URL: `https://relay.omp.sh/`). Two runtime requirements:
+`dist/` is a fully static SPA — host it anywhere. JS/CSS bundles are content-hashed; favicons, `manifest.webmanifest`, `robots.txt`, `sitemap.xml`, and `og-image.png` come from `public/` and are emitted at the site root under stable names (canonical URL: `https://my.omp.sh/`). Two runtime requirements:
- **Secure context**: room keys are unwrapped with WebCrypto (`crypto.subtle`), which browsers expose only on `https://` or `localhost`.
-- **Relay reachability**: the client connects straight to the relay over WebSocket (`wss://` for anything that isn't localhost). The default relay is `wss://relay.omp.sh`; bare `#` links resolve against it.
+- **Relay reachability**: the client connects straight to the relay over WebSocket (`wss://` for anything that isn't localhost). The default relay is `wss://my.omp.sh`; bare `#` links resolve against it.
The room key never leaves the URL fragment — it is not sent to the relay or any server.
diff --git a/packages/collab-web/index.html b/packages/collab-web/index.html
index 6ddabc4df..367aa4daf 100644
--- a/packages/collab-web/index.html
+++ b/packages/collab-web/index.html
@@ -12,7 +12,7 @@
content="Guest client for omp collab sessions: watch a live coding-agent session — streaming transcript, tool calls, subagents — and prompt the host agent from any browser. End-to-end encrypted; the room key never leaves the URL fragment."
/>
-
+
@@ -26,13 +26,13 @@
-
+
-
+
@@ -41,13 +41,13 @@
-
+
-
+
@@ -56,7 +56,7 @@
"@context": "https://schema.org",
"@type": "WebApplication",
"name": "omp collab",
- "url": "https://relay.omp.sh/",
+ "url": "https://my.omp.sh/",
"applicationCategory": "DeveloperApplication",
"operatingSystem": "Any",
"description": "Browser guest client for omp collab live sessions: streaming transcript, tool calls, subagent panel, and a composer that prompts the host agent. End-to-end encrypted.",
diff --git a/packages/collab-web/public/robots.txt b/packages/collab-web/public/robots.txt
index 34bd17b1c..66fafa979 100644
--- a/packages/collab-web/public/robots.txt
+++ b/packages/collab-web/public/robots.txt
@@ -2,4 +2,4 @@ User-agent: *
Allow: /
Disallow: /r/
-Sitemap: https://relay.omp.sh/sitemap.xml
+Sitemap: https://my.omp.sh/sitemap.xml
diff --git a/packages/collab-web/public/sitemap.xml b/packages/collab-web/public/sitemap.xml
index 3b25af0ad..c6fa474c0 100644
--- a/packages/collab-web/public/sitemap.xml
+++ b/packages/collab-web/public/sitemap.xml
@@ -1,7 +1,7 @@
- https://relay.omp.sh/
+ https://my.omp.sh/monthly1.0
diff --git a/packages/collab-web/scripts/local-relay.ts b/packages/collab-web/scripts/local-relay.ts
index cfa1eeae2..a09b6d960 100644
--- a/packages/collab-web/scripts/local-relay.ts
+++ b/packages/collab-web/scripts/local-relay.ts
@@ -1,5 +1,5 @@
/**
- * Offline stand-in for the public collab relay (`wss://relay.omp.sh`).
+ * Offline stand-in for the public collab relay (`wss://my.omp.sh`).
*
* Speaks the exact relay contract the real clients expect:
* - `GET /r/?role=host|guest` upgrades to a WebSocket.
diff --git a/packages/collab-web/test/link.test.ts b/packages/collab-web/test/link.test.ts
index 9a2e0ca76..5314e678c 100644
--- a/packages/collab-web/test/link.test.ts
+++ b/packages/collab-web/test/link.test.ts
@@ -60,7 +60,7 @@ describe("collab link parsing", () => {
});
it("parses web deep links (https:///#)", () => {
- const bare = parseCollabLink(`https://relay.omp.sh/#${ROOM}#${KEY_TEXT}`);
+ const bare = parseCollabLink(`https://my.omp.sh/#${ROOM}#${KEY_TEXT}`);
if ("error" in bare) throw new Error(bare.error);
expect(bare.wsUrl).toBe(`${DEFAULT_RELAY_URL}/r/${ROOM}`);
expect(bare.key).toEqual(KEY);
diff --git a/packages/wire/CHANGELOG.md b/packages/wire/CHANGELOG.md
index 45e63a22e..e10170c70 100644
--- a/packages/wire/CHANGELOG.md
+++ b/packages/wire/CHANGELOG.md
@@ -6,6 +6,7 @@
- Added `readOnly` flags to participant and session payload types to indicate when a guest is connected via a read-only (view) link
- Added `writeToken` to `GuestFrame` hello payloads and parsed collaboration links so full-access links can carry and expose a write-capability token
- Added `ROOM_KEY_BYTES` and `WRITE_TOKEN_BYTES` constants for room key and write-token sizing in the wire protocol
+- Added `DEFAULT_SHARE_URL` (`https://my.omp.sh/s`), the default share viewer/upload base for `/share` links
## [15.11.8] - 2026-06-12
diff --git a/packages/wire/src/index.ts b/packages/wire/src/index.ts
index d5158d0a3..6cb6e03fb 100644
--- a/packages/wire/src/index.ts
+++ b/packages/wire/src/index.ts
@@ -364,7 +364,10 @@ export const ROOM_KEY_BYTES = 32;
export const WRITE_TOKEN_BYTES = 16;
/** Default public relay; bare `#` links resolve against it. */
-export const DEFAULT_RELAY_URL = "wss://relay.omp.sh";
+export const DEFAULT_RELAY_URL = "wss://my.omp.sh";
+
+/** Default share viewer/upload base; `/share` links resolve against `/#`. */
+export const DEFAULT_SHARE_URL = "https://my.omp.sh/s";
export interface ParsedCollabLink {
/** wss://host[:port]/r/ — no query, no fragment. */
diff --git a/packages/wire/test/constants.test.ts b/packages/wire/test/constants.test.ts
index 4a11a0b46..8141e69e0 100644
--- a/packages/wire/test/constants.test.ts
+++ b/packages/wire/test/constants.test.ts
@@ -13,6 +13,6 @@ describe("collab wire constants", () => {
expect(COLLAB_PROMPT_MESSAGE_TYPE).toBe("collab-prompt");
expect(ENVELOPE_HEADER_LENGTH).toBe(4);
expect(ROOM_ID_BYTES).toBe(16);
- expect(DEFAULT_RELAY_URL).toBe("wss://relay.omp.sh");
+ expect(DEFAULT_RELAY_URL).toBe("wss://my.omp.sh");
});
});