Port 4000 collides with too many dev tools (Phoenix, GraphQL tools, etc.). Switch to 14242 — unregistered with IANA, no known conflicts, safely within the User Ports range and outside Linux ephemeral port range (32768+). Updates all hardcoded defaults across gateway, web client, CLI commands, playwright config, .env.example, and docs. Bumps @mosaic/cli and @mosaic/mosaic to 0.0.14. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
155 lines
7.6 KiB
Plaintext
155 lines
7.6 KiB
Plaintext
# ─────────────────────────────────────────────────────────────────────────────
|
|
# Mosaic — Environment Variables Reference
|
|
# Copy this file to .env and fill in the values for your deployment.
|
|
# Lines beginning with # are comments; optional vars are commented out.
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
|
|
# ─── Database (PostgreSQL 17 + pgvector) ─────────────────────────────────────
|
|
# Full connection string used by the gateway, ORM, and migration runner.
|
|
# Port 5433 avoids conflict with a host-side PostgreSQL instance.
|
|
DATABASE_URL=postgresql://mosaic:mosaic@localhost:5433/mosaic
|
|
|
|
# Docker Compose host-port override for the PostgreSQL container (default: 5433)
|
|
# PG_HOST_PORT=5433
|
|
|
|
|
|
# ─── Queue (Valkey 8 / Redis-compatible) ─────────────────────────────────────
|
|
# Port 6380 avoids conflict with a host-side Redis/Valkey instance.
|
|
VALKEY_URL=redis://localhost:6380
|
|
|
|
# Docker Compose host-port override for the Valkey container (default: 6380)
|
|
# VALKEY_HOST_PORT=6380
|
|
|
|
|
|
# ─── Gateway ─────────────────────────────────────────────────────────────────
|
|
# TCP port the NestJS/Fastify gateway listens on (default: 14242)
|
|
GATEWAY_PORT=14242
|
|
|
|
# Comma-separated list of allowed CORS origins.
|
|
# Must include the web app origin in production.
|
|
GATEWAY_CORS_ORIGIN=http://localhost:3000
|
|
|
|
|
|
# ─── Auth (BetterAuth) ───────────────────────────────────────────────────────
|
|
# REQUIRED — random secret used to sign sessions and tokens.
|
|
# Generate with: openssl rand -base64 32
|
|
BETTER_AUTH_SECRET=change-me-to-a-random-32-char-string
|
|
|
|
# Public base URL of the gateway (used by BetterAuth for callback URLs)
|
|
BETTER_AUTH_URL=http://localhost:14242
|
|
|
|
|
|
# ─── Web App (Next.js) ───────────────────────────────────────────────────────
|
|
# Public gateway URL — accessible from the browser, not just the server.
|
|
NEXT_PUBLIC_GATEWAY_URL=http://localhost:14242
|
|
|
|
|
|
# ─── OpenTelemetry ───────────────────────────────────────────────────────────
|
|
# OTLP HTTP endpoint (otel-collector or any OpenTelemetry-compatible backend)
|
|
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
|
|
|
|
# Service name shown in traces
|
|
OTEL_SERVICE_NAME=mosaic-gateway
|
|
|
|
|
|
# ─── AI Providers ────────────────────────────────────────────────────────────
|
|
|
|
# Ollama (local models — set OLLAMA_BASE_URL to enable)
|
|
# OLLAMA_BASE_URL=http://localhost:11434
|
|
# OLLAMA_HOST is a legacy alias for OLLAMA_BASE_URL
|
|
# OLLAMA_HOST=http://localhost:11434
|
|
# Comma-separated list of Ollama model IDs to register (default: llama3.2,codellama,mistral)
|
|
# OLLAMA_MODELS=llama3.2,codellama,mistral
|
|
|
|
# Anthropic (claude-sonnet-4-6, claude-opus-4-6, claude-haiku-4-5)
|
|
# ANTHROPIC_API_KEY=sk-ant-...
|
|
|
|
# OpenAI (gpt-4o, gpt-4o-mini, o3-mini)
|
|
# OPENAI_API_KEY=sk-...
|
|
|
|
# Z.ai / GLM (glm-4.5, glm-4.5-air, glm-4.5-flash)
|
|
# ZAI_API_KEY=...
|
|
|
|
# Custom providers — JSON array of provider configs
|
|
# Format: [{"id":"<id>","baseUrl":"<url>","apiKey":"<key>","models":[{"id":"<model-id>","name":"<label>"}]}]
|
|
# MOSAIC_CUSTOM_PROVIDERS=
|
|
|
|
|
|
# ─── Embedding Service ───────────────────────────────────────────────────────
|
|
# OpenAI-compatible embeddings endpoint (default: OpenAI)
|
|
# EMBEDDING_API_URL=https://api.openai.com/v1
|
|
# EMBEDDING_MODEL=text-embedding-3-small
|
|
|
|
|
|
# ─── Log Summarization Service ───────────────────────────────────────────────
|
|
# OpenAI-compatible chat completions endpoint for log summarization (default: OpenAI)
|
|
# SUMMARIZATION_API_URL=https://api.openai.com/v1
|
|
# SUMMARIZATION_MODEL=gpt-4o-mini
|
|
|
|
# Cron schedule for summarization job (default: every 6 hours)
|
|
# SUMMARIZATION_CRON=0 */6 * * *
|
|
|
|
# Cron schedule for log tier management (default: daily at 03:00)
|
|
# TIER_MANAGEMENT_CRON=0 3 * * *
|
|
|
|
|
|
# ─── Agent ───────────────────────────────────────────────────────────────────
|
|
# Filesystem sandbox root for agent file tools (default: process.cwd())
|
|
# AGENT_FILE_SANDBOX_DIR=/var/lib/mosaic/sandbox
|
|
|
|
# Comma-separated list of tool names available to non-admin users.
|
|
# Leave unset to allow all tools for all authenticated users.
|
|
# AGENT_USER_TOOLS=read_file,list_directory,search_files
|
|
|
|
# System prompt injected into every agent session (optional)
|
|
# AGENT_SYSTEM_PROMPT=You are a helpful assistant.
|
|
|
|
|
|
# ─── MCP Servers ─────────────────────────────────────────────────────────────
|
|
# JSON array of MCP server configs — set to enable MCP tool integration.
|
|
# Each entry: {"name":"<id>","url":"<http-or-sse-url>"}
|
|
# MCP_SERVERS=[{"name":"my-mcp","url":"http://localhost:3100/sse"}]
|
|
|
|
|
|
# ─── Coordinator ─────────────────────────────────────────────────────────────
|
|
# Root directory used to scope coordinator (worktree/repo) operations.
|
|
# Defaults to the monorepo root auto-detected from process.cwd().
|
|
# MOSAIC_WORKSPACE_ROOT=/home/user/projects/mosaic
|
|
|
|
|
|
# ─── Discord Plugin (optional — set DISCORD_BOT_TOKEN to enable) ─────────────
|
|
# DISCORD_BOT_TOKEN=
|
|
# DISCORD_GUILD_ID=
|
|
# DISCORD_GATEWAY_URL=http://localhost:14242
|
|
|
|
|
|
# ─── Telegram Plugin (optional — set TELEGRAM_BOT_TOKEN to enable) ───────────
|
|
# TELEGRAM_BOT_TOKEN=
|
|
# TELEGRAM_GATEWAY_URL=http://localhost:14242
|
|
|
|
|
|
# ─── SSO Providers (add credentials to enable) ───────────────────────────────
|
|
|
|
# --- Authentik (optional — set AUTHENTIK_CLIENT_ID to enable) ---
|
|
# AUTHENTIK_ISSUER=https://auth.example.com/application/o/mosaic/
|
|
# AUTHENTIK_CLIENT_ID=
|
|
# AUTHENTIK_CLIENT_SECRET=
|
|
|
|
# --- WorkOS (optional — set WORKOS_CLIENT_ID to enable) ---
|
|
# WORKOS_ISSUER=https://your-company.authkit.app
|
|
# WORKOS_CLIENT_ID=client_...
|
|
# WORKOS_CLIENT_SECRET=sk_live_...
|
|
|
|
# --- Keycloak (optional — set KEYCLOAK_CLIENT_ID to enable) ---
|
|
# KEYCLOAK_ISSUER=https://auth.example.com/realms/master
|
|
# Legacy alternative if you prefer to compose the issuer from separate vars:
|
|
# KEYCLOAK_URL=https://auth.example.com
|
|
# KEYCLOAK_REALM=master
|
|
# KEYCLOAK_CLIENT_ID=mosaic
|
|
# KEYCLOAK_CLIENT_SECRET=
|
|
|
|
# Feature flags — set to true alongside provider credentials to show SSO buttons in the UI
|
|
# NEXT_PUBLIC_WORKOS_ENABLED=true
|
|
# NEXT_PUBLIC_KEYCLOAK_ENABLED=true
|