hail
Health Warn
- License Γ’β¬β License: AGPL-3.0
- Description Γ’β¬β Repository has a description
- Active repo Γ’β¬β Last push 0 days ago
- Low visibility Γ’β¬β Only 5 GitHub stars
Code Warn
- process.env Γ’β¬β Environment variable access in .github/workflows/costs-stale.yml
- fs module Γ’β¬β File system access in .github/workflows/costs-stale.yml
Permissions Pass
- Permissions Γ’β¬β No dangerous permissions requested
No AI report is available for this listing yet.
π©΅ The universal communication platform for AI agents. Give your agent inbound and outbound phone calls, sms, emails, and more.
Hail
Universal communication platform for AI agents.
Phone calls, SMS, email β outbound first, inbound next. Self-hostable. Open source (AGPLv3).
Your agent wants to place a call: "Call +1β¦ and ask if they want to reschedule." Hail does the carrier glue, runs the voice pipeline, and lets the agent plug in its own brain (or fall back to OpenAI β Gemini β Claude).
Quickstart
git clone https://github.com/hail-hq/hail
cd hail
cp .env.example .env
# fill in Twilio, LiveKit Cloud, Deepgram, Cartesia, and one of OpenAI / Gemini / Anthropic
docker compose up
Authenticate:
- Hail Cloud (managed at hail.so):
hail loginruns the device-flow and saves an API key to~/.hail/credentials.json. - Self-host: seed an API key directly into your local stack β see docs/operations.md "First-run DB seed". Then export
HAIL_API_KEY(or pass--api-key).
Use it β CLI (for humans scripting Hail):
hail login # authenticate (device flow)
hail auth logout # remove local credentials
hail auth token # print bare API key for scripting
hail call +14155550100 --prompt "be brief"
hail call list
hail call tail <id> # follow events for one call
hail email send --to [email protected] --subject hi --body "hello"
hail email list
hail email get <id>
hail email tail <id> # follow events for one email
hail email raw <id> # RFC 5322 source
hail email attachment <id> <att-id> --output file.pdf
hail email domain register --kind hail_mail
hail email domain register --kind custom --domain acme.com # send + receive on your own domain
hail email domain list
hail tail # cross-channel event stream
hail tail call:<id> # narrow by resource type
hail mcp endpoint # Streamable HTTP URL for the MCP server
hail completion zsh # source <(hail completion zsh)
hail version
Or over HTTP / MCP:
# HTTP
curl -X POST http://localhost:8080/calls \
-H "Authorization: Bearer $HAIL_API_KEY" \
-d '{"to":"+15551234567","system_prompt":"..."}'
curl -X POST http://localhost:8080/emails \
-H "Authorization: Bearer $HAIL_API_KEY" \
-d '{"to":["[email protected]"],"subject":"hi","body_text":"hello"}'
# MCP (for AI agents β Claude.ai, ChatGPT, Claude Code, Cursor, β¦)
# Add a remote MCP connector in your client pointing at:
# http://<your-host>:8081 (self-hosted)
# https://mcp.hail.so (Hail Cloud, later)
hail tail in action:

Full setup: docs/setup/twilio.md, docs/setup/livekit-cloud.md, docs/setup/aws-ses.md, docs/setup/mcp.md.
Tenets
- Clear comms. Explicit OpenAPI contracts. No magic.
- Simple code. Boring is best. No abstractions without two uses.
- Brief docs. One screen per page. Setup β€ 10 minutes from a fresh clone.
- Self-hostable.
docker compose upruns everything except LiveKit Cloud. - Pluggable brain. BYO endpoint compatible with OpenAI's completions API, or use Hail's bundled fallback (OpenAI β Gemini β Anthropic). Voice pipeline + transport are always Hail's.
- Agent-first docs. AI agents are first-class readers. Lead with concrete, runnable examples; link to canonical sources (OpenAPI spec, MCP tool schemas, code paths) rather than paraphrase them. Every page should let a reader β human or agent β take the next action.
Milestones
Checked = shipped. Per-artifact changelogs (GitHub Releases for the CLI, PyPI release notes for the SDK) own the "shipped in which version" question.
Phone calls
- Outbound
- Twilio
- Telnyx
- Inbound
- Twilio
SMS
- Outbound
- Twilio
- Inbound
- Twilio
- Outbound
- AWS SES
- Custom sender domains (own DNS, auto DKIM + MAIL FROM)
- Inbound
- AWS SES
- Custom domains (receive on verified domains)
Voice pipeline
- STT
- Deepgram
- Whisper
- AssemblyAI
- TTS
- Cartesia
- ElevenLabs
- Deepgram Aura
- VAD
- Silero
- Turn detection
- LiveKit turn-detector
- LLM β system-prompt mode
- Fallback: OpenAI β Gemini β Anthropic, fast models
- LLM β BYO-endpoint mode
- OpenAI chat-completions-compatible
- Recording
- S3 upload
- Diarization
Distribution
- API
- OpenAPI spec
- CLI
-
hailbinary via GitHub Releases
-
- MCP server
- Remote Streamable HTTP endpoint bundled with every Hail deploy
- PyPI stdio package β intentionally not shipped; see docs/setup/mcp.md
- Python SDK
-
hail-sdkon PyPI, imports ashail
-
Infrastructure
- Docker Compose scaffold
- Self-hosted LiveKit SFU
- docker compose integration
Architecture
AI agent βββΊ Hail API ββdispatchβββΊ Voicebot βββΊ LiveKit Cloud ββSIPβββΊ Twilio βββΊ π
Full diagram: docs/architecture.md.
Contributing
See docs/contributing.md. TL;DR: fork, branch, conventional-commit, PR. Provider adapters go in core/hailhq/core/providers/. Update .env.example for any new env var.
License
Source code: AGPL-3.0-or-later β if you run a modified Hail as a service, you must release your source.
Pricing dataset (costs/): CC-BY-4.0 β reuse the pricing JSON freely with attribution.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found