Skip to main content

Configuration Reference

This reference covers all configuration options available in Emma, including environment variables, feature flags, and runtime settings.

Environment variables

Required variables

VariableDescriptionExampleNotes
INFRAHUB_ADDRESSURL of Infrahub instancehttp://localhost:8000Must be accessible from Emma
INFRAHUB_API_TOKENAPI authentication token06438eb2-8019-4776-878c-0941b1f1d1ecGenerate in Infrahub admin

Optional variables

VariableDescriptionDefaultExample
INFRAHUB_TIMEOUTAPI request timeout (seconds)3060
INFRAHUB_RETRIESNumber of API retry attempts35
EMMA_FEATURE_FLAGSComma-separated experimental features""query_builder,template_builder
STREAMLIT_SERVER_PORTPort for Emma web interface85018080
STREAMLIT_SERVER_ADDRESSInterface to bind to0.0.0.0127.0.0.1

AI configuration

VariableDescriptionDefaultExample
OPENAI_API_KEYOpenAI API key for AI features""sk-...
OPENAI_MODELAI model to usegpt-3.5-turbogpt-4
OPENAI_TEMPERATUREAI creativity level (0.0-2.0)0.70.3
OPENAI_MAX_TOKENSMaximum tokens per AI response20004000

Logging configuration

VariableDescriptionDefaultExample
STREAMLIT_LOGGER_LEVELStreamlit logging levelINFODEBUG
PYTHONPATHPython path for modules""/app
LOG_LEVELEmma application log levelINFODEBUG

Feature flags

Feature flags enable experimental functionality in Emma. Set via EMMA_FEATURE_FLAGS environment variable.

Available flags

FlagDescriptionStatusDependencies
query_builderGraphQL query builder interfaceAlphaNone
template_builderTemplate creation and managementAlphaNone
advanced_importEnhanced data import featuresBetaNone
bulk_operationsBulk schema and data operationsAlphaNone
ai_suggestionsAI-powered suggestions in UIExperimentalOpenAI API key

Setting feature flags

Single flag:

export EMMA_FEATURE_FLAGS="query_builder"

Multiple flags:

export EMMA_FEATURE_FLAGS="query_builder,template_builder,ai_suggestions"

Docker Compose:

environment:
- EMMA_FEATURE_FLAGS=query_builder,template_builder

Kubernetes:

env:
- name: EMMA_FEATURE_FLAGS
value: "query_builder,template_builder"

Runtime configuration

In-app settings

Emma provides runtime configuration through the web interface:

Connection settings

  • Infrahub Address: Override environment variable for current session
  • API Token: Override environment variable for current session
  • Branch: Select Infrahub branch to work with
  • Timeout: Adjust request timeout for slow connections

AI settings

  • OpenAI API Key: Configure AI features
  • Model Selection: Choose AI model (gpt-3.5-turbo, gpt-4)
  • Temperature: Adjust AI creativity (0.0 = deterministic, 2.0 = very creative)
  • Max Tokens: Limit AI response length

Import/export settings

  • Batch Size: Records to process per batch (default: 100)
  • Validation Level: Strict, moderate, or lenient validation
  • Error Handling: Stop on error or continue with warnings
  • Relationship Resolution: Automatic or manual relationship handling

Display settings

  • Theme: Light or dark mode
  • Page Layout: Wide or narrow layout
  • Auto-refresh: Automatic data refresh interval
  • Pagination: Number of items per page

Configuration persistence

Settings configured in the Emma interface are stored in:

Local Development:

  • Browser session storage (temporary)
  • Browser local storage (persistent across sessions)

Docker Deployment:

  • Volume-mounted configuration file
  • Environment variables take precedence

Kubernetes:

  • ConfigMaps for application settings
  • Secrets for sensitive data (API keys, tokens)

Deployment configurations

Docker Compose

Complete docker-compose.yml configuration:

version: '3.8'
services:
emma:
build: .
ports:
- "8501:8501"
environment:
# Required
- INFRAHUB_ADDRESS=http://infrahub:8000
- INFRAHUB_API_TOKEN=${INFRAHUB_API_TOKEN}

# Optional
- INFRAHUB_TIMEOUT=60
- EMMA_FEATURE_FLAGS=query_builder,template_builder
- OPENAI_API_KEY=${OPENAI_API_KEY}

# Streamlit Configuration
- STREAMLIT_SERVER_PORT=8501
- STREAMLIT_SERVER_ADDRESS=0.0.0.0
- STREAMLIT_LOGGER_LEVEL=INFO

volumes:
- emma-config:/app/config
networks:
- infrahub-network
depends_on:
- infrahub
restart: unless-stopped

volumes:
emma-config:

networks:
infrahub-network:
external: true

Kubernetes

Emma deployment configuration:

apiVersion: apps/v1
kind: Deployment
metadata:
name: emma
labels:
app: emma
spec:
replicas: 1
selector:
matchLabels:
app: emma
template:
metadata:
labels:
app: emma
spec:
containers:
- name: emma
image: emma:latest
ports:
- containerPort: 8501
env:
- name: INFRAHUB_ADDRESS
value: "http://infrahub:8000"
- name: INFRAHUB_API_TOKEN
valueFrom:
secretKeyRef:
name: emma-secrets
key: api-token
- name: OPENAI_API_KEY
valueFrom:
secretKeyRef:
name: emma-secrets
key: openai-key
- name: EMMA_FEATURE_FLAGS
valueFrom:
configMapKeyRef:
name: emma-config
key: feature-flags
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
volumeMounts:
- name: config
mountPath: /app/config
volumes:
- name: config
configMap:
name: emma-config

---
apiVersion: v1
kind: Service
metadata:
name: emma
spec:
selector:
app: emma
ports:
- port: 8501
targetPort: 8501
type: ClusterIP

---
apiVersion: v1
kind: ConfigMap
metadata:
name: emma-config
data:
feature-flags: "query_builder,template_builder"

---
apiVersion: v1
kind: Secret
metadata:
name: emma-secrets
type: Opaque
data:
api-token: <base64-encoded-token>
openai-key: <base64-encoded-key>

Security configuration

API token security

Best Practices:

  • Use dedicated service accounts for Emma
  • Rotate tokens regularly
  • Limit token permissions to required operations
  • Never log or expose tokens in plaintext

Token Permissions:

Emma requires the following Infrahub permissions:

  • Schema read/write access
  • Data read/write access
  • Branch access (if using feature branches)
  • API access

Network security

Firewall Rules:

  • Emma port (default 8501) should be restricted to authorized users
  • Infrahub connection should use HTTPS in production
  • Consider VPN or private networks for sensitive deployments

TLS/SSL: For production deployments, configure TLS:

# Using reverse proxy (nginx, traefik, etc.)
# Emma itself runs HTTP, proxy handles HTTPS

Data security

Sensitive Data Handling:

  • API tokens stored securely (secrets management)
  • Temporary files cleaned up automatically
  • No sensitive data logged by default
  • CSV uploads processed in memory when possible

Performance configuration

Resource limits

Memory:

  • Minimum: 256MB
  • Recommended: 512MB
  • Large datasets: 1GB+

CPU:

  • Minimum: 0.1 cores
  • Recommended: 0.5 cores
  • Heavy AI usage: 1+ cores

Storage:

  • Application: ~100MB
  • Temporary files: Variable based on data volume
  • Configuration: <1MB

Optimization settings

For Large Datasets:

# Increase timeouts
export INFRAHUB_TIMEOUT=120

# Optimize batch sizes
# Set in Emma UI: Import/Export Settings → Batch Size: 50

For Slow Networks:

# Increase retries and timeout
export INFRAHUB_TIMEOUT=60
export INFRAHUB_RETRIES=5

For High-Volume Usage:

# Enable performance features
export EMMA_FEATURE_FLAGS="bulk_operations,advanced_import"

Configuration validation

Emma validates configuration on startup and provides helpful error messages:

Common Validation Errors:

ERROR: INFRAHUB_ADDRESS is required
ERROR: Cannot connect to Infrahub at http://localhost:8000
WARNING: OPENAI_API_KEY not set - AI features disabled
WARNING: Unknown feature flag 'invalid_flag' ignored

Configuration Check:

# Test configuration without starting full application
poetry run python -c "from emma.utils import validate_config; validate_config()"

Migration and upgrades

Configuration migration

When upgrading Emma, configuration may need updates:

Version 1.x to 2.x:

  • New required environment variables
  • Changed feature flag names
  • Updated AI model configurations

Check Release Notes: Always review release notes for configuration changes and migration steps.

Backup configuration

Docker:

# Backup configuration volume
docker run --rm -v emma-config:/data -v $(pwd):/backup busybox tar czf /backup/emma-config.tar.gz -C /data .

Kubernetes:

# Export ConfigMaps and Secrets
kubectl get configmap emma-config -o yaml > emma-config-backup.yaml
kubectl get secret emma-secrets -o yaml > emma-secrets-backup.yaml

This configuration reference provides comprehensive guidance for setting up Emma in various environments. For troubleshooting configuration issues, see the Troubleshooting Guide.