Installation Guide
Prerequisites
- Python 3.10+
- Node.js 22+
- Docker + Docker Compose
- Postgres with
pgvector
Installation & Configuration
Local
Backend
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
alembic upgrade head
python seeders/seed_all.py
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
Frontend
cd ui
npm install
npm run dev
Docker
UI + API + worker + postgres + localstack:
docker compose -f docker/docker-compose.yml up -d --build
UI + API:
docker compose -f docker/compose.ui-api.yml up -d --build
UI + API + worker:
docker compose -f docker/compose.ui-api-worker.yml up -d --build
Logging (log viewer + log tail):
docker compose -f docker/compose.logging.yml up -d
Seeders
Run all seeders:
python seeders/seed_all.py
Run individual seeders:
python seeders/seed_states.py
python seeders/seed_districts.py
python seeders/seed_users.py
python seeders/seed_settings.py
python seeders/seed_llm_provider_types.py
python seeders/seed_llm_providers.py
Environment Variables
All backend env vars are loaded from .env. Frontend env vars live in ui/.env.
Backend
Path: .env
| Name | Default | Allowed/Notes |
|---|---|---|
DATABASE_URL | (required) | SQLAlchemy URL |
JWT_SECRET_KEY | (required) | Secret for JWT signing |
JWT_ALGORITHM | HS256 | JWT algo |
ACCESS_TOKEN_EXPIRE_MINUTES | 60 | Minutes |
OPENAI_API_KEY | (required) | OpenAI key |
OPENAI_CHAT_MODEL | gpt-5.1-mini | OpenAI model |
OPENAI_MODEL_TEMPERATURE | 1 | Float |
OPENAI_EMBED_MODEL | text-embedding-3-small | OpenAI embedding model |
OPENAI_EMBED_DIMENSIONS | 1536 | Must match DB vector dim |
OPENAI_TPM_LIMIT | 500000 | Tokens/min limit |
OPENAI_TPM_WINDOW_SECONDS | 60 | Window size |
OPENAI_TPM_SLEEP_SECONDS | 1 | Throttle sleep |
OPENAI_TPM_WAIT_MAX_SECONDS | 120 | Max wait |
SECRETS_PROVIDER | env | env, aws, azure |
AWS_REGION | ap-south-1 | AWS region |
AWS_ENDPOINT_URL | LocalStack URL if used | |
AZURE_KEY_VAULT_URL | Azure Key Vault URL | |
LLM_PROVIDER_TYPE | openai | openai, openai_compatible, gemini, anthropic, bedrock |
LLM_MODEL | Overrides model for env provider | |
LLM_BASE_URL | Required only for openai_compatible | |
LLM_API_KEY | Overrides key for env provider | |
LLM_TEMPERATURE | 0.2 | Overrides temperature |
CHUNK_SIZE | 800 | Ingest chunk size |
CHUNK_OVERLAP | 100 | Ingest overlap |
EMBED_BATCH_SIZE | 32 | Embedding batch |
CHUNK_COMMIT_SIZE | 200 | Commit batch |
USE_WORKER_QUEUE | false | Enable worker queue; when enabled make sure worker process is running |
WORKER_POLL_INTERVAL | 5 | Seconds |
MAX_CONTEXT_CHARS | 20000 | Context cap |
SUMMARIZATION_BATCH_CHARS | 6000 | Summarization batch |
SUMMARIZATION_MAX_BATCHES | 10 | Summarization batches |
ENABLE_BATCH_SUMMARIZATION | false | Summarization toggle |
CORS_ALLOW_ORIGINS | * | CORS |
CORS_ALLOW_CREDENTIALS | true | CORS |
CORS_ALLOW_METHODS | * | CORS |
CORS_ALLOW_HEADERS | * | CORS |
STORAGE_PROVIDER | local | local, blob, s3, gcs |
PDF_STORAGE_PATH | ./data/pdfs | Local storage path |
BLOB_CONNECTION_STRING | (empty) | Azure Blob |
BLOB_CONTAINER | (empty) | Azure Blob |
S3_BUCKET | (empty) | S3 bucket |
S3_REGION | ap-south-1 | S3 region |
S3_ENDPOINT_URL | (empty) | LocalStack endpoint |
GCS_BUCKET | (empty) | GCS bucket |
GCS_CREDENTIALS_JSON | (empty) | Path to GCP service account JSON |
LOG_LEVEL | INFO | Logging level |
Frontend
Path: ui/.env
| Name | Default | Allowed/Notes |
|---|---|---|
VITE_API_BASE | http://localhost:8000/api | API base URL |
VITE_STATIC_BASE | http://localhost:8000 | Static file base |
Supported LLM Providers
- OpenAI
- Anthropic
- OpenAI Compatible
- Vertex AI
- AWS Bedrock
Supported Storage Providers
- AWS s3
- GCP Storage
- Azure blob
- local
Supported Secret Managers
- AWS secret manager
- Azure key vault