Skip to main content

Environment Variables

Complete reference guide for configuring CoW Protocol BFF services. Copy .env.example to .env for local development or .env.docker for containerized deployments.

Application Settings

VariableDescriptionDefault
VERSIONApplication versionUNKNOWN
HOSTServer host addresslocalhost
PORTAPI service port1500
LOG_LEVELLogging level (debug/info/warn/error)info
LOG_PRETTYHuman-readable log formatfalse

Blockchain RPC Endpoints

Configure RPC endpoints for each supported network:
# Ethereum Mainnet
RPC_URL_1=https://mainnet.infura.io/v3/your-key

# Gnosis Chain
RPC_URL_100=https://rpc.gnosischain.com

# Polygon
RPC_URL_137=https://polygon-rpc.com

# Arbitrum
RPC_URL_42161=https://arb1.arbitrum.io/rpc

# Base
RPC_URL_8453=https://mainnet.base.org

# Avalanche
RPC_URL_43114=https://api.avax.network/ext/bc/C/rpc

# Sepolia Testnet
RPC_URL_11155111=https://sepolia.infura.io/v3/your-key
WebSocket URLs (wss://) are recommended for real-time event monitoring.

Database Configuration

Primary Database (PostgreSQL)

DATABASE_ENABLED=true
DATABASE_HOST=localhost
DATABASE_PORT=5432
DATABASE_USERNAME=bff-db-user
DATABASE_PASSWORD=bff-db-password
DATABASE_NAME=bff-db

Orderbook Database (Read-only)

ORDERBOOK_DATABASE_HOST=localhost
ORDERBOOK_DATABASE_PORT=5432
ORDERBOOK_DATABASE_USERNAME=orderbook_user
ORDERBOOK_DATABASE_PASSWORD=password

Analytics Database

COW_ANALYTICS_DATABASE_HOST=localhost
COW_ANALYTICS_DATABASE_PORT=5432
COW_ANALYTICS_DATABASE_USERNAME=analytics_user
COW_ANALYTICS_DATABASE_PASSWORD=password
COW_ANALYTICS_DATABASE_NAME=cow_analytics

Redis Cache

Optional but highly recommended for production to reduce RPC calls.
REDIS_ENABLED=true
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_USER=cow_redis
REDIS_PASSWORD=cow_password

RabbitMQ

Required for notification services.
QUEUE_HOST=localhost
QUEUE_PORT=5672
QUEUE_USER=rabbit
QUEUE_PASSWORD=my-rabbit-password

External Services

CoW Protocol API

COW_API_BASE_URL=https://api.cow.fi

CoinGecko

COINGECKO_API_KEY=your_api_key

Tenderly (Transaction Simulation)

TENDERLY_API_KEY=your_api_key
TENDERLY_PROJECT_NAME=your_project
TENDERLY_ORG_NAME=your_organization

Moralis

MORALIS_API_KEY=your_api_key

Ethplorer

ETHPLORER_API_KEY=your_api_key

Dune Analytics

DUNE_API_KEY=your_api_key

Socket.tech

SOCKET_BASE_URL=https://api.socket.tech
SOCKET_API_KEY=your_api_key

CMS Integration

CMS_ENABLED=true
CMS_API_KEY=your_api_key
CMS_BASE_URL=https://your-cms-url

Notification Producer

NOTIFICATIONS_PRODUCER_CHAINS=1,100,137

Telegram Bot

TELEGRAM_SECRET=your_bot_token

TWAP Service

TWAP_BASE_URL=http://localhost:3000

JWT Authentication

JWT_PASSPHRASE=your_secure_passphrase
JWT_CERTIFICATE=your_certificate

CORS Configuration

CORS_ORIGIN=https://your-domain.com

Security Considerations

  • Never commit sensitive environment files to version control
  • Use secrets management systems for production:
    • AWS Secrets Manager
    • HashiCorp Vault
    • Kubernetes Secrets
  • Use strong, unique values for all passwords and API keys
  • Rotate credentials regularly

Example Configurations

Docker Compose

# .env.docker
DATABASE_HOST=db
REDIS_HOST=redis
QUEUE_HOST=queue
LOG_LEVEL=info
LOG_PRETTY=false

Local Development

# .env
DATABASE_HOST=localhost
REDIS_HOST=localhost
QUEUE_HOST=localhost
LOG_LEVEL=debug
LOG_PRETTY=true

Service-Specific Requirements

API Service

  • Requires: COW_API_BASE_URL, database configuration
  • Optional: Redis, Tenderly, CoinGecko, Moralis, Ethplorer, Socket

TWAP Service

  • Requires: Database configuration, Orderbook database
  • Optional: Redis

Notification Producer

  • Requires: RPC endpoints, database, RabbitMQ
  • Optional: Redis, CMS

Telegram Bot

  • Requires: TELEGRAM_SECRET, RabbitMQ, database
  • Optional: Redis
Last modified on March 4, 2026