| Crates.io | systemprompt-loader |
| lib.rs | systemprompt-loader |
| version | 0.0.11 |
| created_at | 2026-01-21 18:22:44.372159+00 |
| updated_at | 2026-01-25 21:42:33.364065+00 |
| description | File loading infrastructure for systemprompt.io - separates I/O from shared models |
| homepage | https://systemprompt.io |
| repository | https://github.com/systempromptio/systemprompt-core |
| max_upload_size | |
| id | 2059830 |
| size | 104,734 |
File loading infrastructure for systemprompt.io - separates I/O from shared models.
Part of the Infra layer in the systemprompt.io architecture.
This crate provides pure I/O operations for loading configuration files, profiles, secrets, extensions, and module definitions without any domain logic.
The loader crate sits in the infrastructure layer and depends only on systemprompt-models (shared layer). It separates file I/O concerns from business logic, enabling:
src/
├── lib.rs # Public API exports
├── config_loader.rs # Basic services configuration loader
├── config_writer.rs # Agent configuration file writer
├── enhanced_config_loader.rs # Extended config loader with includes
├── extension_loader.rs # Extension manifest discovery and loading
├── extension_registry.rs # Runtime extension binary registry
├── include_resolver.rs # YAML !include directive resolver
├── module_loader.rs # Module definition aggregator
├── profile_loader.rs # Profile YAML loader with validation
├── secrets_loader.rs # Secrets file loader with path resolution
└── modules/
├── mod.rs # Module collection aggregator
├── agent.rs # Agent module definition
├── ai.rs # AI service module definition
├── analytics.rs # Analytics module definition
├── api.rs # API gateway module definition
├── content.rs # Content management module definition
├── database.rs # Database module definition
├── files.rs # File management module definition
├── log.rs # Logging module definition
├── mcp.rs # MCP service module definition
├── oauth.rs # OAuth module definition
├── scheduler.rs # Scheduler module definition
└── users.rs # Users module definition
| Module | Purpose |
|---|---|
ProfileLoader |
Loads and validates profile YAML files from the profiles directory |
SecretsLoader |
Loads secrets files with support for ~/ home directory expansion |
ConfigLoader |
Loads services configuration with include file merging |
EnhancedConfigLoader |
Extended config loader with agent discovery and include resolution |
ModuleLoader |
Aggregates all module definitions for database schema management |
| Module | Purpose |
|---|---|
ExtensionLoader |
Discovers extensions by scanning for manifest.yaml files |
ExtensionRegistry |
Runtime registry mapping binary names to extension metadata |
IncludeResolver |
Resolves !include directives in YAML configuration |
ConfigWriter |
Creates, updates, and deletes agent configuration files |
The modules/ directory contains definitions for each systemprompt.io module. Each definition specifies:
use systemprompt_loader::{
ConfigLoader, ProfileLoader, SecretsLoader,
ExtensionLoader, ExtensionRegistry, ModuleLoader,
};
let config = ConfigLoader::load()?;
let profile = ProfileLoader::load_and_validate(services_path, "development")?;
let secrets = SecretsLoader::resolve_and_load("~/.config/secrets.yaml", None)?;
let modules = ModuleLoader::all();
let extensions = ExtensionLoader::discover(project_root);
anyhow - Error handlingthiserror - Error type definitionsserde / serde_yaml / serde_json - Serializationtokio - Async runtimetracing - Loggingsystemprompt-models - Shared model typesAdd to your Cargo.toml:
[dependencies]
systemprompt-loader = "0.0.1"
FSL-1.1-ALv2 - See LICENSE for details.