Releases: CHA0S-CORP/general-disarray
v0.1.0 - Its Alive!
🎉 v0.1.0
📞⚡ General Dissarray
🤖 SIP Enabled AI Agent
🤖 ROBO CODED — This release was made with AI and may not be 100% sane. But the code does work! 🎉
Release Date: November 30, 2025
License: AGPL-3.0
Platform: NVIDIA DGX Spark (Grace Blackwell GB10)
🚀 Overview
The first public release of SIP AI Assistant — a voice-powered AI assistant that answers phone calls, understands natural language, and performs actions through an extensible plugin system.
Built for the NVIDIA DGX Spark with 128GB unified memory, this system runs entirely on local infrastructure with no cloud dependencies for voice processing or LLM inference.
✨ Highlights
┌─────────────────────────────────────────────────────────────┐
│ 📞 SIP AI Assistant v0.1.0 │
├─────────────────────────────────────────────────────────────┤
│ ✅ Full SIP/RTP voice call handling │
│ ✅ Real-time STT via Whisper (Speaches) │
│ ✅ Natural TTS via Kokoro (Speaches) │
│ ✅ LLM integration (vLLM, OpenAI, Ollama) │
│ ✅ 10 built-in tools │
│ ✅ Plugin system for custom tools │
│ ✅ REST API for outbound calls │
│ ✅ Scheduled & recurring calls │
│ ✅ Customizable phrases │
│ ✅ Full observability stack │
└─────────────────────────────────────────────────────────────┘
🔧 Built-in Tools
| Tool | Description |
|---|---|
🌤️ WEATHER |
Current weather from Tempest station |
⏲️ SET_TIMER |
Countdown timers with voice alerts |
📞 CALLBACK |
Schedule callbacks to any number |
📴 HANGUP |
End calls gracefully |
📋 STATUS |
Check pending timers/callbacks |
❌ CANCEL |
Cancel scheduled tasks |
🕐 DATETIME |
Current date and time |
🧮 CALC |
Math calculations |
😄 JOKE |
Random jokes (general, tech, dad) |
🦜 SIMON_SAYS |
Echo back verbatim |
🌐 REST API
| Endpoint | Method | Description |
|---|---|---|
/health |
GET | Health check |
/call |
POST | Initiate outbound call |
/call/{id} |
GET | Get call status |
/call/{id} |
DELETE | Hang up call |
/tools |
GET | List available tools |
/tools/{name}/call |
POST | Execute tool via call |
/schedule |
POST | Schedule a call |
/schedule |
GET | List scheduled calls |
/schedule/{id} |
DELETE | Cancel scheduled call |
Scheduled Calls
# One-time call
curl -X POST http://localhost:8080/schedule \
-d '{"extension": "1001", "tool": "WEATHER", "at_time": "07:00"}'
# Recurring daily
curl -X POST http://localhost:8080/schedule \
-d '{"extension": "1001", "tool": "WEATHER", "at_time": "07:00", "recurring": "daily"}'
# Weekdays only
curl -X POST http://localhost:8080/schedule \
-d '{"extension": "1001", "message": "Stand up time!", "at_time": "09:00", "recurring": "weekdays"}'🗣️ Customizable Phrases
Configure the assistant's personality via environment variables or JSON:
Environment Variables:
PHRASES_GREETINGS=["Hello!","Hi there!","Hey!"]
PHRASES_GOODBYES=["Goodbye!","Take care!"]
PHRASES_ACKNOWLEDGMENTS=["Okay.","Got it.","Sure."]
PHRASES_THINKING=["One moment.","Let me check."]
PHRASES_ERRORS=["Sorry, I didn't catch that."]
PHRASES_FOLLOWUPS=["Anything else?"]JSON File (data/phrases.json):
{
"greetings": ["Beep boop! What do you want, human?"],
"goodbyes": ["Bye, meatbag!"],
"errors": ["My audio sensors must be malfunctioning."]
}🔌 Plugin System
Create custom tools with Python:
from tool_plugins import BaseTool, ToolResult, ToolStatus
class MyTool(BaseTool):
name = "MY_TOOL"
description = "Does something cool"
parameters = {
"input": {"type": "string", "required": True}
}
async def execute(self, params):
return ToolResult(
status=ToolStatus.SUCCESS,
message=f"You said: {params['input']}"
)📊 Observability
| Feature | Technology |
|---|---|
| 📈 Metrics | Prometheus |
| 🔍 Tracing | OpenTelemetry / Tempo |
| 📝 Logging | Structured JSON |
| 📊 Dashboards | Grafana |
Key Metrics:
sip_agent_calls_total— Total calls handledsip_agent_call_duration_seconds— Call duration histogramsip_agent_tool_calls_total— Tool invocations by namesip_agent_stt_latency_seconds— Speech-to-text latencysip_agent_tts_latency_seconds— Text-to-speech latencysip_agent_llm_latency_seconds— LLM response latency
🏗️ Architecture
flowchart LR
subgraph Caller
Phone[📱 SIP Phone]
end
subgraph Agent["🤖 SIP AI Agent"]
SIP[SIP Client]
Audio[Audio Pipeline]
Tools[Tool Manager]
API[REST API]
end
subgraph Services
LLM[🧠 LLM Server]
Speaches[🎤 Speaches]
end
Phone <-->|SIP/RTP| SIP
SIP <--> Audio
Audio <--> Speaches
Audio <--> Tools
Tools <--> LLM
API <--> Tools🖥️ System Requirements
Recommended: NVIDIA DGX Spark
┌─────────────────────────────────────────────────────────────┐
│ 🟢 NVIDIA DGX Spark │
├─────────────────────────────────────────────────────────────┤
│ 🧠 Grace Blackwell GB10 Superchip │
│ 💾 128GB Unified Memory │
│ ⚡ 1 PFLOP AI Performance │
└─────────────────────────────────────────────────────────────┘
Minimum Requirements
| Component | Requirement |
|---|---|
| CPU | 8+ cores |
| RAM | 32GB |
| GPU | NVIDIA with 16GB+ VRAM |
| Storage | 50GB SSD |
| Network | Gigabit Ethernet |
Software Dependencies
| Dependency | Version |
|---|---|
| Python | 3.11+ |
| Docker | 24.0+ |
| Docker Compose | 2.20+ |
| Speaches | Latest |
📦 Installation
# Clone repository
git clone https://github.com/your-org/sip-agent.git
cd sip-agent
# Configure
cp sip-agent/.env.example sip-agent/.env
nano sip-agent/.env
# Start
docker compose up -d
# (Optional) Start services with Observability
docker compose -f ./docker-compose.yml -f docker-compose.observability.yml up -d
# Verify
curl http://localhost:8080/health📚 Documentation
Full documentation available at sip-agent.readme.io
| Document | Description |
|---|---|
| Overview | Architecture and features |
| Getting Started | Installation guide |
| Configuration | Environment variables |
| API Reference | REST API endpoints |
| Tools | Built-in tools |
| Plugins | Custom tool development |
| Examples | Integration patterns |
⚠️ Known Limitations
- WebSocket realtime STT mode is experimental (use
STT_MODE=batchfor stability) - Maximum concurrent calls limited by LLM server capacity
- Weather tool requires Tempest station (or customize for other APIs)
- Some TTS voices may struggle with unusual words or names
🔜 Roadmap
| Feature | Status |
|---|---|
| 🎵 Music on hold | Planned |
| 📞 Call transfer | Planned |
| 🗓️ Calendar integration | Planned |
| 🔍 Web search tool | Planned |
| 🏠 Home Assistant native | Planned |
| 📱 SMS notifications | Planned |
| 🌍 Multi-language support | Planned |
🙏 Acknowledgments
- NVIDIA DGX Spark — AI supercomputer platform
- Speaches — Unified STT/TTS server
- PJSIP — SIP stack
- FastAPI — REST API framework
- WeatherFlow Tempest — Weather data
📜 License
SPDX-License-Identifier: AGPL-3.0-or-later
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
📞 Support
| Resource | Link |
|---|---|
| 📖 Docs | sip-agent.readme.io |
| 🐛 Issues | GitHub Issues |
| 💬 Discussions | GitHub Discussions |
SIP AI Assistant v0.1.0
Made with ❤️ and 🤖
Now go make some calls! 📞