Orb

Clients

Download Orb

Native shells for internet pub/sub. Sign in with Google to manage topics, keys, and publish from the app; the web inbox still works. Contract: living contract docs/client-spec.md v0.56.0 (in the zip as CLIENT-SPEC.md).

Development host download.orbnet.app — not production. Prebuilt macOS .dmg is Developer ID signed and notarized. Windows NSIS and Linux .deb/.AppImage are unsigned. Android is a debug APK (sideload only — not Play, not a release keystore).

This round (macOS 0.2.13 SwiftUI · Windows/Linux 0.2.2 · Android 0.1.42 · iOS 0.1.11 · MCP 0.3.5 · CLI 0.1.1): The Android owner screens stop hiding things. A topic you own now opens on an Audience section that says who can read it — grants out, devices connected, members for an encrypted topic — so a topic with nobody listening looks different from a live one at a glance. Publish keys and listen grants are separate rows instead of one row called "Publish keys" that also minted a read-only credential. A minted key appears in a box next to the button that made it, with its own copy control, instead of at the top of the screen where you had to scroll to find it. Pairing a device and minting an account key moved off the Topics tab to Settings → Devices, where the rest of the account-level controls live, and the duplicate pair section inside a topic is gone. Spec 0.57.0.

Platforms

MCP server

stdio · Go · v0.3.5 · Linux · macOS · Windows

orb-mcp exposes publish, list_envelopes, fetch_body, and topic_soul to any MCP host (Claude Code, Cursor, Marble, …). Static binaries, amd64 + arm64.

Get orb-mcp

One orb_ak_ account key in env = publish + read across all your topics. No key = public listen only.

Command line

CLI · Go · v0.1.1 · Linux · macOS · Windows

orb-cli is a dependency-free CLI for humans and scripts — publish, list, read, soul, topics. Same env credentials as orb-mcp; no key = public listen.

Get orb-cli

MCP server (CLI)

orb-mcp is a local stdio MCP server — a thin wrapper over the Orb HTTP API (publish, list_envelopes, fetch_body, topic_soul, list_owned_topics). No extra daemon, no new deps. It works in any MCP host (Claude Code, Cursor, Marble, custom bots).

Credentials live in your environment, never in Orb’s infra and never in argv. The topic secret is sent only to api.orbnet.app.

Downloads

Platformamd64 (x86_64)arm64 (Apple silicon / aarch64)
Linux orb-mcp_0.3.5_linux_amd64 orb-mcp_0.3.5_linux_arm64
macOS orb-mcp_0.3.5_darwin_amd64 orb-mcp_0.3.5_darwin_arm64
Windows orb-mcp_0.3.5_windows_amd64.exe orb-mcp_0.3.5_windows_arm64.exe

Checksums: files/SHA256SUMS (updated on each mcp-v* release).

Install

# Linux / macOS
chmod +x orb-mcp_0.3.5_$(uname -s | tr A-Z a-z)_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/')
sudo mv orb-mcp_0.3.5_* /usr/local/bin/orb-mcp
orb-mcp -version

Credentials (env)

KeyMeaning
ORB_API_BASEdefault https://api.orbnet.app
ORB_TOPIC_IDdefault topic t_…
ORB_AKaccount key — publish + read (preferred)
ORB_PUBLISH_KEYtopic-scoped publish key (fallback)
ORB_SKlisten-only grant (read only)
ORB_SESSIONowner session — for list_owned_topics (account key also works)
ORB_KEYSJSON map topic_id → token (or path to a JSON file) — one server, multiple accounts

With no read token the server omits Authorization and does public listen (topic id only).

Multiple topics across accounts

One instance normally holds one publish credential. To reach private topics owned by different accounts from a single server, give it an ORB_KEYS map and the right Authorization is picked from topic_id on each call:

export ORB_KEYS='{"t_A":"orb_pk_live_…","t_B":"orb_pk_live_…","t_C":"orb_sk_live_…"}'
# or: export ORB_KEYS=/path/to/0600-keys.json

publish / list_envelopes / fetch_body use the mapped key; unlisted topics fall back to ORB_AK/ORB_PUBLISH_KEY/ORB_SK. Keys live in env/file only — never in tool arguments or logs.

Register

Claude Code:

claude mcp add orb \
  --env ORB_API_BASE=https://api.orbnet.app \
  --env ORB_TOPIC_ID=t_… \
  --env ORB_AK=orb_ak_live_… \
  -- /usr/local/bin/orb-mcp

Cursor (.cursor/mcp.json):

{
  "mcpServers": {
    "orb": {
      "command": "/usr/local/bin/orb-mcp",
      "env": {
        "ORB_API_BASE": "https://api.orbnet.app",
        "ORB_TOPIC_ID": "t_…",
        "ORB_AK": "orb_ak_live_…"
      }
    }
  }
}

Tools: publish (markdown or json), list_envelopes, fetch_body, topic_soul, list_owned_topics. Source: cmd/orb-mcp/ in the repo. Build with make build-mcp.

Command-line (CLI)

orb-cli is a dependency-free Go CLI for humans and scripts — publish, list, read, soul, topics, version. Same env credentials as orb-mcp: ORB_AK (publish + read), ORB_PUBLISH_KEY, ORB_SK, ORB_SESSION, ORB_KEYS. No key = public listen (topic id only).

Downloads

Platformamd64 (x86_64)arm64 (aarch64)
Linux orb-cli_0.1.1_linux_amd64 orb-cli_0.1.1_linux_arm64
macOS orb-cli_0.1.1_darwin_amd64 orb-cli_0.1.1_darwin_arm64
Windows orb-cli_0.1.1_windows_amd64.exe orb-cli_0.1.1_windows_arm64.exe

Checksums: files/SHA256SUMS (updated on each cli-v* release).

Install

# Linux / macOS
chmod +x orb-cli_0.1.1_$(uname -s | tr A-Z a-z)_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/')
sudo mv orb-cli_0.1.1_* /usr/local/bin/orb-cli
orb-cli version

Usage

export ORB_TOPIC_ID=t_…          # optional default topic
export ORB_AK=orb_ak_live_…       # publish + read (optional; omit for public listen)

orb-cli list                        # recent envelopes (public: no key)
orb-cli soul t_…                    # topic alias + about
orb-cli read -topic t_… m_…         # fetch a message body
printf 'hello' | orb-cli publish -title 'hi'   # publish markdown
orb-cli topics                      # owned topics (orb_ak_ or session)

Source: cmd/orb-cli/ in the repo. Build with make build-cli. Credentials come from env, never argv. ORB_KEYS maps topic_id → token for private topics owned by different accounts.