{"id":"19c6e231-980b-4665-ba23-410f27d1b046","slug":"tel-agent","kind":"skill","name":"Tel-Agent","summary":"AI phone assistant | open-source","owner":"Dpro-at","repoUrl":"https://github.com/Dpro-at/Tel-Agent","license":"AGPL-3.0","licenseTier":"strong-copyleft","trust":"community","stars":1107,"match":null,"fewStars":false,"format":"skill","createdAt":null,"addedAt":"2026-10-14T06:02:11.659Z","logoUrl":"https://avatars.githubusercontent.com/u/172083099?v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["writing"],"tags":["agent","agentic-ai","ai","phone","phone-number","phonetics","good-first-issue","hacktoberfest"],"runtime":"python","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-14T06:03:41.634Z","sample":false,"url":"https://conduits.dev/tools/tel-agent","language":"Python","transports":["stdio"],"install":{"pypi":"tel-agent"},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"<div align=\"center\">\n\n<img src=\"logo.png\" alt=\"Tel-Agent\" height=\"130\">\n\n# AI phone assistant\n\n**Connect any phone line to any AI model. Self-hosted, bring your own keys.**\n\n<!-- Two rows of marks. The first is the channels that ship today (call and\n     landline are two drawings of the one phone channel); the second is the wave-2\n     channels being added now, tracked in the issues labelled \"channel\". The rows are\n     about recognition, not arithmetic. -->\n<p>\n  <img src=\"docs/brand/channels/call.svg\" alt=\"Call\" title=\"Call\" height=\"26\">\n  &nbsp;&nbsp;\n  <img src=\"docs/brand/channels/landline.svg\" alt=\"Landline\" title=\"Landline\" height=\"26\">\n  &nbsp;&nbsp;\n  <img src=\"docs/brand/channels/web-chat.svg\" alt=\"Web chat\" title=\"Web chat\" height=\"26\">\n  &nbsp;&nbsp;\n  <img src=\"docs/brand/channels/sms.svg\" alt=\"SMS\" title=\"SMS\" height=\"26\">\n  &nbsp;&nbsp;\n  <img src=\"docs/brand/channels/email.svg\" alt=\"Email\" title=\"Email\" height=\"26\">\n  &nbsp;&nbsp;\n  <img src=\"docs/brand/channels/whatsapp.svg\" alt=\"WhatsApp\" title=\"WhatsApp\" height=\"26\">\n  &nbsp;&nbsp;\n  <img src=\"docs/brand/channels/telegram.svg\" alt=\"Telegram\" title=\"Telegram\" height=\"26\">\n  &nbsp;&nbsp;\n  <img src=\"docs/brand/channels/messenger.svg\" alt=\"Messenger\" title=\"Messenger\" height=\"26\">\n  &nbsp;&nbsp;\n  <img src=\"docs/brand/channels/instagram.svg\" alt=\"Instagram\" title=\"Instagram\" height=\"26\">\n  &nbsp;&nbsp;\n  <img src=\"docs/brand/channels/discord.svg\" alt=\"Discord\" title=\"Discord\" height=\"26\">\n  &nbsp;&nbsp;\n  <img src=\"docs/brand/channels/slack.png\" alt=\"Slack\" title=\"Slack\" height=\"26\">\n</p>\n<p>\n  <img src=\"docs/brand/channels/teams.svg\" alt=\"Microsoft Teams\" title=\"Microsoft Teams\" height=\"26\">\n  &nbsp;&nbsp;\n  <img src=\"docs/brand/channels/signal.svg\" alt=\"Signal\" title=\"Signal\" height=\"26\">\n  &nbsp;&nbsp;\n  <img src=\"docs/brand/channels/viber.svg\" alt=\"Viber\" title=\"Viber\" height=\"26\">\n  &nbsp;&nbsp;\n  <img src=\"docs/brand/channels/google-chat.svg\" alt=\"Google Chat\" title=\"Google Chat\" height=\"26\">\n  &nbsp;&nbsp;\n  <img src=\"docs/brand/channels/mattermost.svg\" alt=\"Mattermost\" title=\"Mattermost\" height=\"26\">\n  &nbsp;&nbsp;\n  <img src=\"docs/brand/channels/matrix.svg\" alt=\"Matrix\" title=\"Matrix\" height=\"26\">\n  &nbsp;&nbsp;\n  <img src=\"docs/brand/channels/irc.svg\" alt=\"IRC\" title=\"IRC\" height=\"26\">\n  &nbsp;&nbsp;\n  <img src=\"docs/brand/channels/line.svg\" alt=\"LINE\" title=\"LINE\" height=\"26\">\n  &nbsp;&nbsp;\n  <img src=\"docs/brand/channels/wechat.svg\" alt=\"WeChat\" title=\"WeChat\" height=\"26\">\n  &nbsp;&nbsp;\n  <img src=\"docs/brand/channels/wecom.svg\" alt=\"WeCom\" title=\"WeCom\" height=\"26\">\n  &nbsp;&nbsp;\n  <img src=\"docs/brand/channels/qq.svg\" alt=\"QQ\" title=\"QQ\" height=\"26\">\n  &nbsp;&nbsp;\n  <img src=\"docs/brand/channels/dingtalk.svg\" alt=\"DingTalk\" title=\"DingTalk\" height=\"26\">\n  &nbsp;&nbsp;\n  <img src=\"docs/brand/channels/feishu.svg\" alt=\"Feishu / Lark\" title=\"Feishu / Lark\" height=\"26\">\n  &nbsp;&nbsp;\n  <img src=\"docs/brand/channels/imessage.svg\" alt=\"iMessage\" title=\"iMessage\" height=\"26\">\n</p>\n\n<p>Connect them over MCP — and get full control.</p>\n\n<!-- Thirteen logos, one file per theme. Seven of them are single-colour marks, so the\n     strip is built twice rather than recoloured live. See docs/brand/models/README.md. -->\n<p>\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/brand/models/models-dark.svg\">\n  <source media=\"(prefers-color-scheme: light)\" srcset=\"docs/brand/models/models-light.svg\">\n  <img src=\"docs/brand/models/models-light.svg\" alt=\"Works with OpenAI, Claude, Gemini, Mistral, Ollama, Perplexity, Copilot, Manus, DeepSeek, Grok, Qwen, Groq and OpenRouter\" height=\"28\">\n</picture>\n</p>\n\n<!-- Two files, one seal. The wreath is single-colour artwork on a transparent\n     background, so it needs dark ink on GitHub's light theme and white ink on the\n     dark one; <picture> is what lets a README ship both. -->\n<p>\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/brand/awards/product-of-the-day-dark.svg\">\n  <source media=\"(prefers-color-scheme: light)\" srcset=\"docs/brand/awards/product-of-the-day-light.svg\">\n  <img src=\"docs/brand/awards/product-of-the-day-light.svg\" alt=\"Product of the day - 1st\" height=\"74\">\n</picture>\n</p>\n\n<p>\n  <img src=\"docs/brand/compliance/gdpr-dsgvo.png\" alt=\"DSGVO & GDPR compliant\" height=\"34\">\n  <img src=\"docs/brand/compliance/eu-ai-act.png\" alt=\"EU AI Act compliant\" height=\"34\">\n</p>\n\n[![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](LICENSE)\n[![Status: alpha](https://img.shields.io/badge/status-alpha-blue.svg)](#project-status)\n[![Release](https://img.shields.io/github/v/release/Dpro-at/Tel-Agent?label=release)](https://github.com/Dpro-at/Tel-Agent/releases/latest)\n\n[tel-agent.com](https://tel-agent.com) · maintained by [Dpro GmbH](https://dpro.at), Vienna\n\n</div>\n\n---\n\n## What it is\n\nTel-Agent is an open-source gateway that sits between a phone line and an AI agent.\n\nA call arrives over SIP. Tel-Agent checks the caller against your routing rules and\neither passes it through to a human, blocks it, or hands it to an AI agent. The agent\nspeaks with the caller in real time, can invoke tools — transfer the call, take a\nmessage, check a calendar, call any HTTP endpoint — and every call is recorded,\ntranscribed, and searchable.\n\nIt runs on your own hardware, on your own LAN, with your own API keys.\n\nThe same agent handles phone calls and answers\non **web chat, SMS, email, WhatsApp, Telegram, Messenger, Instagram, Discord and\nSlack** — connected with your own credentials from each platform, never a shared\napplication of ours. The official channel scope now covers **24 channels including the phone**, with additional channels built on the extension contract. A channel is a route a\ncustomer uses to reach you; a system you run your own business on is an integration,\nand those are reached through webhooks and the HTTP tool.\n\n## What it is not\n\n- **Not a PBX replacement.** It connects to your existing PBX (3CX, Asterisk, FreePBX)\n  as an extension.\n- **Not a workflow automation platform.** Webhooks and a generic HTTP tool reach n8n\n  and Home Assistant, which do that job better. A *channel* is where the conversation\n  happens; an *integration* is a system the agent acts on. We own the first and reach\n  the second through the HTTP tool.\n- **Not a CRM.**\n- **Not analog-capable.** Bridge an analog line with an ATA; Tel-Agent only speaks SIP.\n\n## Why it exists\n\nWell-funded closed products already do \"AI receptionist for business\". What does not\nexist is a good **open, self-hosted** one — where you own the recordings, choose the\nmodels, and decide which callers ever reach the AI at all.\n\n---\n\n## Project status\n\n**Alpha. Native installers and container images are available today.** Choose a platform on the [download page](https://tel-agent.com/download), or get the packages from the\n[releases page](https://github.com/Dpro-at/Tel-Agent/releases/latest): a Windows\ninstaller, macOS packages for Apple Silicon and Intel, DEB and RPM packages for Linux,\nand a `docker-compose.release.yml` that pulls the published images. The installers are\nunsigned while code signing is not yet configured, so the operating system will ask\nonce before it runs.\n\n**What works now.** A conversation is answered end to end: the reply streams token by\ntoken, can be interrupted mid-sentence, is stored, and raises a notification so a person\nknows someone wrote in. The phone implementation includes streaming speech recognition and synthesis, interruption handling, caller-ID routing, and stored call transcripts through the SIP/LiveKit transport. Twilio integration handles SMS with customer-owned credentials. The core messaging channels are wired — web chat, WhatsApp, Telegram,\nMessenger, Instagram, Discord, Slack, email and SMS — and the dashboard serves them\nfrom a real API: sign-in and the account flows, home, the conversation archive, the\nnotification tray, contacts, assistants, knowledge, the catalogue, apps, numbers,\nrouting rules, backups, system health, settings and workspaces. The product speaks\nfive languages: English, German, Arabic, Spanish and Dutch.\n\n**What is being added now.** A second wave of channels, one issue each under the\n[`channel` label](https://github.com/Dpro-at/Tel-Agent/issues?q=is%3Aissue%20state%3Aopen%20label%3Achannel):\nMicrosoft Teams, Signal, Viber, Google Chat, Mattermost, Matrix, IRC, LINE, WeChat,\nWeCom, QQ, DingTalk, Feishu / Lark and iMessage. They share one declarative setup\ncontract (#220), so each new channel is a definition plus a transport rather than a\nfork of the last one. More translations are open as\n[good first issues](https://github.com/Dpro-at/Tel-Agent/issues?q=is%3Aissue%20state%3Aopen%20label%3Ai18n).\n\n**Deployment.** The Windows installer starts the local service and opens the dashboard in your browser. Native macOS and Linux packages and Docker images provide the other installation paths. Phone and messaging connections use your own provider credentials; configure the channels you want to use in your installation.\n\nThe full plan, and what each milestone means, is in [`docs/ROADMAP.md`](docs/ROADMAP.md).\nWatch or star the repository to hear when a release lands.\n\n---\n\n## Architecture\n\n| Layer | Choice |\n|---|---|\n| Voice agent | Python + [LiveKit Agents](https://github.com/livekit/agents) |\n| API | Python + FastAPI |\n| Frontend | Next.js + React |\n| Database | SQLite by default; PostgreSQL is also supported |\n| Cache / queue | Redis |\n| Reverse proxy | Caddy — automatic HTTPS |\n| Packaging | Windows installer, macOS packages, Linux DEB/RPM and Docker Compose |\n\n**Providers for v1:** Deepgram (STT) · one cloud LLM · ElevenLabs (TTS).\nLocal models (Ollama, Whisper, Piper) follow in v1.1 — they need a GPU to hold a\nnatural conversation, so they are not the default.\n\n**Latency target:** under 800 ms from the end of caller speech to the first audio out.\nEverything streams; the first sentence starts speaking while the rest is still being\ngenerated.\n\n---\n\n## Quick start\n\n```bash\ngit clone https://github.com/Dpro-at/Tel-Agent.git\ncd Tel-Agent\ncp .env.example .env\n# set ENCRYPTION_KEY in .env - generate one with: openssl rand -hex 32\ndocker compose up -d --build\n```\n\nThen open **http://localhost:38471**. The first visit creates the administrator —\nthere are no default credentials. The API and its documentation are on\nhttp://localhost:38472/docs, and conversations live on the `tel-agent-data`\nvolume (SQLite by default; a `postgres` profile is in `docker-compose.yml`).\n\nEvery tagged release also publishes the images to GitHub Container Registry, so\nthe build step can be skipped entirely:\n`docker compose -f docker-compose.release.yml up -d` — same layout, same\nvolumes, interchangeable with the from-source file on one machine. If you would\nrather not run Docker at all, the [releases page](https://github.com/Dpro-at/Tel-Agent/releases/latest)\nhas native installers for Windows, macOS and Linux.\n\nBoth ports are published on **loopback only**. Reaching the installation from\nother machines is a decision made in `.env` — the `TEL_AGENT_*` block there\nlists the three values to change and why the dashboard image is rebuilt for it.\nOn a server, put a reverse proxy terminating TLS in front instead.\n\n**Running it without Docker** stays supported and documented — contributors need\nto run the code without rebuilding an image on every edit. See\n[`CONTRIBUTING.md`](CONTRIBUTING.md) for the manual run, [`docs/SPEC.md`](docs/SPEC.md)\nfor the full design and [`CLAUDE.md`](CLAUDE.md) for the development rules.\n\n### Requirements for the phone channel\n\n- API keys for an STT, an LLM, and a TTS provider (or a GPU for local models)\n- A machine on the same LAN as the PBX\n- Network access to the PBX on 5060/UDP and an open RTP port range\n- A SIP endpoint. Most lines already are one:\n\n| Your line | What you need | Extra hardware |\n|---|---|---|\n| A PBX — 3CX, Asterisk, FreePBX | An extension on it | None |\n| A landline from an ISP | These are IP-based now. Either the provider gives you SIP credentials, or your router acts as a SIP registrar and you register against it — common with Fritz!Box in Austria and Germany | None |\n| A genuinely analog line — old copper, a fax line | An ATA to bridge it, e.g. a Grandstream HT801 | ~€30 |\n\nTel-Agent only ever speaks SIP. That is deliberate: supporting telephony hardware\ndirectly is a project of its own, and an ATA solves it for about the price of a\ncable.\n\n---\n\n## Security notes\n\n- **The port is not exposed by default.** The server listens on `127.0.0.1`, and\n  `python -m api` warns if you change that. The supported ways to reach an installation\n  from elsewhere — a private network, a VPN, or a reverse proxy terminating TLS — all\n  talk to a server on loopback, so none of them requires widening it.\n- **A password is required on first run.** There are no default credentials.\n- **API keys are encrypted at rest** and are never returned in full to the client.\n- **Recording announcements are on by default.** Austria requires both parties to be\n  aware that a call is recorded, and the requirement still applies once a human takes\n  over from the agent.\n\n---\n\n## Contributing\n\n**New here? [`docs/ONBOARDING.md`](docs/ONBOARDING.md) is the hour-long path from a fork\nto a merged pull request** — a translation, one file, no setup and no API keys. Thirty\nlanguages are sitting at 0% and any language you actually speak is welcome.\n\nContributions are welcome. Check the open issues and the channel extension contract before starting a feature, and keep each pull request focused on one concern.\n\n**All contributors must sign the [CLA](CLA.md)** before their first pull request is\nmerged. Read [`CONTRIBUTING.md`](CONTRIBUTING.md) before opening one. Everything in the\nrepository — code, comments, commit messages, documentation — is written in English.\n\n<!-- Two marks, inked per theme. These are the agents the repo is configured for, not\n     models Tel-Agent connects to — that row is at the top. docs/brand/agents/README.md -->\n<p>\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/brand/agents/agents-dark.svg\">\n  <source media=\"(prefers-color-scheme: light)\" srcset=\"docs/brand/agents/agents-light.svg\">\n  <img src=\"docs/brand/agents/agents-light.svg\" alt=\"Built with Antigravity and Codex\" height=\"24\">\n</picture>\n</p>\n\n**Working with an AI coding agent?** Point it at [`AGENTS.md`](AGENTS.md) — Codex,\nAntigravity and the rest find it on their own. [`CLAUDE.md`](CLAUDE.md) is the full\nworking contract; every other entry file in the repository is a pointer to those two, so\nthe rules cannot drift apart.\n\nFound a security problem? **Do not open a public issue** — see\n[`SECURITY.md`](SECURITY.md).\n\n---\n\n## Star History\n\n<a href=\"https://www.star-history.com/?repos=dpro-at%2Ftel-agent&type=date&legend=top-left\">\n <picture>\n   <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/chart?repos=dpro-at/tel-agent&type=date&theme=dark&legend=top-left\" />\n   <source media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/chart?repos=dpro-at/tel-agent&type=date&legend=top-left\" />\n   <img alt=\"Star History Chart\" src=\"https://api.star-history.com/chart?repos=dpro-at/tel-agent&type=date&legend=top-left\" />\n </picture>\n</a>\n\n---\n\n## License\n\n[AGPL-3.0](LICENSE). Copyright © Dpro GmbH.\n\nIf you run a modified version of Tel-Agent as a network service, you must publish your\nmodifications. The free version is never crippled; it is the product.\n\nFor a commercial license permitting closed-source integration, contact\nDpro GmbH at [info@dpro.at](mailto:info@dpro.at).\n\nDpro GmbH · Wipplingerstraße 20/18, 1010 Wien, Austria · FN 631492s, Handelsgericht Wien\n"}