Create Configuration wiki page for chrysopedia
parent
0bb2098654
commit
54b34900fb
1 changed files with 134 additions and 0 deletions
134
Configuration.md
Normal file
134
Configuration.md
Normal file
|
|
@ -0,0 +1,134 @@
|
||||||
|
# Configuration
|
||||||
|
|
||||||
|
| Meta | Value |
|
||||||
|
|------|-------|
|
||||||
|
| **Repo** | `xpltdco/chrysopedia` |
|
||||||
|
| **Page** | `Configuration` |
|
||||||
|
| **Audience** | developers, agents |
|
||||||
|
| **Last Updated** | 2026-04-04 |
|
||||||
|
| **Status** | current |
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Configuration is managed via environment variables in two `.env` files loaded by Docker Compose. The backend parses settings via `backend/config.py` (Pydantic-style with LRU caching). Frontend build-time constants are injected via Docker build args.
|
||||||
|
|
||||||
|
## Environment Files
|
||||||
|
|
||||||
|
| File | Purpose |
|
||||||
|
|------|---------|
|
||||||
|
| `.env` | Core app config (DB, Redis, LLM, auth, app settings) |
|
||||||
|
| `.env.lightrag` | LightRAG service config (LLM model, embedding, Qdrant connection) |
|
||||||
|
|
||||||
|
## Core Application (.env)
|
||||||
|
|
||||||
|
### Database
|
||||||
|
|
||||||
|
| Variable | Description |
|
||||||
|
|----------|-------------|
|
||||||
|
| `DATABASE_URL` | PostgreSQL connection string (`postgresql+asyncpg://...`) |
|
||||||
|
|
||||||
|
### Redis
|
||||||
|
|
||||||
|
| Variable | Description |
|
||||||
|
|----------|-------------|
|
||||||
|
| `REDIS_URL` | Redis connection string (`redis://chrysopedia-redis:6379/0`) |
|
||||||
|
|
||||||
|
### Authentication
|
||||||
|
|
||||||
|
| Variable | Description |
|
||||||
|
|----------|-------------|
|
||||||
|
| `APP_SECRET_KEY` | JWT signing key (HS256) |
|
||||||
|
|
||||||
|
### LLM Configuration
|
||||||
|
|
||||||
|
| Variable | Description |
|
||||||
|
|----------|-------------|
|
||||||
|
| `OPENAI_API_KEY` | API key for OpenAI-compatible endpoint |
|
||||||
|
| `LLM_MODEL` | Primary LLM model name (DGX Sparks Qwen) |
|
||||||
|
| `LLM_BASE_URL` | OpenAI-compatible API endpoint URL |
|
||||||
|
|
||||||
|
### Application
|
||||||
|
|
||||||
|
| Variable | Default | Description |
|
||||||
|
|----------|---------|-------------|
|
||||||
|
| `APP_VERSION` | `0.1.0` | Version string (injected into frontend) |
|
||||||
|
| `GIT_COMMIT` | `unknown` | Git commit hash (injected into frontend) |
|
||||||
|
| `DEBUG` | `false` | Debug mode |
|
||||||
|
|
||||||
|
### Watch Directory
|
||||||
|
|
||||||
|
| Variable | Description |
|
||||||
|
|----------|-------------|
|
||||||
|
| `WATCH_DIR` | Path to transcript JSON watch folder |
|
||||||
|
|
||||||
|
## LightRAG (.env.lightrag)
|
||||||
|
|
||||||
|
| Variable | Description |
|
||||||
|
|----------|-------------|
|
||||||
|
| `LLM_MODEL` | LLM model for LightRAG queries |
|
||||||
|
| `EMBEDDING_MODEL` | Embedding model (`nomic-embed-text`) |
|
||||||
|
| `QDRANT_URL` | Qdrant connection for LightRAG |
|
||||||
|
| `WORKING_DIR` | LightRAG data directory |
|
||||||
|
|
||||||
|
## Frontend Build Args
|
||||||
|
|
||||||
|
Injected at Docker build time via `docker-compose.yml` build args:
|
||||||
|
|
||||||
|
| Build Arg | Becomes | Purpose |
|
||||||
|
|-----------|---------|---------|
|
||||||
|
| `VITE_APP_VERSION` | `import.meta.env.VITE_APP_VERSION` | Version display in UI |
|
||||||
|
| `VITE_GIT_COMMIT` | `import.meta.env.VITE_GIT_COMMIT` | Commit hash in UI |
|
||||||
|
|
||||||
|
**Important:** In Dockerfile.web, the order must be `ARG` → `ENV` → `RUN npm run build`.
|
||||||
|
|
||||||
|
## Docker Service Configuration
|
||||||
|
|
||||||
|
### PostgreSQL
|
||||||
|
|
||||||
|
- **Port:** 5433:5432 (host:container)
|
||||||
|
- **Volume:** `chrysopedia_postgres_data`
|
||||||
|
|
||||||
|
### Redis
|
||||||
|
|
||||||
|
- **Port:** Internal only (6379)
|
||||||
|
- **Persistence:** Default (RDB snapshots)
|
||||||
|
|
||||||
|
### Qdrant
|
||||||
|
|
||||||
|
- **Port:** Internal only (6333)
|
||||||
|
- **Volume:** `chrysopedia_qdrant_data`
|
||||||
|
|
||||||
|
### Ollama
|
||||||
|
|
||||||
|
- **Port:** Internal only (11434)
|
||||||
|
- **Volume:** `chrysopedia_ollama_data`
|
||||||
|
- **Model:** `nomic-embed-text` (pulled on init)
|
||||||
|
|
||||||
|
### LightRAG
|
||||||
|
|
||||||
|
- **Port:** 9621 (localhost only on host)
|
||||||
|
- **Volume:** `chrysopedia_lightrag_data`
|
||||||
|
|
||||||
|
### Web (nginx)
|
||||||
|
|
||||||
|
- **Port:** 8096:80 (host:container)
|
||||||
|
- **Serves:** Pre-built React SPA with fallback to index.html
|
||||||
|
|
||||||
|
## Pipeline Configuration
|
||||||
|
|
||||||
|
LLM settings are configured per pipeline stage:
|
||||||
|
- **Stages 1-4:** Chat model (faster, cheaper)
|
||||||
|
- **Stage 5 (synthesis):** Thinking model (higher quality)
|
||||||
|
- **Stage 6 (embedding):** Ollama local (`nomic-embed-text`)
|
||||||
|
|
||||||
|
Prompt templates are loaded from disk (`prompts/` directory) at runtime. SHA-256 hashes are tracked for reproducibility.
|
||||||
|
|
||||||
|
## Network
|
||||||
|
|
||||||
|
- **Compose subnet:** 172.32.0.0/24
|
||||||
|
- **External access:** nginx on nuc01 (10.0.0.9) → ub01:8096
|
||||||
|
- **DNS:** AdGuard Home rewrites `chrysopedia.com` → 10.0.0.9
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*See also: [[Architecture]], [[Deployment]], [[Agent-Context]]*
|
||||||
Loading…
Add table
Reference in a new issue