Skip to content

Repository files navigation

Soniq

One AI voice agent that answers your business phones.
Book appointments. Take orders. Handle FAQs. Route calls. 24/7.
Universal and config-driven: shaped per tenant by capabilities, not by an industry.

Quick Start  Architecture  Features

TypeScript Python Next.js Hono LiveKit Docker License


~450ms
voice-to-voice
6
toggleable capabilities
3
LLM providers
Multi-tenant
architecture

Architecture

    Phone Call
        |
        v
  +-----------+
  | SignalWire |  SIP trunking / WebSocket streaming
  +-----+-----+
        |
        v
  +-----------+
  | Deepgram  |  Speech-to-Text .............. ~150ms
  +-----+-----+
        |
        v
  +-----------+
  | LLM       |  Gemini / OpenAI / Groq ...... ~200ms TTFT
  | + Tools   |  booking, FAQ, routing, CRM
  +-----+-----+
        |
        v
  +-----------+
  | Cartesia  |  Text-to-Speech .............. ~40ms
  +-----+-----+
        |
        v
   AI Response   ........................ ~450ms total

Three services, one docker compose up:

Service Stack What it does
soniq-api Hono + TypeScript + Node 22 REST API, voice pipeline, business logic, scheduled jobs
soniq-dashboard Next.js 16 + React 19 + Tailwind Tenant dashboard, live call monitoring, CRM, setup wizard
soniq-agent Python + LiveKit Agents SDK Voice agent worker with tool calling

Features

Call Handling -- Appointment booking with calendar sync (Google, Outlook, Calendly) / order taking with verification / FAQ from tenant knowledge base / smart routing with full conversation context / voicemail with transcription

Automation -- SMS confirmations via Twilio / post-call review requests / follow-up scheduling / engagement scoring / callback queue

CRM -- Contacts with call history / deals pipeline / task management / sentiment detection for priority escalation

Multi-tenant -- Per-tenant config, prompts, voice, phone numbers, and capabilities / tenant isolation at database level / white-label ready


How it's configured

Soniq is one universal voice agent, not a bundle of industry templates. There is no industry to pick. Each tenant is shaped by two things:

Capabilities -- toggle what the agent is allowed to do on a call:

Capability Default What it does
Appointment booking on Checks availability and books with calendar sync
FAQ & knowledge on Answers from the tenant's business description and Q/A pairs
Call transfer / escalation on Hands off to a human with full conversation context
Voicemail on Captures and transcribes messages after hours
Callbacks on Queues and schedules return calls
Order / request taking off Takes a domain-neutral order or request

Business config -- free-form: business name, agent name, voice, greetings, operating hours, location, escalation rules, and a knowledge base of FAQ pairs. Universal terminology (customer, booking, deal, task) and one default deal pipeline apply to every tenant, so the same agent serves any business without per-industry code.


Tech stack details
Layer Technology Role
Telephony SignalWire SIP trunking, WebSocket audio streaming
STT Deepgram Nova-2 Streaming speech-to-text, phone-optimized
LLM Gemini / OpenAI / Groq Multi-provider fallback with tool calling
TTS Cartesia Sonic Streaming text-to-speech synthesis
Voice Agent LiveKit Agents SDK Python agent worker with Silero VAD
Database Supabase (PostgreSQL) Multi-tenant data, auth, real-time
Frontend Next.js 16, shadcn/ui, Radix App Router, SSR, responsive dashboard
Backend Hono.js, TypeScript Lightweight, fast, middleware-based API

Quick Start

Prerequisites

Setup

git clone https://github.com/oneKn8/soniq.git
cd soniq
cp .env.example .env
# Edit .env with your API keys

Option A -- Dev script (recommended)

./dev.sh             # starts API + dashboard
./dev.sh --api       # API only
./dev.sh --fe        # dashboard only

Option B -- Manual

# terminal 1
cd soniq-api && npm install && npm run dev      # localhost:3100

# terminal 2
cd soniq-dashboard && npm install && npm run dev # localhost:3000

Option C -- Docker

docker compose up

Environment Variables

See .env.example for the full list. Key groups:

Group Variables
Database SUPABASE_URL SUPABASE_ANON_KEY SUPABASE_SERVICE_ROLE_KEY
LLM GEMINI_API_KEY OPENAI_API_KEY GROQ_API_KEY
Voice DEEPGRAM_API_KEY CARTESIA_API_KEY
Telephony SIGNALWIRE_PROJECT_ID SIGNALWIRE_API_TOKEN SIGNALWIRE_SPACE_URL
LiveKit LIVEKIT_API_KEY LIVEKIT_API_SECRET

Project Structure

soniq/
├── soniq-api/                  # Backend
│   ├── src/
│   │   ├── index.ts            # Hono entry point
│   │   ├── routes/             # REST endpoints
│   │   ├── services/           # Voice pipeline, LLM, calendar, CRM
│   │   ├── middleware/         # Auth, rate limiting
│   │   ├── jobs/               # Scheduled automation
│   │   └── config/             # Universal prompt, pipeline, voice config
│   ├── migrations/             # SQL migrations
│   └── Dockerfile
│
├── soniq-dashboard/            # Frontend
│   ├── app/
│   │   ├── (auth)/             # Login, signup, password reset
│   │   └── (dashboard)/        # All dashboard pages
│   ├── components/             # UI components
│   ├── lib/                    # API client, terminology, capabilities
│   └── Dockerfile
│
├── soniq-agent/                # Voice Agent
│   ├── agent.py                # LiveKit agent worker
│   ├── tools.py                # Booking, FAQ, routing tools
│   └── Dockerfile
│
├── docker-compose.yml
├── nginx.conf
├── dev.sh
└── .env.example

License

Apache License 2.0



Built with Hono, Next.js, LiveKit, Deepgram, Cartesia, and Supabase

About

AI voice agents for business phone handling. Sub-500ms latency, multi-tenant, 27 industry presets.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages