Skip to content

Releases: CHA0S-CORP/general-disarray

v1.0.3 — Real example knowledge doc

Choose a tag to compare

@MaxwellDPS MaxwellDPS released this 15 Jul 04:54
509a596

Patch release: ships a real example knowledge-base document so retrieval-augmented answers work out of the box.

Fix

  • The bundled knowledge doc was a placeholder whose "this is a sample, replace me" boilerplate dominated RAG retrieval, so questions about its content (e.g. "which day is trash pickup?") surfaced the boilerplate instead of the answer. Replaced with clean, real household reference content (trash/recycling schedule, Wi-Fi, contacts, thermostat, mail). The example doc is now tracked in the repo (user-added documents stay ignored), so a fresh clone has a working, indexable knowledge base.

Testing

  • Reindexed and verified live: "trash pickup" now returns Tuesday, and the end-to-end KNOWLEDGE call test passes. With this, the full e2e suite is green apart from the intentionally guarded/environment-gated tests.

See PR #5.

v1.0.2 — Reliable persona load/save

Choose a tag to compare

@MaxwellDPS MaxwellDPS released this 15 Jul 04:26
d0458f2

Patch release: makes saved personas actually load (Pig Latin was coming out as generic pirate speech), fixes silently-lost saves, and completes a full end-to-end call sweep.

Fixes

  • Saved personas now load reliably. "Use the Pig Latin persona" was quietly falling back to a vague, model-invented description instead of the saved rules — because the set→load safety net bailed whenever the description happened to mention a second profile name (e.g. "…Pig Latin… with a cheerful tone"). It now picks the most specific match, so the real saved profile wins.
  • Saving a style no longer silently fails. The model conflates "set" and "save" ("save a style named X, the style is Y" arrives as one set call); that was being hijacked and lost. It's now handled as save-and-apply.

Testing

  • Full e2e sweep over real SIP calls: all voice-tool and persona tests pass (PERSONA set/save/load, weather, forecast, search, quakes, KP index, GPU, alerts, dice/coin/joke/trivia/story/drink, timer, transfer, hangup, memory remember/recall/forget, virtual numbers).
  • E2E REST helpers now send the API auth token so those tests run against a hardened deployment.

Notes

  • CONTAINER_CTL / TRIGGER_WORKFLOW e2e tests are guarded (need a throwaway target / receiver) and skip by default.
  • Pig Latin output quality remains model-dependent; this release ensures the correct rules are loaded.

See PR #4.

v1.0.1 — Persona/context-bleed fixes + natural measurements

Choose a tag to compare

@MaxwellDPS MaxwellDPS released this 15 Jul 03:03
8107d60

Patch release: fixes for persona/context bleed across calls, more natural spoken measurements, and e2e coverage for every voice tool.

Fixes

  • Personas no longer bleed across calls. Caller memory was saving persona/speaking-style choices and one-off questions as durable facts, which then got injected into every future call and mixed together (e.g. a saved "Pig Latin" persona kept reappearing). Memory now records only durable facts about the caller and explicitly excludes persona/style choices and one-off content — including the per-call summary. Existing polluted memory was cleaned.
  • "Use the X persona" now loads the saved profile instead of the model improvising its own version, so saved profiles' exact rules are actually used.
  • The agent stops forgetting earlier turns in the same call. The in-call context window default is raised (MAX_CONVERSATION_TURNS 10 → 20); a deployment had it set to 1.
  • Recipes read naturally. Measurement abbreviations are spoken in full — "2 ounces" instead of "2 oz" (which TTS read as "oh zee").

Tests

  • E2E coverage for every built-in voice tool (PERSONA, KP_INDEX, STORY, DRINK_RECIPE, CALLBACK, plus guarded CONTAINER_CTL / TRIGGER_WORKFLOW).
  • Regression tests for the persona set→load redirect, the memory-exclusion prompt, spoken unit expansion, and the context-window default.

Also

  • A ninth seed persona: Pig Latin.

979 unit + component tests pass. See PR #3 for details.

v1.0.0 — First stable release

Choose a tag to compare

@MaxwellDPS MaxwellDPS released this 15 Jul 02:26
1cca0f3

First stable release of General Disarray — the self-hosted, voice-powered AI phone assistant. This release brings a smarter agentic conversation engine, a large expansion of voice tools, caller-settable agent personas, an n8n integration package, and a round of latency/barge-in reliability fixes found by testing on real calls.

Highlights

Smarter conversations

  • LangGraph agentic engine (LLM_BACKEND=langgraph) — chains multiple tool calls per turn to reason through multi-step requests.
  • Cross-call caller memory — remembers facts about a caller and recalls them on their next call.
  • RAG knowledge base — answers from your own documents via local embeddings.
  • Rolling summaries — long calls no longer lose earlier context.
  • "Never guess" grounding — live-data questions are answered with a real tool call, never a guess or an empty promise.

Agent personas (new)

  • The caller can set the agent's demeanor for a call ("act like a formal butler") and save/recall styles by name across calls, via the PERSONA voice tool.
  • Ships 8 ready-to-use personas: Professional, Friendly, Formal Butler, Calm, Cheerful, Newscaster, Witty, Pirate.
  • Tone-only — personas never override grounding, tool, or safety rules.

13 new voice tools

Fun (dice, coin, trivia, story, drink recipe), information (web search, NWS forecast, KP index, earthquakes), memory & automation (remember/forget, trigger workflow), ops (GPU status, Alertmanager, container control), and blind call transfer.

Integrations

  • n8n community node package — call, speak, schedule, run tools, and provision virtual numbers from n8n, with a call-lifecycle trigger and an optional per-call caller name (e.g. "Weather Alert").
  • alert-bridge example — turn Alertmanager alerts into escalation phone calls.
  • DGX Spark / GB10 support — self-contained compose variant and a CUDA-enabled speaches build.

Reliability fixes (from real-call testing)

  • STT latency — end-of-utterance and silence timeouts were running up to 5× slow (a 750 ms hangover became ~3.8 s of dead air) because the VAD miscounted variable-length audio reads. Now measured in real time; the agent responds the instant the caller stops talking.
  • Barge-in — interruptions were being missed because the detector reset on the natural gaps within speech. It now tolerates inter-syllable gaps and fires reliably (~500 ms) while still ignoring clicks and line noise.
  • Web-search read-aloud — no longer reads scraped page snippets verbatim; speaks a clean summary instead.
  • Promised-but-not-delivered — a turn that says "let me get that for you" and then goes silent now forces a real tool call.

Testing & CI

Layered test suite (unit / component / e2e); the fast tiers run in GitHub Actions with an error-level ruff gate. 953 unit + component tests pass.

Full details: see PR #2.

v0.2.0 - Its better

Choose a tag to compare

@MaxwellDPS MaxwellDPS released this 15 Jul 01:49

Full Changelog: v0.1.0...v0.2.0

v0.1.0 - Its Alive!

Choose a tag to compare

@MaxwellDPS MaxwellDPS released this 30 Nov 08:57

🎉 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 handled
  • sip_agent_call_duration_seconds — Call duration histogram
  • sip_agent_tool_calls_total — Tool invocations by name
  • sip_agent_stt_latency_seconds — Speech-to-text latency
  • sip_agent_tts_latency_seconds — Text-to-speech latency
  • sip_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=batch for 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


📜 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! 📞