Real-time inbox, in-browser WebRTC calls, template management, groups, and analytics on the WhatsApp Business Cloud API. Multi-tenant, single Go binary, MIT-licensed.
Nudgeway is the platform, not a wrapper. Every feature is wired end-to-end — canonical domain, real-time UI, audit trail, observability.
WebSocket-driven three-pane inbox. Optimistic sends, WhatsApp-style ticks (queued → sent → delivered → read), typing + presence.
Accept WhatsApp Business calls right in the browser. Inbound popup, one-tap accept, recording + transcript persisted to HBase.
Create, sync from Meta, submit for review. Renders in the thread the way WhatsApp renders it — header, body, footer, buttons.
List, sync, and create WhatsApp groups when your number is OBA-eligible. Group threads land in the same inbox.
Every mutation logged. Every Meta Graph call captured with request, response, latency, and status — searchable at /settings/provider-calls.
Local KPI cards + sparklines for messages, delivery rate, response time, calls. Second tab proxies Meta's WABA analytics — messaging, calls, pricing — with an integration selector and quick-pick date ranges.
Business account status, profile CRUD, call settings, business username with QR — one drawer per integration.
Every query is org-scoped. Session cookies, argon2id passwords, per-permission gating, envelope-encrypted credentials.
Long-lived bearer tokens for MCP, CI, and scripts. nk_<prefix>_<secret>, argon2id-hashed, plaintext returned once. Bearer requests skip CSRF — cleaner than session cookies.
Every bearer request writes an execution row — method, path, status, latency, IP, redacted body — into a per-token log. KPI cards, sparkline, and top paths per token in the settings drawer.
Operator pastes a public URL (or hits Detect ngrok); Nudgeway posts the WABA-scoped webhook_configuration override to Meta. No copy-pasting the phone-number ID or verify token.
Every REST endpoint (73 and counting — inbox, integrations, templates, calls, groups, analytics, Meta analytics, tokens, usage) is auto-exposed as a Model Context Protocol tool. Point Claude Desktop / Claude Code / any MCP client at Nudgeway and talk to your inbox in natural language.
Every REST endpoint is auto-exposed as an MCP tool. Every domain ships with a SKILL.md that teaches an agent how and when to use it. Nudgeway isn't AI-flavoured — it's agent-native.
Reads openapi.yaml at boot; emits one tool per operationId. Auth via bearer API token (or session cookie for local dev). Zero manual tool registration — new endpoints appear the moment the OpenAPI spec ships them.
export NUDGEWAY_API_TOKEN=nk_... ./bin/nudgeway-mcp --list-tools # 73 tools and counting
Each skill teaches an LLM which tools to invoke, common patterns, gotchas, and the tenancy / CSRF / RBAC rules that apply. Auto-discovered by Claude Code; copy-paste-friendly for any model.
skills/ ├── README.md ├── nudgeway-inbox/ SKILL.md ├── nudgeway-integrations/ SKILL.md ├── nudgeway-templates/ SKILL.md ├── nudgeway-calls/ SKILL.md ├── nudgeway-analytics/ SKILL.md ├── nudgeway-api-tokens/ SKILL.md └── nudgeway-mcp/ SKILL.md
List conversations, load threads, send text / media / template, mark read. Multi-tenant, org-scoped.
Create + test + delete provider integrations. Push webhook overrides to Meta. Envelope-encrypted credentials.
CRUD + Meta sync + submit-for-review. Send templates with positional or named parameters.
Inbound popup, in-browser WebRTC accept, call permissions, recording + transcript persistence.
KPI cards + sparklines: messages, delivery rate, response time, calls total / answered, avg duration.
Mint, list, revoke bearer tokens for MCP / CI / scripts. Argon2id-hashed, plaintext-once, bearer skips CSRF.
Build, run, and wire the MCP server into Claude Desktop / Claude Code / Cursor / any MCP client.
These aren't shipped yet. They're on the near-term roadmap and land as the code lands. Watch the repo, or read the roadmap page for detail.
Audience builder over contacts + template picker + scheduling + per-org rate-limit + pause / resume / stats.
CTWA attribution — capture the ad payload on the first inbound, thread it through session + conversation, expose it on the contact profile.
Publish interactive forms (checkout, appointment booking, lead capture) built in the Flow Builder; render responses inline in the inbox thread.
First-touch agent with human-handoff state machine. Anthropic and OpenAI adapters land first
Dialogflow and Azure Bot as drop-in adapters — bring your existing bot, keep the Nudgeway inbox as the operator surface.
Freshdesk + Zendesk to follow. Auto-open tickets from inbound messages; two-way sync of status + notes.
Trigger → condition → action rules (auto-reply, tag, assign, open ticket, invoke AI). Runs against the canonical event bus.
Telegram, Instagram DM, and Messenger as channel adapters — same canonical domain, same inbox.
Community-authored provider adapters + automation actions, discoverable from Settings. Ships after the automation engine + plugin loader.
A modular Go monolith serves REST + WebSocket + workers + scheduler + embedded frontend. No microservices tax. Runs on your laptop against native MySQL / Redis / Kafka / HBase — no Docker required.
Two ways to bring up the four backing services (MySQL 8+ · Redis 7+ · Kafka 3+ · HBase 2+). Pick either — the Nudgeway binary + Vite frontend always run natively.
Docker Desktop / Podman / Apple Containers (macOS 26+). All four services in one shot.
git clone https://github.com/v-senthil/nudgeway.git cd nudgeway docker compose up -d # MySQL + Redis + Kafka + HBase cp config/example.yaml config/local.yaml openssl rand -hex 32 # paste into auth.credential_kek_hex
Homebrew / apt / dnf / WSL2. Full walkthrough in docs/install-services.md.
# macOS example brew install mysql redis kafka hbase brew services start mysql redis kafka hbase git clone https://github.com/v-senthil/nudgeway.git cd nudgeway cp config/example.yaml config/local.yaml openssl rand -hex 32
migrate -path migrations \ -database "$MYSQL_DSN" up
go build -o bin/nudgeway-cli ./cmd/cli ./bin/nudgeway-cli tenant create \ --slug acme --name "Acme Co" ./bin/nudgeway-cli user create \ --org-slug acme \ --email you@acme.com \ --password password123 --admin
make dev # backend → :8080 # frontend → :5173 # open http://localhost:5173
No. Nudgeway is a first-principles platform — canonical domain (org / contact / session / conversation / message / call), real-time UI, MCP-native. Ships with a WhatsApp Business Cloud API adapter.
docs/install-services.md covers native install on macOS (Homebrew), Debian/Ubuntu (apt + Apache tarballs), Fedora/RHEL (dnf), and Windows (WSL2). One-liners per OS.
No — native is the default dev path. But we ship a docker-compose.yml if you want one-command bring-up. Works with Docker Desktop, Podman, and Apple Containers (macOS 26+). The Go server + Vite still run natively — the compose file only replaces the four backing services.
MIT — see LICENSE on GitHub. Use it, fork it, ship it.