Merge _configs/ into config/ for single configuration directory. Update all path references. Changes: - Move _configs/* to config/ - Update .gitignore for new patterns - No code references to _configs/ found Impact: -1 root directory (layout_conventions.md compliance)
323 lines
12 KiB
TOML
323 lines
12 KiB
TOML
# syntaxis Installation Configuration
|
|
#
|
|
# This file defines installation presets, database backends, and service configurations.
|
|
# It serves as the source of truth for the enhanced installer system.
|
|
#
|
|
# Usage:
|
|
# nu scripts/install-syntaxis.nu --preset local
|
|
# nu scripts/install-syntaxis.nu --preset dev
|
|
# nu scripts/install-syntaxis.nu --config my-install.toml
|
|
|
|
[version]
|
|
installation_config_version = "1.0.0"
|
|
created_at = "2025-11-19"
|
|
|
|
# ==============================================================================
|
|
# DEFAULT INSTALLATION SETTINGS
|
|
# ==============================================================================
|
|
[defaults]
|
|
# Default preset if not specified
|
|
preset = "local"
|
|
|
|
# provctl integration mode
|
|
# - "auto": Use provctl if available, fallback to manual setup
|
|
# - "required": Fail if provctl not available (for advanced presets)
|
|
# - "disabled": Never use provctl (manual setup only)
|
|
provctl_mode = "auto"
|
|
|
|
# Interactive mode (ask user questions during installation)
|
|
interactive = false
|
|
|
|
# Generate installation config without installing
|
|
generate_config_only = false
|
|
|
|
# ==============================================================================
|
|
# INSTALLATION PRESETS
|
|
# ==============================================================================
|
|
|
|
# Preset: MINIMAL (ultra-lightweight, CLI only)
|
|
# Perfect for: Embedded systems, CI/CD agents, headless servers
|
|
[preset.minimal]
|
|
name = "Minimal (CLI Only)"
|
|
description = "Ultra-lightweight setup - CLI tool only, no TUI/API/Dashboard"
|
|
database_backend = "sqlite"
|
|
surrealdb_mode = "none"
|
|
auto_start_services = false
|
|
provctl_required = false
|
|
contexts = ["cli-only", "embedded", "headless", "minimal-overhead"]
|
|
|
|
[preset.minimal.services]
|
|
syntaxis_cli = { enabled = true, auto_start = false }
|
|
syntaxis_tui = { enabled = false }
|
|
syntaxis_api = { enabled = false }
|
|
dashboard = { enabled = false }
|
|
surrealdb = { enabled = false }
|
|
nats = { enabled = false }
|
|
|
|
[preset.minimal.notes]
|
|
setup_time = "~3 minutes (CLI only)"
|
|
prerequisites = ["Rust toolchain (for building)"]
|
|
next_step = "Run: syntaxis-cli init my-project"
|
|
use_cases = ["CI/CD agents", "Embedded systems", "Server-side only", "Minimal footprint"]
|
|
|
|
# Preset: LOCAL (default - simple development on laptop)
|
|
# Minimal setup: SQLite, no external services, binaries only
|
|
[preset.local]
|
|
name = "Local Development"
|
|
description = "Simple development setup on laptop - SQLite only, no external services"
|
|
database_backend = "sqlite"
|
|
surrealdb_mode = "none"
|
|
auto_start_services = false
|
|
provctl_required = false
|
|
contexts = ["single-user", "offline-friendly", "minimal-setup"]
|
|
|
|
[preset.local.services]
|
|
syntaxis_cli = { enabled = true, auto_start = false }
|
|
syntaxis_tui = { enabled = true, auto_start = false }
|
|
syntaxis_api = { enabled = false, auto_start = false }
|
|
dashboard = { enabled = false, auto_start = false }
|
|
surrealdb = { enabled = false, auto_start = false }
|
|
nats = { enabled = false, auto_start = false }
|
|
|
|
[preset.local.notes]
|
|
setup_time = "~5 minutes (binaries only)"
|
|
prerequisites = ["Rust toolchain (for building)"]
|
|
next_step = "Run: cargo build --release"
|
|
|
|
# Preset: DEV (development with services)
|
|
# Full services: SurrealDB server mode, NATS, syntaxis API, dashboard
|
|
[preset.dev]
|
|
name = "Development with Services"
|
|
description = "Development setup with local SurrealDB server, NATS, API and dashboard"
|
|
database_backend = "surrealdb"
|
|
surrealdb_mode = "server"
|
|
surrealdb_url = "ws://127.0.0.1:8000"
|
|
auto_start_services = true
|
|
provctl_required = false
|
|
provctl_recommended = true
|
|
contexts = ["multi-service", "local-development", "testing"]
|
|
|
|
[preset.dev.services]
|
|
syntaxis_cli = { enabled = true, auto_start = false }
|
|
syntaxis_tui = { enabled = true, auto_start = false }
|
|
syntaxis_api = { enabled = true, auto_start = true, port = 3000 }
|
|
dashboard = { enabled = true, auto_start = true, port = 8080 }
|
|
surrealdb = { enabled = true, auto_start = true, port = 8000, mode = "server" }
|
|
nats = { enabled = true, auto_start = true, port = 4222 }
|
|
|
|
[preset.dev.notes]
|
|
setup_time = "~10-15 minutes (with service setup)"
|
|
prerequisites = ["Rust toolchain", "SurrealDB CLI (optional: provctl)", "Docker (optional)"]
|
|
next_step = "Run: provctl start surrealdb && provctl start nats"
|
|
|
|
# Preset: STAGING (integration/CI-CD environment)
|
|
# Docker-based: SurrealDB in Docker, NATS, API, monitoring
|
|
[preset.staging]
|
|
name = "Staging/CI-CD"
|
|
description = "Staging environment with Docker services, monitoring, and health checks"
|
|
database_backend = "surrealdb"
|
|
surrealdb_mode = "docker"
|
|
surrealdb_url = "ws://surrealdb:8000"
|
|
auto_start_services = true
|
|
provctl_required = false
|
|
provctl_recommended = true
|
|
contexts = ["containerized", "ci-cd", "monitoring"]
|
|
|
|
[preset.staging.services]
|
|
syntaxis_cli = { enabled = true, auto_start = false }
|
|
syntaxis_tui = { enabled = true, auto_start = false }
|
|
syntaxis_api = { enabled = true, auto_start = true, port = 3000 }
|
|
dashboard = { enabled = true, auto_start = true, port = 8080 }
|
|
surrealdb = { enabled = true, auto_start = true, port = 8000, mode = "docker", image = "surrealdb/surrealdb:latest" }
|
|
nats = { enabled = true, auto_start = true, port = 4222, mode = "docker", image = "nats:2.10-alpine" }
|
|
prometheus = { enabled = true, auto_start = true, port = 9090 }
|
|
|
|
[preset.staging.notes]
|
|
setup_time = "~20 minutes (with Docker setup)"
|
|
prerequisites = ["Docker", "Docker Compose", "provctl (recommended)"]
|
|
next_step = "Run: docker-compose -f docker/docker-compose.yml up"
|
|
|
|
# Preset: PRODUCTION (Kubernetes/managed deployment)
|
|
# Kubernetes-based: SurrealDB cluster, NATS cluster, TLS, monitoring
|
|
[preset.production]
|
|
name = "Production"
|
|
description = "Production deployment with Kubernetes, TLS, clustering, and enterprise monitoring"
|
|
database_backend = "surrealdb"
|
|
surrealdb_mode = "kubernetes"
|
|
surrealdb_url = "ws://surrealdb.syntaxis.svc.cluster.local:8000"
|
|
auto_start_services = false # Managed by Kubernetes
|
|
provctl_required = false
|
|
provctl_recommended = false # Kubernetes manages services
|
|
contexts = ["kubernetes", "high-availability", "enterprise"]
|
|
|
|
[preset.production.services]
|
|
syntaxis_cli = { enabled = true, auto_start = false }
|
|
syntaxis_tui = { enabled = true, auto_start = false }
|
|
syntaxis_api = { enabled = true, auto_start = false, replicas = 3, port = 3000 }
|
|
dashboard = { enabled = true, auto_start = false, replicas = 2, port = 8080 }
|
|
surrealdb = { enabled = true, auto_start = false, replicas = 3, port = 8000, mode = "kubernetes" }
|
|
nats = { enabled = true, auto_start = false, replicas = 3, port = 4222, mode = "kubernetes" }
|
|
prometheus = { enabled = true, auto_start = false, port = 9090 }
|
|
grafana = { enabled = true, auto_start = false, port = 3001 }
|
|
|
|
[preset.production.notes]
|
|
setup_time = "~30-60 minutes (with K8s setup)"
|
|
prerequisites = ["Kubernetes cluster", "kubectl", "Helm (optional)", "TLS certificates"]
|
|
next_step = "Run: kubectl apply -f kubernetes/"
|
|
|
|
# Preset: CUSTOM (user-defined configuration)
|
|
# Perfect for: Advanced users, custom requirements, special deployments
|
|
[preset.custom]
|
|
name = "Custom (User-Defined)"
|
|
description = "Fully customizable preset - define your own database, services, and configuration"
|
|
database_backend = "sqlite" # Override this value
|
|
surrealdb_mode = "none"
|
|
auto_start_services = false
|
|
provctl_required = false
|
|
provctl_recommended = false
|
|
contexts = ["custom", "advanced", "user-defined"]
|
|
|
|
[preset.custom.services]
|
|
# Customize services below - enable/disable as needed
|
|
syntaxis_cli = { enabled = true, auto_start = false }
|
|
syntaxis_tui = { enabled = true, auto_start = false }
|
|
syntaxis_api = { enabled = false, auto_start = false, port = 3000 }
|
|
dashboard = { enabled = false, auto_start = false, port = 8080 }
|
|
surrealdb = { enabled = false, auto_start = false, port = 8000 }
|
|
nats = { enabled = false, auto_start = false, port = 4222 }
|
|
|
|
[preset.custom.notes]
|
|
setup_time = "~15-30 minutes (varies)"
|
|
prerequisites = ["Depends on your custom configuration"]
|
|
next_step = "Edit preset.custom in configs/installation.toml to your needs, then re-run installer"
|
|
use_cases = ["Advanced users", "Custom deployments", "Special infrastructure", "Hybrid setups"]
|
|
documentation = "docs/INSTALLATION_CONTEXTS.md#custom-preset"
|
|
|
|
# ==============================================================================
|
|
# DATABASE CONFIGURATION
|
|
# ==============================================================================
|
|
|
|
[database.sqlite]
|
|
engine = "sqlite"
|
|
description = "Local SQLite database"
|
|
path = "~/.local/share/core/workspace.db"
|
|
max_connections = 5
|
|
timeout_secs = 30
|
|
wal_mode = true
|
|
pragma_synchronous = "NORMAL"
|
|
pragma_cache_size = 2000
|
|
|
|
[database.surrealdb.server]
|
|
engine = "surrealdb"
|
|
mode = "server"
|
|
description = "SurrealDB server mode (local)"
|
|
url = "ws://127.0.0.1:8000"
|
|
namespace = "syntaxis"
|
|
database = "projects"
|
|
max_connections = 10
|
|
timeout_secs = 60
|
|
health_check_interval_secs = 5
|
|
|
|
[database.surrealdb.docker]
|
|
engine = "surrealdb"
|
|
mode = "docker"
|
|
description = "SurrealDB via Docker Compose"
|
|
url = "ws://surrealdb:8000"
|
|
namespace = "syntaxis"
|
|
database = "projects"
|
|
docker_image = "surrealdb/surrealdb:latest"
|
|
docker_port = 8000
|
|
|
|
[database.surrealdb.kubernetes]
|
|
engine = "surrealdb"
|
|
mode = "kubernetes"
|
|
description = "SurrealDB in Kubernetes cluster"
|
|
url = "ws://surrealdb.syntaxis.svc.cluster.local:8000"
|
|
namespace = "syntaxis"
|
|
database = "projects"
|
|
replicas = 3
|
|
|
|
# ==============================================================================
|
|
# SERVICE DEFINITIONS
|
|
# ==============================================================================
|
|
|
|
[services.syntaxis-api]
|
|
name = "syntaxis-api"
|
|
binary = "syntaxis-api"
|
|
description = "REST API server for syntaxis"
|
|
default_port = 3000
|
|
requires_database = true
|
|
health_check = { type = "http", endpoint = "/health", interval_secs = 10 }
|
|
|
|
[services.surrealdb]
|
|
name = "surrealdb"
|
|
binary = "surreal"
|
|
description = "SurrealDB database server"
|
|
default_port = 8000
|
|
is_database = true
|
|
health_check = { type = "tcp", address = "127.0.0.1:8000", interval_secs = 5 }
|
|
|
|
[services.nats]
|
|
name = "nats"
|
|
binary = "nats-server"
|
|
description = "NATS message broker for agent communication"
|
|
default_port = 4222
|
|
health_check = { type = "tcp", address = "127.0.0.1:4222", interval_secs = 5 }
|
|
|
|
[services.dashboard]
|
|
name = "dashboard"
|
|
binary = "syntaxis-api" # Served by API
|
|
description = "Web dashboard for syntaxis"
|
|
default_port = 8080
|
|
requires_api = true
|
|
health_check = { type = "http", endpoint = "/", interval_secs = 10 }
|
|
|
|
# ==============================================================================
|
|
# FALLBACK BEHAVIOR (when provctl is not available)
|
|
# ==============================================================================
|
|
|
|
[fallback]
|
|
# Generate setup guides for manual configuration
|
|
generate_setup_guides = true
|
|
|
|
# Detect and use available service managers
|
|
detect_systemd = true
|
|
detect_launchd = true
|
|
|
|
# Provide Docker Compose files as alternative
|
|
provide_docker_compose = true
|
|
|
|
# Create installation manifest with manual steps
|
|
create_manual_manifest = true
|
|
|
|
# ==============================================================================
|
|
# MANIFEST & TRACKING
|
|
# ==============================================================================
|
|
|
|
[manifest]
|
|
# Where to store installation metadata
|
|
location = ".syntaxis/manifest.toml"
|
|
|
|
# What to track in manifest
|
|
track_preset_used = true
|
|
track_provctl_status = true
|
|
track_installed_services = true
|
|
track_database_backend = true
|
|
track_timestamps = true
|
|
|
|
# ==============================================================================
|
|
# NOTES & DOCUMENTATION
|
|
# ==============================================================================
|
|
|
|
[notes]
|
|
# When to show installation tips
|
|
show_tips_on_success = true
|
|
show_next_steps = true
|
|
|
|
# Documentation links
|
|
doc_installation_contexts = "docs/INSTALLATION_CONTEXTS.md"
|
|
doc_provisioning = "PROVISIONING_GUIDE.md"
|
|
doc_surrealdb = "SURREALDB_SETUP_GUIDE.md"
|
|
doc_docker = "docker/README.md"
|
|
doc_kubernetes = "kubernetes/README.md"
|