Skip to content

← Back to YouLab

YouLab uses Pydantic Settings for type-safe environment configuration.

Terminal window
# Letta Server
LETTA_BASE_URL=http://localhost:8283
# LLM Provider (choose one)
OPENAI_API_KEY=sk-...
# or
ANTHROPIC_API_KEY=sk-ant-...
# HTTP Service
YOULAB_SERVICE_HOST=127.0.0.1
YOULAB_SERVICE_PORT=8100

Copy the example and configure:

Terminal window
cp .env.example .env
vim .env

VariableDefaultDescription
LETTA_BASE_URLhttp://localhost:8283Letta server URL
LETTA_API_KEYnullAPI key (if required)
VariableDefaultDescription
LLM_PROVIDERopenaiProvider: openai, anthropic, local
LLM_MODELgpt-4Default model
OPENAI_API_KEYnullOpenAI API key
ANTHROPIC_API_KEYnullAnthropic API key
VariableDefaultDescription
LOG_LEVELINFOLevel: DEBUG, INFO, WARNING, ERROR
LOG_JSONtrueJSON format (true for production)
SERVICE_NAMEyoulabService identifier
VariableDefaultDescription
LANGFUSE_ENABLEDfalseEnable Langfuse
LANGFUSE_PUBLIC_KEYnullPublic API key
LANGFUSE_SECRET_KEYnullSecret API key
LANGFUSE_HOSThttps://cloud.langfuse.comLangfuse host
VariableDefaultDescription
CORE_MEMORY_MAX_CHARS1500Max chars per memory block
ARCHIVAL_ROTATION_THRESHOLD0.8Rotation threshold (0-1)
VariableDefaultDescription
DEFAULT_AGENT_NAMEdefaultDefault agent name

All prefixed with YOULAB_SERVICE_:

VariableDefaultDescription
YOULAB_SERVICE_HOST127.0.0.1Bind host
YOULAB_SERVICE_PORT8100Bind port
YOULAB_SERVICE_API_KEYnullService authentication
YOULAB_SERVICE_LOG_LEVELINFOService log level
YOULAB_SERVICE_LETTA_BASE_URLhttp://localhost:8283Letta URL
YOULAB_SERVICE_LANGFUSE_ENABLEDtrueEnable tracing
YOULAB_SERVICE_LANGFUSE_PUBLIC_KEYnullLangfuse public key
YOULAB_SERVICE_LANGFUSE_SECRET_KEYnullLangfuse secret key
YOULAB_SERVICE_LANGFUSE_HOSThttps://cloud.langfuse.comLangfuse host
VariableDefaultDescription
YOULAB_SERVICE_HONCHO_ENABLEDtrueEnable Honcho message persistence
YOULAB_SERVICE_HONCHO_WORKSPACE_IDyoulabHoncho workspace identifier
YOULAB_SERVICE_HONCHO_API_KEYnullHoncho API key (required for production)
YOULAB_SERVICE_HONCHO_ENVIRONMENTdemoEnvironment: demo, local, or production

Terminal window
# .env for development
LETTA_BASE_URL=http://localhost:8283
OPENAI_API_KEY=sk-dev-key-here
LOG_LEVEL=DEBUG
LOG_JSON=false
LANGFUSE_ENABLED=false
Terminal window
# .env for production
LETTA_BASE_URL=http://youlab-server:8283
OPENAI_API_KEY=sk-prod-key-here
LOG_LEVEL=INFO
LOG_JSON=true
SERVICE_NAME=youlab-production
LANGFUSE_ENABLED=true
LANGFUSE_PUBLIC_KEY=pk-lf-xxx
LANGFUSE_SECRET_KEY=sk-lf-xxx
# Honcho (Theory of Mind)
YOULAB_SERVICE_HONCHO_ENABLED=true
YOULAB_SERVICE_HONCHO_ENVIRONMENT=production
YOULAB_SERVICE_HONCHO_API_KEY=your-honcho-api-key
YOULAB_SERVICE_HOST=0.0.0.0
YOULAB_SERVICE_PORT=8100
Terminal window
# When OpenWebUI runs in Docker
YOULAB_SERVICE_HOST=0.0.0.0
# Pipe uses: http://host.docker.internal:8100

YouLab uses two Pydantic settings classes for type-safe configuration.

Location: src/youlab_server/config/settings.py

ClassPrefixUse Case
Settings(none)CLI and library
ServiceSettingsYOULAB_SERVICE_HTTP service

General application settings, loaded from .env:

from youlab_server.config import get_settings
settings = get_settings()
print(settings.letta_base_url)

HTTP service-specific settings with YOULAB_SERVICE_ prefix:

from youlab_server.config.settings import ServiceSettings
settings = ServiceSettings()
uvicorn.run(app, host=settings.host, port=settings.port)
from unittest.mock import patch
def test_with_custom_settings():
with patch.object(settings, "langfuse_enabled", False):
result = get_langfuse()
assert result is None