{"slug": "show-hn-openlivery-open-source-multi-tenant-whatsapp-agents-for-agencies", "title": "Show HN: OpenLivery – open-source multi-tenant WhatsApp agents for agencies", "summary": "OpenLivery, an open-source multi-tenant platform for agencies to build and manage AI agents for clients, was released on GitHub. The platform supports WhatsApp and web chat channels, offers bring-your-own OpenAI and Anthropic keys, and includes features such as multimodal capabilities, knowledge base with semantic retrieval, custom HTTP tools, and MCP server integration. It is designed for self-hosting with one command and provides documentation in English and Spanish.", "body_md": "The open-source, white-label platform for agencies to build, run and manage AI agents for their clients.\n\n[**Documentation**](/sarrazola/openlivery/blob/main/docs/en) ·\n  [**Documentación**](/sarrazola/openlivery/blob/main/docs/es) ·\n  [Quick start](/sarrazola/openlivery/blob/main/docs/en/getting-started.md) ·\n  [Self-hosting](/sarrazola/openlivery/blob/main/docs/en/self-hosting.md) ·\n  [Discussions](https://github.com/sarrazola/openlivery/discussions)\n\nOpenLivery is a multi-tenant workspace where an agency creates AI agents for its clients, gives each client a branded portal, and talks to end users over WhatsApp or an embeddable web chat widget. Bring your own OpenAI / Anthropic keys and self-host the whole thing with one command.\n\nFull documentation lives in **[docs/](/sarrazola/openlivery/blob/main/docs)**. Every guide is written twice:\n**[English](/sarrazola/openlivery/blob/main/docs/en)** and **[Spanish](/sarrazola/openlivery/blob/main/docs/es)**, same filename under each.\n\n| Guide | What it covers | \n|---|---|\n| [Getting started](/sarrazola/openlivery/blob/main/docs/en/getting-started.md) | Run the stack with Docker and create your first agency | \n| [Configuration](/sarrazola/openlivery/blob/main/docs/en/configuration.md) | Environment variables, secrets, ports and the gateway | \n| [Architecture](/sarrazola/openlivery/blob/main/docs/en/architecture.md) | The services, the data model and tenant isolation | \n| [Self-hosting](/sarrazola/openlivery/blob/main/docs/en/self-hosting.md) | Deploy to a server, back up, upgrade and troubleshoot | \n| [Contributing](/sarrazola/openlivery/blob/main/docs/en/contributing.md) | Run the project locally, tests and conventions | \n| [Push notifications](/sarrazola/openlivery/blob/main/docs/en/push-notifications.md) | Optional, provider-agnostic notifications for the mobile app | \n| [WhatsApp Cloud API](/sarrazola/openlivery/blob/main/docs/en/whatsapp-cloud-api.md) | Connect a number with the official Meta API, end to end | \n\n**Agents** — [docs](/sarrazola/openlivery/blob/main/docs/en/agents.md)\n\n- ✅ Instructions, personality, per-client & per-agent context, timezone, and temperature / max-tokens / memory controls\n- ✅ Multimodal capabilities: **image recognition** (vision) and**audio transcription** for incoming media\n- ✅ Creation wizard with a live token counter and industry starter templates\n\n**Knowledge base** — [docs](/sarrazola/openlivery/blob/main/docs/en/knowledge-base.md)\n\n- ✅ Manual context, structured **Q&A pairs** and PDF upload, with embedding-based semantic retrieval (keyword fallback)\n- ✅ Portable JSON embeddings — no database extension required\n\n**AI providers** — [docs](/sarrazola/openlivery/blob/main/docs/en/ai-providers.md)\n\n- ✅ Bring-your-own **OpenAI** (Responses API) and**Anthropic** (Messages API) keys — agency-level, encrypted, and validated when saved\n- ✅ Any OpenAI-compatible endpoint via per-connection base URL + model\n\n**Custom tools** — [docs](/sarrazola/openlivery/blob/main/docs/en/custom-tools.md)\n\n- ✅ Per-agent **HTTP tools** : any REST endpoint with path/query/body parameters, encrypted auth headers and an SSRF guard\n- ✅ **MCP servers** (Streamable HTTP or SSE) with test-before-save connection checks and cached tool discovery\n- ✅ Tool usage recorded per reply and surfaced in the playground, including failure details\n\n**Channels** — [WhatsApp Cloud API](/sarrazola/openlivery/blob/main/docs/en/whatsapp-cloud-api.md) · [WhatsApp QR](/sarrazola/openlivery/blob/main/docs/en/whatsapp.md) · [Web widget](/sarrazola/openlivery/blob/main/docs/en/web-widget.md)\n\n- ✅ **WhatsApp Cloud API** (official Meta API) — bring your own Meta app credentials, signed webhooks, per-client number\n- ✅ **WhatsApp QR** through whatsmeow — QR link, per-client number, persistent session that reconnects on its own\n- ✅ Embeddable **web chat widget** for any website\n- 🚧 Instagram DM, Facebook Messenger *(planned)*\n\n**Operations** — [Inbox](/sarrazola/openlivery/blob/main/docs/en/inbox.md) · [Client portal](/sarrazola/openlivery/blob/main/docs/en/client-portal.md) · [Dashboard](/sarrazola/openlivery/blob/main/docs/en/dashboard.md)\n\n- ✅ Unified **Inbox** with server-side search, filter tabs, unread tracking, pagination and human takeover\n- ✅ Per-client **portal** with its own login and Inbox, optionally served under the client's**own custom domain** (DNS-verified, automatic HTTPS)\n- ✅ **Dashboard** with activity, top agents, token usage by model and a date-range filter\n- ✅ Agency **white-label** (name, identifier, color, logo)\n\nThree services plus PostgreSQL, orchestrated by Docker Compose:\n\n| App | Stack | Role | \n|---|---|---|\n| `apps/api` | FastAPI · SQLAlchemy · Alembic | REST API, data model, AI/knowledge/provider services | \n| `apps/web` | Next.js · React · TypeScript · Tailwind | Agency dashboard, client portal, playground, widget | \n| `apps/whatsapp` | Go · whatsmeow | WhatsApp Web bridge (stateful sessions) | \n\nAll data lives in PostgreSQL; provider keys and WhatsApp sessions are encrypted\nat rest. Every query is scoped by `agency_id` for tenant isolation, and public\nendpoints (sign-in and the web widget) are rate-limited per client IP. A Caddy\ngateway serves the app and API from a single origin (`/api/*` → backend).\n\nRead more in the [architecture guide](/sarrazola/openlivery/blob/main/docs/en/architecture.md).\n\nRequires Docker (Desktop or Engine + Compose plugin).\n\n```\ngit clone https://github.com/sarrazola/openlivery.git\ncd openlivery\n./scripts/generate-docker-env.sh   # random secrets in .env.docker (gitignored)\nmake up                            # build, start, migrate\n```\n\nThen open **[http://localhost:3000](http://localhost:3000)** (API docs at **[http://localhost:8000/docs](http://localhost:8000/docs)**).\nPorts clashing? `API_PORT=8001 WEB_PORT=3001 DB_PORT=5433 make up`.\nPrefer not to build? `make pull` runs the prebuilt images published to GHCR.\n\nThe full walkthrough — first agency, provider keys, agents, knowledge and\nchannels — is in the **[getting started guide](/sarrazola/openlivery/blob/main/docs/en/getting-started.md)**.\nDeploying to a public server (reverse proxy, TLS, backups) is covered in\n**[self-hosting](/sarrazola/openlivery/blob/main/docs/en/self-hosting.md)**.\n\n- **[GitHub Discussions](https://github.com/sarrazola/openlivery/discussions)** — questions, ideas and help building with OpenLivery.\n- **[GitHub Issues](https://github.com/sarrazola/openlivery/issues)** — bugs and feature requests.\n\n```\napps/\n  api/         FastAPI backend (app/, migrations/, tests/)\n  web/         Next.js frontend (app/, components/, lib/, types/)\n  whatsapp/    whatsmeow WhatsApp bridge (Go)\n  mobile/      Optional Expo app for the businesses you serve (unbranded)\ndocs/          Self-hosting and operations guide\nscripts/       Helper scripts (generate-docker-env.sh)\nMakefile       Common commands (make help)\ndocker-compose.yml\n```\n\n`apps/mobile` is an optional Expo app: the inbox a business you serve carries in\ntheir pocket, with conversations, takeover, replies, photos and voice notes. It\nis not installed with the platform and the server does not need it — nobody\nrunning OpenLivery has to build or deploy it to have everything working.\n\nIt deliberately carries **no brand**: no name, no logo, no bundle identifier, no\npreset pointing at any hosted service. What ships is a working app and the\nmachinery to make it yours — put your identity in a brand file, build, and\npublish it under your own name from your own developer account. The whole\nchecklist, including why you publish it rather than us, is in\n[apps/mobile/WHITELABEL.md](/sarrazola/openlivery/blob/main/apps/mobile/WHITELABEL.md).\n\nRun the project locally, the test suites and the conventions are documented in\nthe **[contributing guide](/sarrazola/openlivery/blob/main/docs/en/contributing.md)**. In short:\nall code, identifiers, comments and docs are in English; end-user UI is localized\n(English default, Spanish) through the typed i18n system in `apps/web/lib/i18n`.\n\n[MIT](/sarrazola/openlivery/blob/main/LICENSE).", "url": "https://wpnews.pro/news/show-hn-openlivery-open-source-multi-tenant-whatsapp-agents-for-agencies", "canonical_source": "https://github.com/sarrazola/openlivery", "published_at": "2026-09-07 18:28:30+00:00", "updated_at": "2026-09-07 19:01:42.894368+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "ai-startups", "developer-tools"], "entities": ["OpenLivery", "OpenAI", "Anthropic", "Meta", "whatsmeow", "GitHub"], "alternates": {"html": "https://wpnews.pro/news/show-hn-openlivery-open-source-multi-tenant-whatsapp-agents-for-agencies", "markdown": "https://wpnews.pro/news/show-hn-openlivery-open-source-multi-tenant-whatsapp-agents-for-agencies.md", "text": "https://wpnews.pro/news/show-hn-openlivery-open-source-multi-tenant-whatsapp-agents-for-agencies.txt", "jsonld": "https://wpnews.pro/news/show-hn-openlivery-open-source-multi-tenant-whatsapp-agents-for-agencies.jsonld"}}