A live streaming audio system that transcribes speech to text and uses LLM analysis to perform automated tasks.
This monorepo contains three packages:
- @arbiter/logging — Pino-based logging utilities
- @arbiter/core — Core services for audio processing, STT, NLP, planning, and tool execution
- @arbiter/workflows — Orchestrator that starts and manages all services
- Audio Input → WebSocket server receives audio chunks
- Ingestion → Audio chunks are stored in Redis streams
- STT Processing → Audio is transcribed to text
- NLP Analysis → Text is analyzed for intents using LLM
- Planning → Intents are converted to executable actions
- Tool Execution → Actions are executed (Jira tickets, action items, etc.)
-
Set environment variables:
export OPENAI_API_KEY="your-openai-key" export JIRA_BASE_URL="https://your-domain.atlassian.net" export JIRA_EMAIL="your-email@domain.com" export JIRA_API_TOKEN="your-jira-token" export JIRA_PROJECT_KEY="PROJ"
-
Start the system:
docker-compose up --build
The WebSocket server will be available at ws://localhost:3000/ws/audio
-
Install dependencies:
yarn install
-
Build packages:
yarn build
-
Start Redis:
docker run -d -p 6379:6379 redis:7-alpine
-
Start the system:
yarn start:workflows
Environment variables:
REDIS_URL
— Redis connection URL (default: redis://localhost:6379)OPENAI_API_KEY
— OpenAI API key for STT and LLM servicesJIRA_BASE_URL
— Jira instance URLJIRA_EMAIL
— Jira user emailJIRA_API_TOKEN
— Jira API tokenJIRA_PROJECT_KEY
— Jira project key
Connect to ws://localhost:3000/ws/audio
and send audio chunks:
{
"seq": 1,
"id": "chunk-1",
"payload": "base64-encoded-audio-data"
}
GET http://localhost:3000/health
packages/
├── core/
│ ├── src/
│ │ ├── services/ # Service implementations
│ │ ├── redis/ # Redis adapter
│ │ ├── noop-stt.ts # STT placeholder
│ │ ├── noop-summarizer.ts # LLM placeholder
│ │ └── ...
│ └── package.json
├── logging/
│ └── src/ # Logging utilities
└── workflows/
└── src/ # Service orchestration
- Implement
IToolCommand
interface inpackages/core/src/
- Register the command in
packages/workflows/src/index.ts
- Add required environment variables to docker-compose.yaml
- Replace
NoopStt
with real STT service (OpenAI Whisper, etc.) - Replace
NoopSummarizer
with real LLM service (OpenAI GPT, etc.)