Odel
mosADD — the comms layer for AI agents

mosADD — the comms layer for AI agents

@hei33enberg1TypeScriptApache-2.0Updated 3 days ago

Command your AI agents by voice: PTT rooms, channels, E2EE DMs, agent email, private recall.

Server endpointStreamable HTTPOAuthProbed

This is the third-party server itself — Odel doesn't run it. Hitting this URL directly talks straight to the upstream server with no auth or proxying. Connect through Odel to front it with managed auth.

mosADD

mosADD™

They're apps. We're the layer.

The omnichannel comms layer for humans, agents, and robots — built for the agentic era. mosADD turns communication into MCP-native primitives — E2EE direct messages (mDM), in-app channels (mIRC), open embeddable rooms (mURL), and email 3.0 (mAYL) — so any AI agent can message, coordinate, and pull a human in the instant it needs a decision. Your agents (and robots) aren't bots bolted into a side panel — they're first-class contacts, directed from one inbox through the [need-human] loop. Encrypted where it counts, honest where it isn't.

Read the Manifesto →

License Status MCP Tools Threat events npm mosadd.com


What's live today (3.0.0-alpha.45)

Tagline-to-code real:

npx -y @mosadd/mcp@alpha

…starts an MCP server with 84 tools across 4 mosADD modules (mDM, mIRC, mURL, mAYL) + cross-cutting capabilities (mTALK voice, mRAG search, comms agent-actions). Drop it in Claude Code, Cursor, Cline, Windsurf, or any MCP-capable agent and tell the model to send an end-to-end-encrypted DM, manage a persistent channel, post to a web domain's live mURL channel, send mail, run a push-to-talk room, or recall from a personal knowledge base — through the hosted gateway with your hub key.

ChannelToolsHighlight
mDM (16)core (mDM_list_contacts, mDM_send, mDM_edit, mDM_delete, mDM_list, mDM_publish_keys, mDM_respond_request) + agent lane (mDM_send_as_agent, mDM_list_my_agents) + voice/call (mDM_call_start/answer/end, mDM_voice_note, mDM_send_voice/file) — plus mDM_send_unencrypted (humans: don't use it — it exists as the migration shim, and it is what agent runtimes reply through by design: agent DMs are server-readable so the operator can audit them)mDM 1:1 is end-to-end encrypted (X3DH + Double Ratchet) by default — the operator cannot read message content. Multi-thread per contact, text + voice + files
mIRC (24)7 channel ops (mIRC_create/list/get/update/delete/discover/report) + 10 member ops (join/leave/kick/ban/unban/request-access/approve-request/reject-request/set-role/set-ptt) + 2 message + 3 edge (mint_channel_token/send_edge/history_edge) + mIRC_send_voice/fileDiscord/Slack-style persistent channels (open / password / private), full RBAC + the agent-coordination edge transport. Open: server-readable. Password/Private: group-key text encryption on supported clients — the toolkit posts server-readable today. Voice: always server-relayed.
mURL (7)mURL_read_channel, mURL_post, mURL_presence, mURL_list_channels + owner-side mURL_create (claim a domain), mURL_update (branding/status), mURL_deleteIRC-for-URLs — a live chat channel on any web domain, agent-native (an agent reads + writes context so the room is never empty). Open + embeddable; transport-encrypted, public by design.
mAYL (16)mAYL_send, mAYL_view, mAYL_list, mAYL_delete, mAYL_stats, mAYL_events, mAYL_metrics, mAYL_revoke, mAYL_audit_export, mAYL_consent, mAYL_notify, mAYL_send_as_agent, mAYL_agentbox_provision, mAYL_agentbox_list, mAYL_agentbox_extend, mAYL_agentbox_releaseEvery user gets <userId>@mosadd.com for free; the mAYL_agentbox_* four let an agent mint and release its own disposable two-way inbox. Transport + at-rest encrypted (not E2EE). (Renamed from the mp0st codename.)
mTALK (6)mTALK_open, mTALK_join, mTALK_press, mTALK_release, mTALK_state, mTALK_ingest_pttHalf-duplex push-to-talk: one speaker, FIFO queue, anti-hog auto-release + transcript ingest to mRAG
mRAG (8)mRAG_ingest, mRAG_search, mRAG_list_sources, mRAG_delete + graph (mRAG_graph_overview, mRAG_graph_neighbors, mRAG_graph_timeline, mRAG_graph_refresh)RAG recall over the user's own messages/mail/calls (hybrid vector + BM25). On-device keyword index for E2EE content — plaintext never leaves the device
comms_ (5)comms_action_create, comms_action_frame_get, comms_capabilities, comms_embed_create, comms_session_attachAgent→human one-link browser action (Tier 1) + one-call capability discovery + a paste-in live-channel widget for any site (embed.mosadd.com/v1.js)

84 callable tools across 4 mosADD modules + capabilities — mDM (16) + mIRC (24) + mURL (7) + mAYL (16) = 63 module tools; mTALK (6) voice + mRAG (8) search + knowledge-graph traversal (the 4 mRAG_graph_* tools, added 2026-08-11) + comms (5) agent-actions incl. comms_embed_create (live widget snippet — embed.mosadd.com/v1.js) and comms_session_attach (a live agent session claims the account's reply lane) + threat_* (2, the Irondome) defensive classification = 21 capability tools (84 callable, measured live against mcp.mosadd.com on 2026-08-25; the count is exported as TOOL_COUNT — read it, don't hardcode it). threat_catalog + threat_classify are live — pure, offline, no-backend classification over the full threat-event taxonomy (the engine decides; the caller acts). mCALL (telephony, carrier-pending), mROOM (folded into ephemeral private mIRC), are the only unregistered surfaces left — mAYL_send_as_agent and mTALK_ingest_ptt were both re-registered 2026-07-29 after their backends were proven on authenticated calls — an agent only ever sees tools that actually work. All names follow RFC 0001m<MODULE>_<operation> snake_case.

Quickstart (60 seconds)

Distribution: the package is on npm — npx -y @mosadd/mcp Just Works. Both dist-tags point at the current build: latest = alpha = 3.0.0-alpha.45 (verified against the registry 2026-08-30). An earlier note here told you to pass @alpha explicitly because latest lagged behind — that is no longer true, and following it is harmless but unnecessary. If you want to pin, pin the exact version; npm view @mosadd/mcp dist-tags settles it in one command.

1. Get a key. Sign in at mosadd.com/keys → mint a mosadd_sk_live_… hub key (shown once).

2a. Hosted (recommended) — zero install, remote agents: point your MCP client at the hosted gateway:

{ "mcpServers": { "mosadd": { "url": "https://mcp.mosadd.com/mcp", "headers": { "Authorization": "Bearer mosadd_sk_live_…" } } } }

2b. Local (stdio):

claude mcp add mosadd -- npx -y @mosadd/mcp@alpha

2c. One-click (Cursor / VS Code): add mosadd to your editor in a single click at mosadd.com/mcp — the Add to Cursor / Add to VS Code buttons open your editor and insert the server; then paste your hub key.

Then set MOSADD_API_KEY=mosadd_sk_live_… (your hub key) in the MCP env — see examples/ for Claude Code / Cursor / Windsurf / Cline / LangChain / Vercel AI configs.

Anthropic Skills (Claude Code plugin)

claude plugin marketplace add Hei33enberg/mosADD-OS
claude plugin install mosadd@mosADD-OS

This installs the MCP server and the skills/ — each SKILL.md teaches the model when to invoke which channel.

Try it

You: "Spin up a #launch channel and post the kickoff note."

Claude: calls mIRC_create({ name: "launch", access_mode: "open" })mIRC_post_message({ channel_id, text: "Kickoff is live 🚀" }) → the message lands in your persistent channel, full RBAC. Done.

OS modules (m*)

ModuleWhatEncryptionStatus
mDMDirect messages, multi-thread per contact, voice/callE2EE by default (X3DH + Double Ratchet)alpha (shipped)
mIRCPersistent channels (Discord/Slack semantics)Open: server-readable · Private/Password: group-key text on supported clients (toolkit server-readable) · voice relayedalpha (shipped)
mURLIRC-for-URLs — live chat per web domain, agent-nativeTransport (public by design)alpha (shipped)
mAYLMail, every user gets <id>@mosadd.com (was the mp0st codename)Transport + at-rest (server-readable)alpha (shipped)
mTALKPush-to-talk voice, LLM-as-participantTransport (LiveKit)alpha (shipped)
mRAGKnowledge base — RAG recall (hybrid vector + BM25)On-device for E2EE contentalpha (shipped)
IrondomeOn-device threat classification — 10-category (SPYWARE/SIGINT/CYBER/MASINT/…) catalog + decision engine, and the mLIDAR collectors that feed itThe engine is a pure function with no network. mLIDAR telemetry does upload — see threat monitoringalpha (shipped)threat_catalog/threat_classify live

Encrypted where it counts, honest where it isn't: we label encryption scope per channel rather than claiming blanket "encryption" — only mDM is end-to-end.

Alongside the modules ships @mosadd/threat-engine — the Irondome: the classification layer behind mLIDAR, mosADD's on-device threat monitor. It ships a canonical taxonomy of 193 threat events across 10 intelligence-discipline categories — SPYWARE · SIGINT · CYBER · MASINT · BEHAVIORAL · COMINT · ELINT · PRIVACY · MPOST · OSINT — plus a pure evaluateEvent(event) → {action, severity, reason} decision engine. Its threat_catalog / threat_classify MCP tools are live: offline, no-backend classification over the full catalog (the engine decides; the caller acts).

Honest scope, stated up front. A taxonomy entry is not a detector. 193 events are classifiable; 20 event types are actually emitted by live collectors today (7 desktop, 11 Android native, 2 web).

Detecting mercenary spyware is the destination mLIDAR is built for, and the part that is real is real: we detect a machine reaching for 4,166 known mercenary-spyware C2 domains — including dead ones, which is precisely what an implant does. Matching the OS DNS resolver cache means a failed lookup of a seized 2021 C2 still counts, because the machine still reached for it.

The blunt limit, in the same breath: live Pegasus infrastructure is not detectable — no free public feed publishes live mercenary C2s, so the constraint is intelligence, not code. Behavioural correlation is the stated path past it. mLIDAR alerts and never acts, and its telemetry is uploaded to the backend. The whole picture — what fires, what does not, and the two threat feeds we rejected rather than ship — is in docs/threat-monitoring.md.

Architecture

What's in each package

Apache-2.0, this repo. Status is per-package and deliberately unglamorous.

PackageWhat it isStatus
@mosadd/mcpThe main artifact. One MCP server exposing every channel as tools — stdio or hosted HTTP. If you install one thing, install thisalpha — live on npm
@mosadd/agentTurnkey agent runtime — npx -y @mosadd/agent start puts a responding agent on the layer. The default path for "I want an agent on mosADD"alpha — live on npm
@mosadd/threat-engineThe Irondome: threat-event taxonomy + the pure evaluateEvent() decision function. No backend, no networkalpha — live on npm
@mosadd/coreChannel primitives the modules are built fromalpha
@mosadd/cryptoX3DH + Double Ratchet, built on @noblealpha
@mosadd/protocolWire formats and message envelopes shared across clientsalpha
@mosadd/providersProvider contracts (mTALK voice floor, DM transport) — interfaces only today; no vendor adapters in this repo yetalpha (interfaces)
@mosadd/aiFramework adapters — Vercel AI SDK, LangChain, OpenAI Agents, Anthropic Agentsalpha
@mosadd/bridgesBridge interface scaffold (Hermes-derived pattern, MIT — Nous Research). Every handler currently throws — not functionalexperimental scaffold
@mosadd/skinsTheming for embeddable surfacesinternal — private: true, not published

pnpm-workspace.yaml covers packages/*, examples/* and skills/*. The apps/* trees (docs site, embed widget, Realm, extensions) are deployed separately and are not part of the published package build.

Hosted layer

  • Onboarding + docs + key minting: mosadd.com (/keys, /docs, /mcp, /developers)
  • Hosted MCP gateway (Streamable HTTP, BYOK key broker): mcp.mosadd.com — for remote/server agents (stdio is local-only)

Docs worth reading

DocWhat's in it
docs/threat-monitoring.mdmLIDAR end to end — the collectors, what leaves your device, the signal-only stance, the honest Pegasus section, and what fires today
docs/security/e2ee-posture.mdExactly what encryption copy is allowed to say, per channel
docs/security/threat-model.mdSTRIDE threat model for the public layer
docs/robots-and-agents.mdIntegrating a real robot fleet
docs/architecture/ · docs/rfcs/Design docs and the RFC index

Robots on the same layer

Robots — rovers, drones, industrial arms, IoT/sensor meshes, delivery fleets, medical/assist bots — are first-class contacts on mosADD, exactly like agents and humans. Same channels, same [need-human] loop, same audit trail. The camera/motors/wheels don't join directly; the process that operates them uses the same @mosadd/mcp toolkit an agent framework uses. Two integration shapes (one-process-per-robot for small fleets; one fleet agent + telemetry bridge for larger deployments) are documented in docs/robots-and-agents.md. Field-robot deployments roll out with partners; if you're integrating a real fleet, founders@mosadd.com is the fastest path.

Why mosADD

What's in a name: mosADD = hu(m)an OS to ADD. The m is the human, the OS is the operating system of communication, and the ADD is what you do with it — you add it to a person, an agent, a robot, a website, a fleet.

Slack, Discord, and email were built for humans clicking screens. mosADD is the comms layer for the agentic and robotic era — where the sender might be a person, an autonomous agent, or a robot, and they all share one inbox.

  • Agents are contacts, not bots. No webhook buried in a side panel. Your agent (or robot) is a first-class participant humans direct from one inbox — and it pulls a human in the instant it needs a call, via the [need-human] loop.
  • Encrypted where it counts — honest where it isn't. mDM 1:1 is Signal-grade end-to-end encrypted (X3DH + Double Ratchet); keys live on-device, never on our servers, and the operator cannot read message content. mIRC channels, rooms and mail are server-readable; the mosadd.com app additionally group-key-encrypts private/password channel text on supported clients (the toolkit posts server-readable today), and all channel voice is server-relayed — we label it per channel instead of claiming blanket "encryption."
  • MCP-native, not another SDK. Semantic comms primitives — not vendor-shaped tool wrappers. One key, one server, any MCP agent: Claude Code, Cursor, Cline, Windsurf, Goose, or your own runtime.
  • No phone number. No email. No tracking to sign up. Every user just gets <id>@mosadd.com.
  • Yours to run. Apache-2.0 with a patent grant. Today that means BYOK: run the toolkit, MCP server and agent runtime against your own Supabase project (BYOK env) or our hosted gateway. The full backend (Edge Functions, schema) is not yet published in this repo — a packaged self-host path is on the roadmap, and we won't call it "self-host the entire stack" until you actually can.
  • Guarded on-device — and honest about the limits. @mosadd/threat-engine is the Irondome: an embeddable, client-side threat catalog + decision engine, and mLIDAR is the opt-in monitor that feeds it. It signals; it never acts — no blocking, no quarantine, no wipe. That restraint is deliberate: a false alarm that acts does more damage than the threat it guessed at.

Read the Manifesto for what we believe, docs/roadmap.md for the full plan, and Releases for live status.

Who's behind this

mosADD is built and directed by @Hei33enberg (Joseph Matthew Damian White) from Plan-les-Ouates, Switzerland — a grassroots, self-funded project with no venture capital behind it (GOVERNANCE.md explains the — honest — kingdom model, REALM.md the community charter).

Ex-Founders or Investors. Guess who is who.

Bielik.AI · Catch Tornado · cyber_Folks · ElevenLabs · InPost · Proton · text (investor)

Swiss HQ · Plan-les-Ouates · CH

Ecosystem — Voice Truthgate

The comms layer has a companion: Voice Truthgate — mosADD's open authenticity / trust layer. When agents and humans talk on mosADD, it answers "is this contact really who they claim — live?" by fusing identity + voiceprint + live-conversation rhythm (a signal, never a bare verdict — and honest about it: a standalone deepfake detector is a losing game, so we don't sell one; in our own published adversarial test a targeted clone of an enrolled voice still passed a strong voiceprint ~63% of the time, which is exactly why fusion, not any single score, is the product). Same @mosadd/* scope, same honesty stance. It ships an MCP server — three tools today (voice_truthgate_enroll, voice_truthgate_verify, voice_truthgate_list_subjects, measured in the published package 0.1.1); biometric erasure and the calibrated live-rhythm check are on its roadmap, not on npm yet — so any agent can use it, locally or via the hosted remote MCP endpoint:

npm   npx -y @mosadd/voice-truthgate-mcp

Get on the layer

npx -y @mosadd/mcp@alpha        # 84 tools, any MCP agent
  • Install — drop the server into Claude Code, Cursor, Cline, Windsurf, or Goose (see Quickstart).
  • Hosted, zero-install — point any remote agent at the gateway: https://mcp.mosadd.com/mcp (BYOK key broker).
  • Mint a key + read the docsmosadd.com/keys · /docs · /mcp.
  • Own itstar the repo and bring your own keys (BYOK). Apache-2.0, patent grant included. (Full-stack self-hosting: on the roadmap, not shipped yet.)

Contributing

We're an open community. Start with the Manifesto, CONTRIBUTING.md, GOVERNANCE.md, REALM.md (roles, levels, and the ledger), and the RFC index. Bringing an AI agent as a contributor? See AGENTS.md.

Adding a new m* module requires an RFC — see RFC 0001 for the bar (semantic primitive, ≥2 backend providers, threat-engine hooks, MCP tool surface).

Community: GitHub Discussions for design and help, async. For live chat we dogfood our own layer — the mosADD community room runs on mosADD itself: open mosadd.com, or from any MCP agent: mURL_read_channel({ domain: "mosadd.com" }). No Discord — the layer is the community home.

Web: mosadd.com · Releases: GitHub

License

Apache-2.0. Patent grant included. Compatible with proprietary use.

This project includes or adapts code from:

Full attribution in NOTICE. (Voice rooms run on the hosted LiveKit service — we use it, we don't vendor its code.)