Skip to content

Coderrob/agent-arbiter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Agent Arbiter

A live streaming audio system that transcribes speech to text and uses LLM analysis to perform automated tasks.

Architecture

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

Data Flow

  1. Audio Input → WebSocket server receives audio chunks
  2. Ingestion → Audio chunks are stored in Redis streams
  3. STT Processing → Audio is transcribed to text
  4. NLP Analysis → Text is analyzed for intents using LLM
  5. Planning → Intents are converted to executable actions
  6. Tool Execution → Actions are executed (Jira tickets, action items, etc.)

Quick Start

Using Docker Compose

  1. 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"
  2. Start the system:

    docker-compose up --build

The WebSocket server will be available at ws://localhost:3000/ws/audio

Local Development

  1. Install dependencies:

    yarn install
  2. Build packages:

    yarn build
  3. Start Redis:

    docker run -d -p 6379:6379 redis:7-alpine
  4. Start the system:

    yarn start:workflows

Configuration

Environment variables:

  • REDIS_URL — Redis connection URL (default: redis://localhost:6379)
  • OPENAI_API_KEY — OpenAI API key for STT and LLM services
  • JIRA_BASE_URL — Jira instance URL
  • JIRA_EMAIL — Jira user email
  • JIRA_API_TOKEN — Jira API token
  • JIRA_PROJECT_KEY — Jira project key

API

WebSocket Audio Input

Connect to ws://localhost:3000/ws/audio and send audio chunks:

{
  "seq": 1,
  "id": "chunk-1",
  "payload": "base64-encoded-audio-data"
}

Health Check

GET http://localhost:3000/health

Development

Project Structure

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

Adding New Tools

  1. Implement IToolCommand interface in packages/core/src/
  2. Register the command in packages/workflows/src/index.ts
  3. Add required environment variables to docker-compose.yaml

Replacing Noop Implementations

  • Replace NoopStt with real STT service (OpenAI Whisper, etc.)
  • Replace NoopSummarizer with real LLM service (OpenAI GPT, etc.)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published