Skip to content

Commit 9ba3610

Browse files
committed
Initial release — open-source AgentLine telephony API
AI-native telephony platform giving AI agents real phone numbers, voice calls, SMS, and MCP server integration. Features: - FastAPI REST API with full CRUD for agents, calls, numbers, SMS - Built-in voice pipeline: Deepgram STT + Cartesia TTS + OpenAI LLM - MCP server for Claude Desktop and Cursor integration - Skill file for one-file AI agent install - Event mailbox for poll-based event consumption - Per-second billing with balance tracking - Docker Compose for local development - Railway deployment support MIT License
0 parents  commit 9ba3610

60 files changed

Lines changed: 6605 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.example

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# AgentLine Environment Variables
2+
# Copy this file to .env and fill in your values
3+
# See: https://github.com/agentlineHQ/AgentLine#configuration
4+
5+
# ── Database (Supabase) ──────────────────────────────────────
6+
SUPABASE_URL=https://your-project.supabase.co
7+
SUPABASE_ANON_KEY=your-supabase-anon-key
8+
SUPABASE_SERVICE_ROLE_KEY=your-supabase-service-role-key
9+
10+
# Get from: Supabase Dashboard → Settings → Database → Connection string → URI
11+
DATABASE_URL=postgresql://postgres:password@host:5432/postgres
12+
13+
# ── Redis (optional) ─────────────────────────────────────────
14+
REDIS_URL=redis://localhost:6379/0
15+
16+
# ── Telephony Provider (SignalWire) ──────────────────────────
17+
# Sign up at https://signalwire.com
18+
SIGNALWIRE_PROJECT_ID=your_project_id
19+
SIGNALWIRE_TOKEN=your_api_token
20+
SIGNALWIRE_SPACE_URL=your-space.signalwire.com
21+
22+
# ── Voice Pipeline ───────────────────────────────────────────
23+
# Deepgram — speech-to-text (https://deepgram.com)
24+
DEEPGRAM_API_KEY=your-deepgram-key
25+
26+
# Cartesia — text-to-speech (https://cartesia.ai)
27+
CARTESIA_API_KEY=your-cartesia-key
28+
29+
# OpenAI — LLM for voice conversations (https://openai.com)
30+
OPENAI_API_KEY=your-openai-key
31+
32+
# ── App ──────────────────────────────────────────────────────
33+
SECRET_KEY=generate-a-random-string-here
34+
BASE_URL=http://localhost:8000
35+
WEBHOOK_SECRET_SALT=generate-a-random-string-here
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
name: Bug Report
3+
about: Report a bug to help us improve AgentLine
4+
title: "[Bug] "
5+
labels: bug
6+
assignees: ''
7+
---
8+
9+
## Describe the Bug
10+
11+
A clear description of what the bug is.
12+
13+
## Steps to Reproduce
14+
15+
1. Make a request to `...`
16+
2. With payload `...`
17+
3. Observe error `...`
18+
19+
## Expected Behavior
20+
21+
What you expected to happen.
22+
23+
## Actual Behavior
24+
25+
What actually happened. Include error messages, status codes, or logs.
26+
27+
## Environment
28+
29+
- **OS:** (e.g., Ubuntu 22.04, macOS 14, Windows 11)
30+
- **Python version:** (e.g., 3.12.4)
31+
- **AgentLine version/commit:** (e.g., `main` branch, commit `abc123`)
32+
- **Deployment:** (Docker, local, Railway, etc.)
33+
34+
## Additional Context
35+
36+
Any other context, screenshots, or log output.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
name: Feature Request
3+
about: Suggest a new feature for AgentLine
4+
title: "[Feature] "
5+
labels: enhancement
6+
assignees: ''
7+
---
8+
9+
## Problem
10+
11+
What problem does this feature solve? What limitation are you running into?
12+
13+
## Proposed Solution
14+
15+
Describe the feature you'd like to see. Be specific about the API surface, behavior, and any configuration options.
16+
17+
## Alternatives Considered
18+
19+
Any alternative approaches or workarounds you've considered.
20+
21+
## Use Case
22+
23+
Describe the real-world scenario where this feature would be useful.
24+
25+
## Additional Context
26+
27+
Any mockups, references to other tools, or related issues.

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
## Description
2+
3+
Brief description of what this PR does.
4+
5+
## Type of Change
6+
7+
- [ ] 🐛 Bug fix
8+
- [ ] ✨ New feature
9+
- [ ] 📖 Documentation update
10+
- [ ] ♻️ Refactoring
11+
- [ ] 🧪 Test update
12+
- [ ] 🔧 Maintenance / chore
13+
14+
## Changes Made
15+
16+
- Change 1
17+
- Change 2
18+
19+
## How to Test
20+
21+
1. Step 1
22+
2. Step 2
23+
3. Verify that...
24+
25+
## Checklist
26+
27+
- [ ] My code follows the project's code style
28+
- [ ] I have tested my changes locally
29+
- [ ] I have updated documentation (if applicable)
30+
- [ ] My changes don't introduce new warnings

.github/workflows/ci.yml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
jobs:
10+
lint:
11+
name: Lint
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v4
15+
- uses: actions/setup-python@v5
16+
with:
17+
python-version: "3.12"
18+
- name: Install ruff
19+
run: pip install ruff
20+
- name: Run linter
21+
run: ruff check .
22+
23+
typecheck:
24+
name: Type Check
25+
runs-on: ubuntu-latest
26+
steps:
27+
- uses: actions/checkout@v4
28+
- uses: actions/setup-python@v5
29+
with:
30+
python-version: "3.12"
31+
- name: Install dependencies
32+
run: |
33+
pip install -r requirements.txt
34+
pip install mypy
35+
- name: Run type checker
36+
run: mypy agentline/ --ignore-missing-imports
37+
38+
docker-build:
39+
name: Docker Build
40+
runs-on: ubuntu-latest
41+
steps:
42+
- uses: actions/checkout@v4
43+
- name: Build Docker image
44+
run: docker build -t agentline .

.gitignore

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Python
2+
__pycache__/
3+
*.py[cod]
4+
*$py.class
5+
*.so
6+
*.egg-info/
7+
dist/
8+
build/
9+
.eggs/
10+
*.egg
11+
.mypy_cache/
12+
.pytest_cache/
13+
.coverage
14+
htmlcov/
15+
.ruff_cache/
16+
17+
# Virtual environments
18+
.env
19+
.venv/
20+
venv/
21+
env/
22+
23+
# IDE
24+
.vscode/
25+
.idea/
26+
*.swp
27+
*.swo
28+
*~
29+
30+
# Docker
31+
pgdata/
32+
33+
# OS
34+
.DS_Store
35+
Thumbs.db
36+
37+
# Logs
38+
*.log

CODE_OF_CONDUCT.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Contributor Covenant Code of Conduct
2+
3+
## Our Pledge
4+
5+
We as members, contributors, and leaders pledge to make participation in our
6+
community a harassment-free experience for everyone, regardless of age, body
7+
size, visible or invisible disability, ethnicity, sex characteristics, gender
8+
identity and expression, level of experience, education, socio-economic status,
9+
nationality, personal appearance, race, caste, color, religion, or sexual
10+
identity and orientation.
11+
12+
## Our Standards
13+
14+
Examples of behavior that contributes to a positive environment:
15+
16+
* Using welcoming and inclusive language
17+
* Being respectful of differing viewpoints and experiences
18+
* Gracefully accepting constructive criticism
19+
* Focusing on what is best for the community
20+
* Showing empathy towards other community members
21+
22+
Examples of unacceptable behavior:
23+
24+
* The use of sexualized language or imagery, and sexual attention or advances of any kind
25+
* Trolling, insulting or derogatory comments, and personal or political attacks
26+
* Public or private harassment
27+
* Publishing others' private information without explicit permission
28+
* Other conduct which could reasonably be considered inappropriate in a professional setting
29+
30+
## Enforcement Responsibilities
31+
32+
Community leaders are responsible for clarifying and enforcing our standards of
33+
acceptable behavior and will take appropriate and fair corrective action in
34+
response to any behavior that they deem inappropriate, threatening, offensive,
35+
or harmful.
36+
37+
## Scope
38+
39+
This Code of Conduct applies within all community spaces, and also applies when
40+
an individual is officially representing the community in public spaces.
41+
42+
## Enforcement
43+
44+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
45+
reported to the community leaders responsible for enforcement at
46+
**support@agentline.cloud**.
47+
48+
All complaints will be reviewed and investigated promptly and fairly.
49+
50+
## Attribution
51+
52+
This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/),
53+
version 2.1, available at
54+
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html).

0 commit comments

Comments
 (0)