Configuration Files
Learn how to configure Plexus using YAML configuration files for managing environment variables and settings. This provides a more organized and maintainable alternative to using .env files.
Configuration File Locations
Plexus looks for configuration files in the following locations, in order of precedence:
{project}/.plexus/config.yaml(project-specific, highest priority){project}/.plexus/config.yml~/.plexus/config.yaml(user-wide configuration)~/.plexus/config.yml(lowest priority)
💡 Recommendation
Use .plexus/config.yaml in your project directory for project-specific settings. This keeps your configuration version-controlled and consistent across team members.
Getting Started
The easiest way to get started is to copy the example configuration file:
# Create the .plexus directory
mkdir -p .plexus
# Copy the example configuration
cp plexus.yaml.example .plexus/config.yaml
# Edit the configuration with your settings
nano .plexus/config.yamlConfiguration Structure
The YAML configuration supports all Plexus environment variables organized in a hierarchical structure:
# Environment and Debug Settings
environment: development # development, staging, production
debug: false
# Core Plexus Configuration
plexus:
api_url: https://your-plexus-instance.appsync-api.amazonaws.com/graphql
api_key: da2-your-api-key-here
app_url: https://plexus.anth.us
account_key: your-account-key
enable_batching: true
# Optional: Change working directory when loading config
# working_directory: /path/to/your/project
# AWS Configuration
aws:
access_key_id: AKIA-YOUR-ACCESS-KEY
secret_access_key: your-secret-access-key
region_name: us-west-2
# Storage Buckets (Amplify-generated bucket names)
storage:
report_block_details_bucket: "amplify-your-app-reportblockdetails-bucket"
datasets_bucket: "amplify-your-app-datasets-bucket"
task_attachments_bucket: "amplify-your-app-taskattachments-bucket"
# Celery Task Queue Configuration
celery:
queue_name: plexus-celery-development
result_backend_template: "dynamodb://{aws_access_key}:{aws_secret_key}@{aws_region_name}/plexus-action-development"
# AI/ML Service APIs
openai:
api_key: sk-your-openai-api-key
anthropic:
api_key: sk-ant-api03-your-anthropic-api-key
# Azure OpenAI Configuration
azure:
api_key: your-azure-openai-key
api_base: https://your-instance.openai.azure.com
api_version: "2024-02-01"
# LangChain/LangSmith Configuration
langchain:
api_key: lsv2_pt_your-langsmith-api-key
endpoint: https://api.smith.langchain.com
project: your-project-name
tracing_v2: trueHow Configuration Loading Works
Precedence Order
Configuration is loaded with the following precedence (highest to lowest priority):
- Environment variables - Always take highest priority
- Project-level config -
.plexus/config.yamlin current directory - User-level config -
~/.plexus/config.yamlin home directory
Automatic Loading
Configuration is automatically loaded when you use:
- Plexus CLI commands (e.g.,
plexus item last) - Plexus MCP server
- Python code that imports Plexus modules
Configuration Logging
When configuration is loaded, you'll see a log message like:
Loaded Plexus configuration from 1 file(s): /project/.plexus/config.yaml - Set 34 environment variablesSpecial Features
Working Directory Change
You can specify a working directory in your configuration that will be set when the config loads:
plexus:
working_directory: /path/to/your/projectTemplate Variables
Some configuration values support template variables. For example, the Celery result backend can reference AWS credentials:
celery:
result_backend_template: "dynamodb://{aws_access_key}:{aws_secret_key}@{aws_region_name}/table-name"Migration from .env Files
If you're currently using .env files, you can migrate to YAML configuration:
Step 1: Convert Variables
Transform your flat environment variables into the nested YAML structure:
Before (.env)
PLEXUS_API_URL=https://api.example.com
PLEXUS_API_KEY=da2-key
AWS_ACCESS_KEY_ID=AKIA123
AWS_SECRET_ACCESS_KEY=secret
OPENAI_API_KEY=sk-keyAfter (config.yaml)
plexus:
api_url: https://api.example.com
api_key: da2-key
aws:
access_key_id: AKIA123
secret_access_key: secret
openai:
api_key: sk-keyStep 2: Test the Migration
Test that your configuration works by running a simple command:
plexus item lastStep 3: Remove .env File (Optional)
Once you've verified the YAML configuration works, you can remove your .env file.
Security Best Practices
⚠️ Security Notice
- Never commit configuration files with real credentials to version control
- Use
.gitignoreto exclude.plexus/config.yamlfrom git - Consider using separate config files for different environments
- Use environment variables for the most sensitive credentials in production
Troubleshooting
Configuration Not Loading
If your configuration isn't being loaded:
- Check the file path and ensure it's in one of the expected locations
- Verify the YAML syntax is valid
- Look for configuration loading log messages
- Ensure the file has proper read permissions
Missing Environment Variables
If you get "missing environment variables" errors:
- Check that the YAML structure matches the expected format
- Verify that required fields like
aws.access_key_idare present - Make sure there are no typos in the configuration keys
YAML Syntax Errors
Common YAML syntax issues:
- Ensure proper indentation (use spaces, not tabs)
- Quote strings that contain special characters
- Use consistent spacing around colons
- Validate your YAML using an online YAML validator
✅ Next Steps
Once you have your configuration file set up, try running plexus item last to verify everything is working correctly. You can also explore the Concepts section to learn more about how Plexus works.