Overview
InstanceConfig represents the root-level configuration for an Applad instance, typically stored in applad.yaml. This is the top level of the configuration hierarchy.
Class Definition
final class InstanceConfig {
const InstanceConfig({
required this.version,
this.ai,
this.observability,
this.enabledFeatures = const [],
});
factory InstanceConfig.fromMap(Map<String, dynamic> map);
Map<String, dynamic> toJson();
}
Properties
Configuration schema version (e.g., "1")
AI provider configuration for AI-powered features
Logging and tracing configuration
List of enabled feature flags for the instance
AiConfig
Configuration for AI providers:
AI provider name (e.g., "openai", "anthropic", "google")
Specific model to use (e.g., "gpt-4", "claude-3-opus")
Reference to API key secret (e.g., {{secrets.openai_key}})
ObservabilityRef
Observability and monitoring settings:
Logging level: "debug", "info", "warn", "error"
Enable distributed tracing
Usage
Basic Configuration
# applad.yaml
version: "1"
features:
- auth
- database
- storage
- functions
import 'package:applad_core/applad_core.dart';
final config = InstanceConfig.fromMap(yamlData);
print('Version: ${config.version}');
print('Features: ${config.enabledFeatures}');
With AI Configuration
version: "1"
ai:
provider: openai
model: gpt-4
api_key: "{{secrets.openai_key}}"
features:
- ai_assist
final config = InstanceConfig.fromMap(yamlData);
if (config.ai != null) {
print('AI Provider: ${config.ai!.provider}');
print('Model: ${config.ai!.model}');
if (config.ai!.apiKeyRef != null) {
print('API Key Secret: ${config.ai!.apiKeyRef!.key}');
}
}
With Observability
version: "1"
observability:
log_level: info
tracing: true
final config = InstanceConfig.fromMap(yamlData);
if (config.observability != null) {
print('Log Level: ${config.observability!.logLevel}');
print('Tracing Enabled: ${config.observability!.tracing}');
}
Feature Flags
version: "1"
features:
auth: true
database: true
storage: true
functions: false
realtime: true
final config = InstanceConfig.fromMap(yamlData);
// Check if feature is enabled
final hasAuth = config.enabledFeatures.contains('auth');
final hasFunctions = config.enabledFeatures.contains('functions');
print('Auth enabled: $hasAuth');
print('Functions enabled: $hasFunctions');
Converting to JSON
final config = InstanceConfig(
version: '1',
ai: AiConfig(
provider: 'openai',
model: 'gpt-4',
),
observability: ObservabilityRef(
logLevel: 'info',
tracing: true,
),
enabledFeatures: ['auth', 'database', 'storage'],
);
final json = config.toJson();
// {
// 'version': '1',
// 'ai': {'provider': 'openai', 'model': 'gpt-4', 'api_key': null},
// 'observability': {'log_level': 'info', 'tracing': true},
// 'features': ['auth', 'database', 'storage']
// }
Common Feature Flags
auth - Authentication and user management
database - Database access
storage - File storage
functions - Serverless functions
realtime - WebSocket real-time updates
messaging - Real-time messaging
workflows - Workflow automation
analytics - Analytics tracking
ai_assist - AI-powered features
Source Location
packages/applad_core/lib/src/config/instance_config.dart:6