Some checks failed
Rust CI / Security Audit (push) Has been cancelled
Rust CI / Check + Test + Lint (nightly) (push) Has been cancelled
Rust CI / Check + Test + Lint (stable) (push) Has been cancelled
mdBook Build & Deploy / Build mdBook (push) Has been cancelled
Nickel Type Check / Nickel Type Checking (push) Has been cancelled
mdBook Build & Deploy / Documentation Quality Check (push) Has been cancelled
mdBook Build & Deploy / Deploy to GitHub Pages (push) Has been cancelled
mdBook Build & Deploy / Notification (push) Has been cancelled
5.6 KiB
5.6 KiB
Platform Configs
Composed Nickel configurations ready for export.
Configuration Files
Composed configurations for VAPORA with different deployment modes:
vapora-solo.ncl- Solo mode (development)vapora-multiuser.ncl- Multiuser mode (team)vapora-enterprise.ncl- Enterprise mode (production)main.ncl- Entry point for exporting all configs
Each file combines:
- Schema - Structure definition from
vapora/main.ncl - Common Defaults - Base values for all modes
- Mode Defaults - Mode-specific overrides (solo/multiuser/enterprise)
- User customizations - Optional overrides (commented examples)
Composition Pattern
VAPORA Schema (vapora/main.ncl)
↓
Platform Common Defaults (platform/defaults/common/)
↓
Mode-Specific Defaults (platform/defaults/deployment/{mode}.ncl)
↓
User Customizations (optional)
↓
Final Configuration
Configuration Details
Solo Mode (vapora-solo.ncl)
Best for: Local development, testing, PoCs
Defaults:
- Host:
127.0.0.1(localhost only) - Backend: 2 workers, file-based database
- Agents: 3 max instances, no NATS
- Router: Cost tracking disabled
- Security: JWT only (no TLS, no MFA)
Customization examples:
# Enable debugging
monitoring.log_level = "debug",
# Change port
backend.port = 9001,
# Enable Ollama
llm_router.providers.ollama_enabled = true,
Multiuser Mode (vapora-multiuser.ncl)
Best for: Team development, staging, internal deployments
Defaults:
- Host:
0.0.0.0(network accessible) - Backend: 4 workers, remote SurrealDB
- Agents: 10 max instances, NATS enabled
- Router: Cost tracking enabled (per-role budgets)
- Security: TLS + MFA + audit logging
- Knowledge graph: 30-day retention
Customization examples:
# Set external domain
frontend.api_url = "https://api.vapora.internal:8001",
# Adjust team budgets
llm_router.budget_enforcement.role_limits = {
architect_cents = 750000, # $7500/month
developer_cents = 500000, # $5000/month
},
# Enable additional providers
providers.openai_enabled = true,
providers.gemini_enabled = true,
Enterprise Mode (vapora-enterprise.ncl)
Best for: Production deployments, large organizations, HA
Defaults:
- Host:
0.0.0.0(clustered) - Backend: 8 workers, 2000 max connections
- Agents: 50 instances, NATS cluster
- Router: All providers enabled, cost optimization
- Database: SurrealDB cluster, 100 pool size
- Security: TLS enforced, MFA required, audit enabled
- Observability: Prometheus, OpenTelemetry, tracing
- Knowledge graph: 90-day retention
- Backup: Every 6 hours
Customization examples:
# Set production domain
frontend.api_url = "https://api.vapora.production.com",
# All providers with custom Ollama endpoint
ollama_url = "http://ollama-cluster.production:11434",
# Aggressive cost control
llm_router.budget_enforcement.near_threshold_percent = 70,
# Extended learning window
agents.learning.recency_window_days = 30,
Usage Patterns
1. Export Solo to JSON
nickel export schemas/platform/configs/vapora-solo.ncl > vapora-solo.json
2. Export Multiuser to JSON
nickel export schemas/platform/configs/vapora-multiuser.ncl > vapora-multiuser.json
3. Export Enterprise to JSON
nickel export schemas/platform/configs/vapora-enterprise.ncl > vapora-enterprise.json
4. Export with User Customizations
Create a custom config file that imports and customizes:
# custom-vapora.ncl
let helpers = import "schemas/platform/common/helpers.ncl" in
let schema = import "schemas/vapora/main.ncl" in
let defaults = import "schemas/platform/defaults/deployment/multiuser.ncl" in
helpers.compose_config schema defaults {
backend.port = 9001,
llm_router.providers.ollama_enabled = true,
monitoring.log_level = "debug",
}
Export:
nickel export custom-vapora.ncl > vapora-custom.json
5. Generate TOML from JSON
# Export to JSON, then convert via template
nickel export schemas/platform/configs/vapora-solo.ncl | \
jinja2 schemas/platform/templates/configs/toml.j2 > vapora.toml
6. Generate Docker Compose
# Generate from multiuser config
nickel export schemas/platform/configs/vapora-multiuser.ncl | \
jinja2 schemas/platform/templates/docker-compose/docker-compose.yaml.j2 > docker-compose.yml
# Deploy
docker compose up -d
7. Generate Kubernetes ConfigMap
# Generate from enterprise config
nickel export schemas/platform/configs/vapora-enterprise.ncl | \
jinja2 schemas/platform/templates/kubernetes/configmap.yaml.j2 > configmap.yaml
# Deploy
kubectl apply -f configmap.yaml
Exporting All Configurations
Use the main entry point to export all modes:
nickel export schemas/platform/configs/main.ncl > all-configs.json
This generates:
{
"solo": { ... },
"multiuser": { ... },
"enterprise": { ... }
}
Composition Details
Each config uses the helper functions to compose:
let helpers = import "../common/helpers.ncl" in
helpers.compose_config schema defaults_mode user_customizations
This merges in order:
schema- Defines structure and typesdefaults_mode- Overrides with mode-specific values- User customizations - Final overrides
References
- Parent:
../README.md - VAPORA schema:
../../vapora/README.md - Platform helpers:
../common/helpers.ncl - Platform defaults:
../defaults/README.md - Platform values:
../values/README.md - Templates:
../templates/README.md - Constraints:
../constraints/README.md - Validators:
../validators/README.md