systemprompt-config
Configuration module for systemprompt.io - environment configuration and validation.
Overview
Part of the Infra layer in the systemprompt.io architecture.
This crate provides configuration management for the systemprompt.io platform:
- YAML Configuration Loading: Loads and merges base and environment-specific YAML files
- Variable Resolution: Resolves
${VAR_NAME}and${VAR_NAME:-default}patterns - Secrets Management: Loads
.env.secretsfiles into environment - Validation: Validates configuration completeness, URL formats, and environment-specific rules
- File Generation: Writes
.envfiles for deployment
File Structure
src/
├── lib.rs # Crate root - public API exports
└── services/
├── mod.rs # Module declarations and re-exports
├── manager.rs # ConfigManager - YAML loading, merging, variable resolution
├── schema_validation.rs # Generic YAML/JSON schema validation utilities
├── types.rs # DeployEnvironment, DeploymentConfig, EnvironmentConfig
├── validator.rs # ConfigValidator, ValidationReport
└── writer.rs # ConfigWriter - .env file generation
Modules
manager.rs
Core configuration management functionality:
ConfigManager::new(project_root)- Initialize with project pathConfigManager::generate_config(environment)- Load and merge YAML configs- Variable resolution with environment variable fallback
- Secrets file loading
schema_validation.rs
Generic schema validation utilities:
validate_config<T>()- Validate YAML against typed schemavalidate_yaml_file()- Parse and validate YAML syntaxgenerate_schema<T>()- Generate JSON schema from typesbuild_validate_configs()- Build-time validation for build.rs
types.rs
Configuration type definitions:
DeployEnvironment- Enum: Local, DockerDev, ProductionDeploymentConfig- Raw YAML configuration containerEnvironmentConfig- Resolved environment variables
validator.rs
Configuration validation:
ConfigValidator::validate()- Run all validation checksValidationReport- Collect errors and warnings- Checks: unresolved variables, required variables, URL formats, port values
writer.rs
Configuration file output:
ConfigWriter::write_env_file()- Write standard .env fileConfigWriter::write_web_env_file()- Write VITE_* variables for web builds
Public API
use ;
Dependencies
| Crate | Purpose |
|---|---|
systemprompt-logging |
CLI output via CliService |
serde_yaml |
YAML parsing |
schemars |
JSON schema generation |
regex |
Variable resolution patterns |
anyhow |
Error handling |
thiserror |
Typed errors for schema validation |
tracing |
Warning logs for unsupported features |
Installation
Add to your Cargo.toml:
[]
= "0.0.1"
License
FSL-1.1-ALv2 - See LICENSE for details.