Axion Framework
  • Welcome to Axion Framework
  • Oreview
    • Overview: Axion Framework
    • Installation Guide: Axion Framework
  • BASICS
    • YAML Configuration Guide
    • Modular Architecture: Axion Framework
    • Swarm Behavior: Axion Framework
    • Dynamic Breeding in Axion Framework
    • Democratic Decision-Making in Axion Framework
  • Multi-Agent Collaboration in Axion Framework
  • AI Agent in Axion Framework
  • Reinforcement Learning (Self-Optimization) in Axion Framework
  • IPFS for Decentralized Messaging in Axion Framework
  • Integrations in Axion Framework
  • Database and Storage Integrations in Axion Framework
  • Blockchain Smart Contract Interaction in Axion Framework
  • Knowledge Graph Integration in Axion Framework
  • Advanced Use Cases with Axion Framework
  • API Documentation for Axion Framework
  • Glossary: Key Terms and Concepts
  • Output Overview
  • Security Practices
  • Roadmap
Powered by GitBook
On this page
  • YAML Configuration Guide
  • Introduction
  • Configuration File Structure
  • Editing the Configuration File
  • Using Environment Variables
  • Best Practices
  • Example Workflow
  • Common Issues and Solutions
Export as PDF
  1. BASICS

YAML Configuration Guide

PreviousInstallation Guide: Axion FrameworkNextModular Architecture: Axion Framework

Last updated 4 months ago

YAML Configuration Guide

Introduction

The Axion Framework utilizes a centralized YAML configuration file (config.yaml) to streamline its settings and ensure easy customization. This approach simplifies managing configurations across various environments, such as development, staging, and production.

In this guide, we’ll cover:

  • The purpose and structure of the configuration file.

  • How to modify and manage settings.

  • Best practices for secure management of sensitive data using environment variables.


Configuration File Structure

Here’s a sample config.yaml file, with an explanation of each section:

yamlCopy code# General environment settings
environment: development  # Options: development, staging, production

# AI Agent configuration
axion:
  agent:
    id: 1                        # Unique ID for the agent
    role: "manager"              # Agent role (e.g., worker, coordinator)
    max_tasks: 10                # Maximum tasks the agent can handle

# LLM Integration
llm:
  provider: "openai"             # Supported providers: openai, anthropic, ollama
  base_url: "https://api.openai.com"
  model: "gpt-4"
  api_timeout: 10                # API call timeout in seconds
  retry_attempts: 3              # Number of retries for failed requests

# Swarm Intelligence Configuration
swarm:
  redis:
    host: "localhost"            # Redis server hostname
    port: 6379                   # Redis server port
  consensus_threshold: 3         # Minimum votes for swarm consensus

# Blockchain Integration
blockchain:
  solana:
    rpc_url: "https://api.mainnet-beta.solana.com"
    wallet_path: "/path/to/solana-wallet.json"
  ethereum:
    rpc_url: "https://mainnet.infura.io/v3/${ETH_RPC_KEY}"  # Use environment variables for security

# Logging and Debugging
logging:
  level: "INFO"                  # Options: DEBUG, INFO, WARNING, ERROR, CRITICAL
  file: "logs/axion.log"
  rotate_logs: true              # Enable log file rotation

Editing the Configuration File

Locate and Open config.yaml

You’ll find config.yaml in the root directory of your Axion Framework project.

Update Configuration Values

Modify the file based on your specific environment:

  • Example for a production setup:

    yamlCopy codeenvironment: production
    swarm:
      redis:
        host: "prod-redis.example.com"
        password: "securepassword123"

Use Environment-Specific Configurations

It’s a best practice to use separate YAML files for each environment:

  • config.development.yaml

  • config.staging.yaml

  • config.production.yaml

Dynamic Loading

Load the appropriate configuration file based on the environment:

pythonCopy codeimport os
env = os.getenv("AXION_ENVIRONMENT", "development")
config_file = f"config.{env}.yaml"

Using Environment Variables

To manage sensitive data (like API keys and passwords) securely, avoid hardcoding them in your YAML file.

Steps for Secure Key Management

  1. Add Variables to a .env File

    bashCopy codeAXION_LLM_PROVIDER=anthropic
    AXION_SWARM_REDIS_PASSWORD=securepassword123
    ETH_RPC_KEY=your_infura_project_key
  2. Reference Variables in config.yaml Use the ${VARIABLE_NAME} syntax to include them dynamically:

    yamlCopy codeblockchain:
      ethereum:
        rpc_url: "https://mainnet.infura.io/v3/${ETH_RPC_KEY}"
  3. Load Environment Variables in Code Use Python’s os module to read environment variables:

    pythonCopy codeimport os
    ethereum_rpc = os.getenv("ETH_RPC_KEY")

Best Practices

  • Secure Sensitive Data Always use environment variables for keys, passwords, and other confidential settings.

  • Environment-Specific YAML Files Use separate YAML files (config.development.yaml, config.production.yaml) and load them dynamically.

  • Document Configuration Changes Ensure any new configuration options are added to project documentation for clarity and collaboration.


Example Workflow

  1. Set the Environment

    bashCopy codeAXION_ENVIRONMENT=production
  2. Edit the YAML File Update paths, hostnames, or thresholds specific to your environment.

  3. Run the Framework

    bashCopy codepython main.py --config=config.production.yaml

Common Issues and Solutions

1. Missing Configuration File

  • Error: FileNotFoundError: config.yaml not found

  • Solution: Ensure the config.yaml file is in the correct directory, or explicitly specify the file path.

2. Missing Environment Variables

  • Error: API key for openai not found

  • Solution: Add the required variables to a .env file or set them in your system environment.

3. Invalid YAML Syntax

  • Error: yaml.scanner.ScannerError

  • Solution: Validate the YAML file using a linter or an online validator.

Page cover image