From 4a0e4b6c65fac7da6a6fd7671905653ef5242439 Mon Sep 17 00:00:00 2001 From: John Lightner Date: Tue, 7 Apr 2026 01:41:22 -0500 Subject: [PATCH] MAESTRO: Add .env.example with all environment variables from spec Includes all 13 env vars organized into 7 groups: Database, Redis, Server, Auth, Default LLM Endpoint, Limits, Storage, and MCP. Production-only variables are commented out; single-container defaults work out of the box. --- .env.example | 68 ++++++++++++++++++++++++++++++++++++ Auto Run Docs/01-scaffold.md | 3 +- 2 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 .env.example diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..9d41f9d --- /dev/null +++ b/.env.example @@ -0,0 +1,68 @@ +# PromptLooper — Environment Variables +# Copy to .env and adjust values for your deployment. + +# ============================================================================= +# Database +# ============================================================================= +# PostgreSQL connection string for production mode. +# When not set, PromptLooper uses SQLite at DATA_DIR/promptlooper.db (single-container mode). +# DATABASE_URL=postgresql://promptlooper:promptlooper@promptlooper-db:5432/promptlooper + +# ============================================================================= +# Redis +# ============================================================================= +# Redis connection string for Celery task queue and pub/sub (live dashboard). +# When not set, PromptLooper uses an in-process queue (single-container mode). +# REDIS_URL=redis://promptlooper-redis:6379/0 + +# ============================================================================= +# Server +# ============================================================================= +# Bind address and port for the HTTP server. +HOST=0.0.0.0 +PORT=8400 + +# ============================================================================= +# Authentication +# ============================================================================= +# Secret key used to sign JWT tokens. Auto-generated on first boot if not set. +# IMPORTANT: Set this to a long random string in production. +# JWT_SECRET=change-me-to-a-random-secret + +# Static API key for programmatic access (MCP, scripts, CI). +# When not set, API key auth is disabled — only JWT login works. +# API_KEY= + +# ============================================================================= +# Default LLM Endpoint +# ============================================================================= +# Pre-configured LLM endpoint URL (OpenAI-compatible API). +# Users can add more endpoints via the UI or API; this is a convenience default. +# DEFAULT_ENDPOINT_URL=http://localhost:11434/v1 + +# API key for the default endpoint, if required. +# DEFAULT_ENDPOINT_KEY= + +# ============================================================================= +# Limits +# ============================================================================= +# Maximum number of runs executing in parallel. +MAX_CONCURRENT_RUNS=4 + +# Token budget per sweep. 0 = unlimited. +MAX_TOKENS_PER_SWEEP=0 + +# ============================================================================= +# Storage +# ============================================================================= +# Directory for SQLite database and file storage (single-container mode). +DATA_DIR=/data + +# ============================================================================= +# MCP Server +# ============================================================================= +# Enable the Model Context Protocol server for agent-driven workflows. +MCP_ENABLED=true + +# Port for the MCP server (separate from the main API). +MCP_PORT=8401 diff --git a/Auto Run Docs/01-scaffold.md b/Auto Run Docs/01-scaffold.md index 3787fa5..3ed1a09 100644 --- a/Auto Run Docs/01-scaffold.md +++ b/Auto Run Docs/01-scaffold.md @@ -8,7 +8,8 @@ Set up the PromptLooper repository, Docker infrastructure, and basic project ske - [x] Create the full directory structure as defined in the spec's Project Structure section. Every directory should exist with a placeholder __init__.py or .gitkeep as appropriate. Include backend/, frontend/, docker/, alembic/, and all subdirectories. > Created all directories: backend/ (with routers/, engine/adapters/, engine/scorers/, mcp/, websocket/, tests/), frontend/src/ (pages/, components/, api/), docker/, alembic/versions/. Python packages have __init__.py, non-Python dirs have .gitkeep. -- [ ] Create .env.example with all environment variables from the spec's Environment Variables table, with sensible defaults and comments explaining each group. Include DATABASE_URL, REDIS_URL, JWT_SECRET, DEFAULT_ENDPOINT_URL, MAX_CONCURRENT_RUNS, and all others. +- [x] Create .env.example with all environment variables from the spec's Environment Variables table, with sensible defaults and comments explaining each group. Include DATABASE_URL, REDIS_URL, JWT_SECRET, DEFAULT_ENDPOINT_URL, MAX_CONCURRENT_RUNS, and all others. + > Created .env.example with all 13 environment variables organized into 7 groups (Database, Redis, Server, Auth, Default LLM Endpoint, Limits, Storage, MCP). Production-only vars (DATABASE_URL, REDIS_URL, JWT_SECRET, API_KEY, DEFAULT_ENDPOINT_*) are commented out with explanatory notes. Single-container defaults work out of the box. - [ ] Create docker-compose.yml following XPLTD conventions: project name xpltd_promptlooper, network promptlooper (172.33.0.0/24), PostgreSQL on port 5434, Redis, API service, worker service, and web service on port 8400. Use bind mounts under /vmPool/r/services/promptlooper_* for persistent data. Model this after Chrysopedia's docker-compose.yml patterns.