OpenSynodOpenSynod
Home
  • What is OpenSynod?
  • How It Works
  • Features
  • Screenshots
  • Demo Videos
  • Installation Guide
  • Configuration
  • Under the Hood
Home
  • What is OpenSynod?
  • How It Works
  • Features
  • Screenshots
  • Demo Videos
  • Installation Guide
  • Configuration
  • Under the Hood
  • Getting Started

    • Installation Guide
    • Configuration

Configuration

OpenSynod is configured via environment variables. In local development, these are loaded from a .env file in the backend directory.

Application

VariableDefaultDescription
ENVIRONMENTdevelopmentdevelopment or production
LOG_LEVELINFOLogging level: DEBUG, INFO, WARNING, ERROR
API_PREFIX/api/v1URL prefix for all REST endpoints

Database

VariableDefaultDescription
DATABASE_URLpostgresql+asyncpg://postgres:postgres@localhost:5432/opensynodPostgreSQL connection string. Must use the asyncpg driver.

Redis

VariableDefaultDescription
REDIS_URLredis://localhost:6379/0Redis connection string

Authentication

JWT signing uses RS256 (asymmetric). Generate a key pair and provide the PEM-encoded values.

VariableDefaultDescription
JWT_PRIVATE_KEY(required)PEM-encoded RSA private key for signing JWTs
JWT_PUBLIC_KEY(required)PEM-encoded RSA public key for verification
JWT_ALGORITHMRS256Signing algorithm (do not change)
ACCESS_TOKEN_EXPIRE_MINUTES15Access token lifetime in minutes
REFRESH_TOKEN_EXPIRE_DAYS30Refresh token lifetime in days

Generating keys:

openssl genrsa -out private.pem 4096
openssl rsa -in private.pem -pubout -out public.pem

LLM Providers

At least one LLM provider must be configured.

Anthropic

VariableDescription
ANTHROPIC_API_KEYAnthropic API key

OpenAI / Compatible Endpoint

VariableDescription
OPENAI_API_KEYOpenAI API key
OPENAI_BASE_URLOverride base URL for OpenAI-compatible endpoints (LiteLLM, OpenRouter, custom proxy)

If OPENAI_BASE_URL is set, all OpenAI client calls use this base URL instead of the default OpenAI endpoint.

Google

VariableDescription
GOOGLE_API_KEYGoogle AI API key (Gemini)

Ollama

VariableDescription
OLLAMA_BASE_URLOllama server URL
OLLAMA_MODEL_PRIMARYModel for moderator and advocate roles
OLLAMA_MODEL_REASONINGModel for devil's advocate / skeptic roles
OLLAMA_MODEL_EXPERTModel for neutral expert roles
OLLAMA_MODEL_SUPPORTModel for secondary / support roles

Tool System — Web Search

VariableDefaultDescription
SEARCH_PROVIDERtavilySearch provider: tavily, brave, bing, serper
TAVILY_API_KEY(empty)Tavily API key (used when SEARCH_PROVIDER=tavily)
BRAVE_API_KEY(empty)Brave Search API key
SERPER_API_KEY(empty)Serper API key

Cost Control

VariableDefaultDescription
DEFAULT_ORG_COST_LIMIT_USD100.0Default monthly LLM spend limit per organization in USD

Development

VariableDefaultDescription
MOCK_LLM_CALLSfalseWhen true, replaces all LLM calls with a mock client that returns canned responses. Useful for frontend development and integration testing without API keys.

Local Development (.env)

Copy .env.example to .env in the backend/ directory and fill in the values.

Ollama in Docker Compose

When running Ollama locally and accessing it from within Docker Compose, use http://host.docker.internal:<port> as the OLLAMA_BASE_URL. This resolves to the host machine from within a Docker container on macOS and Windows.

Contributors: Vijay
Prev
Installation Guide