You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
4.4 KiB
88 lines
4.4 KiB
# Copy to .env and fill in. .env is gitignored and must never be committed. |
|
# |
|
# Note: values are read with python-dotenv, which tolerates characters that a |
|
# plain `source .env` in bash would choke on (parentheses, spaces). Don't assume |
|
# shell scripts can source this file. |
|
|
|
# ── Database ────────────────────────────────────────────────────────────────── |
|
PG_HOST=localhost |
|
PG_PORT=5432 |
|
PG_DB=plenum |
|
PG_USER=plenum |
|
PG_PASSWORD= |
|
|
|
# Guardrails applied to every pooled connection. The defaults suit an interactive |
|
# API; batch jobs may want a larger work_mem and no statement timeout. |
|
PG_POOL_MINCONN=1 |
|
PG_POOL_MAXCONN=6 |
|
PG_APPLICATION_NAME=plenum |
|
PG_WORK_MEM=32MB |
|
PG_TEMP_FILE_LIMIT=1GB |
|
PG_STATEMENT_TIMEOUT_MS=30000 |
|
PG_LOCK_TIMEOUT_MS=5000 |
|
PG_IDLE_IN_TRANSACTION_SESSION_TIMEOUT_MS=10000 |
|
|
|
# ── Chat model ──────────────────────────────────────────────────────────────── |
|
# Any OpenAI-compatible endpoint, including the /v1 suffix. |
|
LLM_DIRECT_URL=http://localhost:8000/v1 |
|
# Bearer token for the endpoint above. Leave empty for an unauthenticated local server. |
|
LLM_BEARER= |
|
|
|
# The orchestrator and the final answer. Worth the strongest model you have. |
|
LLM_MODEL_SMART= |
|
# Summarising tool results and other mechanical work. A smaller model is fine. |
|
LLM_MODEL_FAST= |
|
# Fallback when neither of the above is set. |
|
LLM_MODEL= |
|
|
|
# ── Embeddings ──────────────────────────────────────────────────────────────── |
|
# Separate endpoint, because embedding usually runs on a different server than chat. |
|
EMBEDDING_BASE_URL=http://localhost:8003/v1 |
|
EMBEDDING_API_KEY= |
|
# Must produce vectors of the width declared as embeddings.dimension in |
|
# parliament.yaml. Changing this requires re-embedding the whole corpus. |
|
LLM_MODEL_EMBEDDING= |
|
|
|
# ── Optional: additional providers ──────────────────────────────────────────── |
|
# Only needed for providers listed in providers.yaml with user_api_key: false. |
|
# Keys that users supply in the browser are never stored server-side. |
|
BERGET_API_KEY= |
|
BERGET_BASE_URL= |
|
BERGET_MODEL= |
|
GOOGLE_GEMINI_KEY= |
|
|
|
# ── Application ─────────────────────────────────────────────────────────────── |
|
# HMAC secret for the zero-knowledge login challenge. Generate with: |
|
# python -c "import secrets; print(secrets.token_hex(32))" |
|
AUTH_PRELOGIN_SECRET= |
|
|
|
# Where downloaded corpora live. Defaults to ./data. Point this at an existing |
|
# download to reuse it rather than fetching again. |
|
PLENUM_DATA_DIR= |
|
|
|
# Use a parliament.yaml / prompt tree outside the repository, so a deployment's |
|
# own values never show up in a diff against upstream. |
|
# PARLIAMENT_CONFIG=/etc/plenum/parliament.yaml |
|
# PROMPTS_DIR=/etc/plenum/prompts |
|
|
|
# Re-read prompt files on every call. Development only. |
|
# PROMPTS_RELOAD=1 |
|
|
|
# ── Deep research tuning ────────────────────────────────────────────────────── |
|
# All optional; the defaults in backend/services/research/ are sensible. Listed |
|
# here so they are discoverable rather than only findable by grep. |
|
# RESEARCH_PROPOSAL_COUNT=6 # threads proposed after the scout pass |
|
# RESEARCH_FOLLOWUP_COUNT=3 # follow-up threads suggested after a dig |
|
# RESEARCH_MAX_THREADS=12 # hard cap per board |
|
# RESEARCH_TARGET_DEPTH=2 # how many dig rounds a thread gets |
|
# RESEARCH_SCOUT_ROUNDS=2 |
|
# RESEARCH_SCOUT_MATERIAL_CHARS=40000 |
|
# RESEARCH_TRIP_MAX_TURNS=14 # tool-call turns per thread before forcing an answer |
|
# RESEARCH_TOOL_RESULT_CHARS=8000 # per-result truncation fed back to the model |
|
# RESEARCH_ANSWER_MAX_TOKENS=1500 |
|
# RESEARCH_REPORT_MAX_TOKENS=4000 |
|
# RESEARCH_MAX_RUNNING_JOBS=3 # server-wide concurrency |
|
# RESEARCH_MAX_BYO_JOBS_PER_OWNER=1 # concurrency for users on their own API key |
|
# RESEARCH_MAX_JOB_RUNTIME_SECS=3600 |
|
# RESEARCH_HEARTBEAT_SECS=20 |
|
# RESEARCH_STALE_HEARTBEAT_SECS=180 # after this, a job is considered dead and reaped
|
|
|