Environment Configuration
make87 provides applications with comprehensive runtime configuration through environment variables, eliminating the need for hard-coded settings or external configuration files.
Runtime Configuration Overview
All applications receive their configuration through a single environment variable: MAKE87_CONFIG
. This JSON structure contains everything your application needs to operate within the make87 platform:
- Communication endpoints - Network addresses and protocol settings for inter-application messaging
- Hardware peripherals - Available devices and sensors on the current node
- Custom configuration - Application-specific settings from your manifest
- Storage credentials - Access to the integrated blob storage service
- Application metadata - Deployment context and system information
Key Benefits
- Single source of truth - All configuration in one standardized location
- Language agnostic - Any language that can read environment variables and parse JSON
- Dynamic configuration - Settings adapt automatically to deployment environment
- Security - Credentials and sensitive data are managed securely by the platform
Example Usage
import json
import os
# Access the complete runtime configuration
config = json.loads(os.environ["MAKE87_CONFIG"])
# Get communication endpoints
interfaces = config["interfaces"]
# Access custom application settings
app_config = config["config"]
# Retrieve storage credentials
storage = config["storage"]
Complete Documentation
For comprehensive details on the configuration structure, all available fields, and practical code examples in multiple languages, see:
This guide covers: - Complete configuration schema and examples - All communication patterns (publishers, subscribers, requesters, providers, clients, servers) - Peripheral discovery and hardware access - Storage and secrets management - Best practices for configuration validation and environment-aware coding
Infrastructure Considerations
From an infrastructure perspective, the environment configuration system:
- Eliminates configuration drift - No need to manage separate config files across nodes
- Simplifies deployment - Applications are self-contained with injected configuration
- Enables portability - Same application runs across different environments without changes
- Provides security isolation - Each application receives only its required configuration and credentials
This approach allows infrastructure teams to manage deployments declaratively through manifests while giving applications the flexibility they need at runtime.