Production infrastructure for AI agents
Website · Documentation · Guides · Core · Template · Discord
systemprompt-loader
File and module discovery infrastructure for systemprompt.io AI governance — manifests, schemas, and extension loading. Separates I/O from shared models in the MCP governance pipeline. Provides pure I/O operations for loading configuration files, profiles, secrets, extensions, and module definitions without any domain logic.
Layer: Infra — infrastructure primitives (database, security, events, etc.) consumed by domain crates. Part of the systemprompt-core workspace.
Overview
This crate provides pure I/O operations for loading configuration files, profiles, secrets, extensions, and module definitions without any domain logic.
Architecture
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:
- Testable file operations with clear boundaries
- Reusable loaders across different entry points (API, CLI)
- Consistent configuration parsing and validation
src/
├── lib.rs # Public API exports
├── error.rs # ConfigLoad / ConfigWrite / ExtensionLoad / ProfileLoad error types
├── config_loader/ # Services configuration loader
│ ├── mod.rs # ConfigLoader entry point
│ ├── includes.rs # Recursive `includes:` resolution with cycle detection
│ ├── merge.rs # Deep-merge logic for included fragments
│ └── types.rs # Loader-internal types
├── config_writer.rs # Agent configuration file writer
├── extension_loader/ # Extension manifest discovery and loading
│ ├── mod.rs # ExtensionLoader entry point
│ ├── manifest.rs # manifest.yaml parsing
│ └── result.rs # ExtensionValidationResult
├── extension_registry.rs # Runtime extension binary registry
├── module_loader.rs # `inventory`-driven extension aggregator
├── profile_loader.rs # Profile YAML loader with validation
└── modules/
└── mod.rs # Module collection aggregator
Core Loaders
| Module | Purpose |
|---|---|
ProfileLoader |
Loads and validates profile YAML files from the profiles directory |
ConfigLoader |
Loads services configuration, merges includes, and validates strict schema |
ModuleLoader |
Aggregates all module definitions for database schema management |
Extension Support
| Module | Purpose |
|---|---|
ExtensionLoader |
Discovers extensions by scanning for manifest.yaml files |
ExtensionRegistry |
Runtime registry mapping binary names to extension metadata |
ConfigWriter |
Creates, updates, and deletes agent configuration files |
Module Definitions
The modules/ directory contains definitions for each systemprompt.io module. Each definition specifies:
- Module metadata (name, version, description)
- Database schemas with required columns
- Seed data for initial setup
- API configuration
- Module dependencies and load order (weight)
Usage
[]
= "0.9.2"
Features
| Feature | Default | Purpose |
|---|---|---|
expose-internals |
off | Exposes test-only entry points such as ConfigLoader::load_from_content to dependent crates outside cfg(test). |
use ;
let config = load?;
let loader = from_env?;
let profile = load_and_validate?;
let modules = all;
let extensions = discover;
Dependencies
thiserror— typed error variantsserde/serde_yaml/serde_json— serialisationtokio— async runtimetracing— structured loggingsystemprompt-config— profile and config primitivessystemprompt-extension— extension trait registrysystemprompt-identifiers— typed IDssystemprompt-models— shared model types
License
BSL-1.1 (Business Source License). Source-available for evaluation, testing, and non-production use. Production use requires a commercial license. Each version converts to Apache 2.0 four years after publication. See LICENSE.
systemprompt.io · Documentation · Guides · Live Demo · Template · crates.io · docs.rs · Discord
Infra layer · Own how your organization uses AI.