Open-source/Self-hosted/Any LLM

Stop grepping
Start knowing

repi ingests logs into PostgreSQL, indexes them with hybrid search (ParadeDB BM25 + pgvector), and runs an autonomous ReAct loop to trace root causes across services.

Everything you need to debug faster

Built on PostgreSQL and your existing LLM provider. No new infrastructure, no vendor lock-in.

Hybrid Search

ParadeDB BM25 full-text search + pgvector HNSW dense retrieval fused with Reciprocal Rank Fusion for best-of-both recall.

Autonomous ReAct Loop

LLM thinks, calls tools, observes results: up to 10 iterations per investigation to surface the actual root cause.

Background File Watcher

Register a directory via API. The worker ingests new log bytes automatically, tracking byte offsets per file.

Multi-LLM

OpenAI, Anthropic, Mistral, Gemini, Ollama: swap your provider with one line of .repi/config.json (or one click in the UI).

Progressive Time Windows

Investigations start narrow and automatically expand their search window when results are sparse.

Full Audit Trail

Every thought, tool call, and observation is persisted to PostgreSQL. Replay any investigation step by step.

Up and running in 5m

Pick the path that fits how you want to run repi.

Prebuilt image. Backend + UI + Postgres + Redis in one compose stack.

Prerequisites: Docker, git

# Get the compose file (clone or copy from GitHub)
git clone https://github.com/VarunGitGood/repi.git && cd repi

# Pulls ghcr.io/varungitgood/repi:latest and starts db + redis + app
docker compose up -d

# Open http://localhost:3000 → Config → paste your LLM key → save

Always-on log ingestion

The worker watches directories for new log bytes and ingests them automatically. It tracks a byte offset per file so it only processes what's new, restarts are safe.

01

Register a watcher

curl -X POST http://localhost:8000/watchers \
  -H "Content-Type: application/json" \
  -d '{"service_name": "auth-svc", "watch_path": "/var/log/auth"}'
02

Start the worker

docker compose exec app python -m repi.worker

Configuration

All settings live in /app/.repi/config.json inside the container, seeded with docker-aware defaults on first boot, then editable via the web UI's Config page (the API hot-reloads). Shell env vars and .env files are intentionally ignored.

KeyDefaultDescription
REPI_ENVproductionproduction | development. Production is quiet (uvicorn log_level=warning, no reload). Development is verbose.
LOG_LEVELINFODEBUG | INFO | WARNING | ERROR. Overridden to DEBUG when REPI_ENV is development.
DATABASE_URLpostgresql+asyncpg://repi_user:password_here@localhost:5432/repiPostgreSQL asyncpg connection URL
LLM_PROVIDERopenaiopenai | anthropic | mistral | gemini | openrouter | ollama
LLM_MODELprovider defaultOverride the default model for the selected provider
LLM_API_KEYnoneProvider-agnostic API key, works for any LLM_PROVIDER. Use OPENROUTER_API_KEY instead when LLM_PROVIDER=openrouter.
TIME_WINDOW_INITIAL_MINUTES10Starting time window for investigations (minutes)
TIME_WINDOW_EXPANSIONS60,360,1440Progressive window expansion in minutes (1h → 6h → 24h)
UI_PORT3000Port the web UI binds to
WATCHER_CONFIG_REFRESH_SECS30How often the worker polls DB for config changes

Investigate your first incident in under 5 minutes.

Self-hosted. No data leaves your infrastructure.

$docker compose up -d