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.
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"}'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.
| Key | Default | Description |
|---|---|---|
REPI_ENV | production | production | development. Production is quiet (uvicorn log_level=warning, no reload). Development is verbose. |
LOG_LEVEL | INFO | DEBUG | INFO | WARNING | ERROR. Overridden to DEBUG when REPI_ENV is development. |
DATABASE_URL | postgresql+asyncpg://repi_user:password_here@localhost:5432/repi | PostgreSQL asyncpg connection URL |
LLM_PROVIDER | openai | openai | anthropic | mistral | gemini | openrouter | ollama |
LLM_MODEL | provider default | Override the default model for the selected provider |
LLM_API_KEY | none | Provider-agnostic API key, works for any LLM_PROVIDER. Use OPENROUTER_API_KEY instead when LLM_PROVIDER=openrouter. |
TIME_WINDOW_INITIAL_MINUTES | 10 | Starting time window for investigations (minutes) |
TIME_WINDOW_EXPANSIONS | 60,360,1440 | Progressive window expansion in minutes (1h → 6h → 24h) |
UI_PORT | 3000 | Port the web UI binds to |
WATCHER_CONFIG_REFRESH_SECS | 30 | How often the worker polls DB for config changes |
Investigate your first incident in under 5 minutes.
Self-hosted. No data leaves your infrastructure.