Quick start

Get Roux
running.

Five steps from a fresh clone to a running companion. You'll need Docker and at least one LLM API key. Everything else is optional.

Python 3.12 Flask + SocketIO PostgreSQL + pgvector Neo4j Redis Celery Docker

MIT licensed. github.com/wastrilith2k/roux →

01

Prerequisites

You need three things before you start:

  • Docker & Docker Compose — all services run in containers.
  • At least one LLM API key — see Step 2. Free options exist.
  • Git

That's it. Postgres, Neo4j, Redis, and Celery all spin up automatically via Compose. No local database installation required.

02

Clone and configure

Clone the repo and copy the environment template.

git clone https://github.com/wastrilith2k/roux companion-framework
cd companion-framework
cp .env.example .env

Open .env in your editor. You'll fill in API keys in the next step and set your database passwords in Step 4.

03

Add your LLM API keys

Roux supports multiple providers with automatic failover. You need at least one. For the cheapest setup, use OpenRouter with free models. For production quality, use Fireworks (primary) + OpenAI (embeddings and tool calls).

Provider Key in .env Notes
OPENROUTER_API_KEY Free tier available. Recommended for getting started.
Fireworks AI FIREWORKS_API_KEY Primary in production. Fast inference, DeepSeek models.
OpenAI OPENAI_API_KEY Used for embeddings and tool calling. Recommended alongside Fireworks.
Anthropic ANTHROPIC_API_KEY Claude models. Last-resort fallback in the provider chain.
DeepSeek DEEPSEEK_API_KEY Direct API access to DeepSeek models.

Add whichever keys you have to .env. Roux uses whatever's available and skips what isn't.

04

Set your database passwords

Change the two default passwords in .env before starting any services.

POSTGRES_PASSWORD=your_secure_password
NEO4J_GRAPHITI_PASSWORD=your_secure_password
05

Start the stack

Choose development (hot-reload) or production mode:

# Development — with hot-reload
docker compose -f docker-compose.dev.yml up -d

# Production
docker compose up -d

First run will pull images and run database migrations automatically. Give it a minute, then check that all containers are up:

docker compose ps
06

Access your instance

Everything should be running. Here's where to find it:

Web Chat

localhost:5000 (production)
localhost:5001 (dev)

Observation Dashboard

localhost:5000/observe
Real-time simulation viewer.

CLI Chat

Terminal interface:
docker compose run companion-cli

Neo4j Browser

localhost:7475
Inspect the knowledge graph directly.

The observation dashboard shows the same live view as demo.getroux.dev/observe — episodes forming, facts being extracted, and the relationship graph evolving in real time.

Optional integrations

Extend the framework.

All integrations are opt-in via feature flags in .env. The core framework runs without any of these. See the README for full setup instructions.

Google Calendar & Gmail

The companion reads your calendar, scans email, and manages its own Google Calendar with a generated daily schedule.

Telegram Bot

Enables proactive reach-outs — the companion messages you via Telegram when it has something to say, without waiting to be spoken to.

Image Generation

NanoBanana (free, Gemini-powered) or RunComfy for LoRA-tuned workflows. Companion generates images when it detects image intent in conversation.

Image Storage

Cloudinary or AWS S3 for persistent image hosting. URLs won't expire between sessions.

Voice (Deepgram / ElevenLabs)

Text-to-speech for companion responses. Deepgram for fast synthesis, ElevenLabs for higher-quality voice cloning.

Web Search (Tavily)

Lets the companion search the web for current information and reference it naturally in conversation.

What's next

Create your first companion.

Each companion is defined by a handful of files in instances/<name>/: a persona.yaml, a personality.md, and entity profiles for what they know about others. The framework builds the rest — memory, opinions, inner state, proactive behavior.