# Smriti - Environment Variables
# Copy this file to .env and fill in the values.
#
# The backend loads this file via python-dotenv at startup so API keys
# are available even when the server is launched by a process that does
# not inherit your shell profile (e.g. uvicorn from an IDE, a CI
# runner, or a subprocess-based tool host like Claude Code).
#
# Existing env vars are NOT overridden — if you also export a key in
# your shell profile, the shell value takes precedence.

# Database
#
# Solo/local mode is the low-friction default. It uses a local SQLite
# database file and does not require Docker or Postgres.
SMRITI_DB_MODE=local

# Optional: override the local SQLite database path.
# Default: ~/.smriti/smriti.db
# SMRITI_LOCAL_DB_PATH=~/.smriti/smriti.db

# Shared/team mode: uncomment for Postgres-backed operation.
# If DATABASE_URL is explicitly set to a Postgres URL, Smriti preserves
# Postgres behavior.
# SMRITI_DB_MODE=postgres
# DATABASE_URL=postgresql://smriti:smriti@localhost:5432/smriti

# ────────────────────────────────────────────────────────────────────────
# Provider configuration (LLM-backed features only)
# ────────────────────────────────────────────────────────────────────────
#
# Core Smriti — setup, doctor, quickstart, state/current/metrics, claims,
# attach, and hand-written checkpoints — works WITHOUT any API key.
#
# These features require a real configured provider:
#   - `smriti checkpoint create --extract`
#   - `smriti checkpoint review`
#   - checkpoint draft
#   - chat UI send loop
#
# Without a provider, those paths refuse to run (HTTP 412) rather than
# silently returning placeholder MockAdapter content. Mock content is for
# tests and demos only; it must never be committed into a real project.
#
# Uncomment ONE of the keys below for a hosted provider, OR configure the
# generic provider (further down) for a local OpenAI-compatible model.
#
# IMPORTANT: do not leave a key set to empty (e.g. OPENAI_API_KEY=).
# An empty value is actively placed into os.environ by dotenv and can
# mask the yaml fallback. Either set a real key or leave the line commented.
# Setting OPENAI_MODEL alone (below) without OPENAI_API_KEY is NOT enough —
# the model needs an actual provider with credentials behind it.
#
# OPENAI_API_KEY=your-openai-key-here
# ANTHROPIC_API_KEY=your-anthropic-key-here
# OPENROUTER_API_KEY=your-openrouter-key-here

# Default model for background intelligence (extraction, draft, review).
# Only takes effect when a provider key (above) is set or the generic
# provider (below) is configured.
OPENAI_MODEL=gpt-4o-mini

# Generic OpenAI-compatible provider — Ollama, LM Studio, vLLM, Together, etc.
# Use this slot for a LOCAL model (or any OpenAI-API-compatible endpoint).
# API key may be optional for local servers; OpenAI SDK accepts any non-empty
# string. Then set background_intelligence.provider to "generic" in
# backend/config/providers.yaml.
#
# Extraction is usually a lightweight structured-output task and is often
# handled well by cost-efficient or local models, but quality varies — try
# `smriti checkpoint create --extract --dry-run` on a representative
# document before relying on a small model for real work.
#
# SMRITI_GENERIC_API_URL=http://localhost:11434/v1
# SMRITI_GENERIC_MODEL=llama3.1:8b
# SMRITI_GENERIC_API_KEY=not-required

# App
DEBUG=false
