Files
pablan/.env.example
T
ProfessorNovaandClaude Opus 5 97dbff309c Pablan, as it stands
Self-hosted knowledge management for SMEs: a split-screen Markdown editor
whose sections an LLM refines while you write, and RAG question answering
over the documents that result. FastAPI + Postgres/pgvector on the back,
SvelteKit on the front, everything OpenAI-compatible and self-hostable.

Squashed into a single commit; the development history stays local.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CA43ZJda8Rbp2hKXNy8f6b
2026-09-04 08:36:17 +02:00

73 lines
3.0 KiB
Bash

# Pablan configuration — copy to .env and adjust.
# Read by docker compose (variable interpolation) and by the backend settings.
# --- Environment ---
# "development" or "production". The customer stack (docker-compose.yml)
# defaults to production regardless of this file; native dev reads it as-is.
# Seeding dev data is refused when set to production.
PABLAN_ENV=development
# Secure cookies require https. Dev access happens over plain http via
# WireGuard IPs (not localhost), where browsers silently drop Secure cookies —
# so dev sets false. NEVER set false in production (Caddy terminates https).
PABLAN_COOKIE_SECURE=false
# --- PostgreSQL ---
POSTGRES_USER=pablan
POSTGRES_PASSWORD=change-me
POSTGRES_DB=pablan
# Dev (make dev): Postgres runs in Docker on localhost:5432.
# In the customer stack (docker-compose.yml) the backend gets this URL with
# host "postgres" instead — set automatically, no need to change it there.
PABLAN_DATABASE_URL=postgresql+asyncpg://pablan:change-me@localhost:5432/pablan
# --- LLM load ---
# How many requests Pablan lets ONE endpoint see at once. Match it to the
# server's own parallelism (llama.cpp: --parallel); beyond it, requests wait
# here rather than piling up where Pablan cannot bound them.
PABLAN_LLM_MAX_PARALLEL=4
# How long a request waits for a free slot before the user is told the model
# is busy, and how many may be waiting at all.
PABLAN_LLM_QUEUE_WAIT_SECONDS=20
PABLAN_LLM_MAX_QUEUED=24
# --- LLM endpoints (OpenAI-compatible; three independent model roles) ---
# chat: conversation turns — quality matters (Gemma-class 12B+ locally, cloud in prod)
PABLAN_CHAT_BASE_URL=http://localhost:8001/v1
PABLAN_CHAT_API_KEY=none
PABLAN_CHAT_MODEL=unsloth/gemma-4-26B-A4B-it-qat-GGUF:UD-Q4_K_XL
# utility: bookkeeping, summarization, entity extraction — cheap + fast
# (same local server as chat by default)
PABLAN_UTILITY_BASE_URL=http://localhost:8001/v1
PABLAN_UTILITY_API_KEY=none
PABLAN_UTILITY_MODEL=unsloth/gemma-4-26B-A4B-it-qat-GGUF:UD-Q4_K_XL
# embedding: multilingual embeddings — German retrieval quality is first-class.
# Expects an OpenAI-compatible server (e.g. llama.cpp with bge-m3) serving
# /v1/embeddings at this base URL.
PABLAN_EMBEDDING_BASE_URL=http://localhost:8002/v1
PABLAN_EMBEDDING_API_KEY=none
PABLAN_EMBEDDING_MODEL=gpustack/bge-m3-GGUF:Q8_0
# --- Privacy / retention ---
# Query-mode conversations are auto-deleted after this many days
# (retention_cleanup job).
PABLAN_QUERY_RETENTION_DAYS=90
# --- Logging ---
# PABLAN_LOG_LEVEL=INFO
# Content debug logging (prompts, LLM responses). NEVER enable in production —
# logs must stay free of prompts, user messages and document text.
# PABLAN_DEBUG_LOG_PROMPTS=false
# --- Tuning (defaults are fine) ---
# PABLAN_LLM_TIMEOUT_SECONDS=120
# PABLAN_JOB_POLL_SECONDS=1.0
# --- Enterprise (ee/) ---
# PABLAN_EE_LICENSE_KEY=
# --- Customer deployment (docker-compose.yml) ---
# Domain Caddy serves with automatic TLS. Use "localhost" for a local smoke test.
PABLAN_DOMAIN=pablan.example.com