Configuration
Learn how to manage ao.config.yml
and other configuration settings for your ao-forge projects.
Overview
ao-forge uses configuration files to manage project settings, AO processes, and deployment options.
Configuration Files
ao.config.yml
The main configuration file for your project:
# Project configuration
name: 'my-ao-app'
version: '1.0.0'
description: 'My AO-powered application'
# Framework configuration
framework: 'nextjs' # or 'nuxtjs'
packageManager: 'pnpm' # or 'npm', 'yarn'
# AO process configuration
luaFiles: ['counter.lua', 'token.lua']
autoStart: false
processName: 'my-process'
# Development configuration
ports:
dev: 3000
ao: 8080
# Build configuration
build:
output: './dist'
optimize: true
sourceMaps: false
# Deployment configuration
deploy:
platform: 'vercel'
environment: 'production'
Configuration Management
Using ao-forge config
# Get configuration value
ao-forge config get framework
# Set configuration value
ao-forge config set framework nextjs
# List all configuration
ao-forge config list
# Validate configuration
ao-forge config validate
# Reset to defaults
ao-forge config reset
Configuration Commands
# Get specific value
ao-forge config get ports.dev
# Set specific value
ao-forge config set ports.dev 3001
# Remove configuration
ao-forge config remove deploy.platform
# Show configuration file
ao-forge config show
Framework Configuration
Next.js Configuration
# ao.config.yml
framework: 'nextjs'
nextjs:
appDir: true
typescript: true
tailwind: true
eslint: true
prettier: true
Nuxt.js Configuration
# ao.config.yml
framework: 'nuxtjs'
nuxtjs:
typescript: true
tailwind: true
eslint: true
prettier: true
modules: ['@nuxtjs/plausible']
AO Process Configuration
Process Settings
# ao.config.yml
processes:
- name: 'counter'
file: './ao/counter.lua'
autoStart: true
monitoring: true
- name: 'token'
file: './ao/token.lua'
autoStart: false
monitoring: false
Process Management
# Start specific process
ao-forge process start counter
# Stop specific process
ao-forge process stop counter
# Restart process
ao-forge process restart counter
# List processes
ao-forge process list
# Process status
ao-forge process status counter
Development Configuration
Port Configuration
# ao.config.yml
ports:
dev: 3000 # Frontend development server
ao: 8080 # AO process server
monitoring: 9090 # Process monitoring
Environment Configuration
# ao.config.yml
environments:
development:
ports:
dev: 3000
debug: true
hotReload: true
staging:
ports:
dev: 3001
debug: false
hotReload: false
production:
ports:
dev: 3000
debug: false
hotReload: false
Build Configuration
Build Settings
# ao.config.yml
build:
output: './dist'
optimize: true
sourceMaps: false
minify: true
compression: true
Build Optimization
# ao.config.yml
build:
optimization:
treeshaking: true
codesplitting: true
deadCodeElimination: true
constantFolding: true
Deployment Configuration
Platform Configuration
# ao.config.yml
deploy:
platform: 'vercel'
environment: 'production'
domain: 'my-app.vercel.app'
customDomain: 'my-app.com'
Platform-Specific Settings
# ao.config.yml
deploy:
vercel:
projectId: 'your-project-id'
teamId: 'your-team-id'
environment: 'production'
netlify:
siteId: 'your-site-id'
buildCommand: 'ao-forge build'
publishDirectory: './dist'
github:
repository: 'your-username/your-repo'
branch: 'gh-pages'
token: 'your-token'
Environment Variables
Frontend Environment
# .env.local
NEXT_PUBLIC_AO_PROCESS_ID=your-process-id
NEXT_PUBLIC_AO_GATEWAY=https://arweave.net
NEXT_PUBLIC_AO_ENVIRONMENT=production
AO Environment
# .env.ao
AO_WALLET_PATH=./wallet.json
AO_GATEWAY=https://arweave.net
AO_MODULE=your-module-id
AO_ENVIRONMENT=production
Configuration Validation
Validation Rules
# ao.config.yml
validation:
required:
- framework
- packageManager
- luaFiles
optional:
- ports
- build
- deploy
Validation Commands
# Validate configuration
ao-forge config validate
# Check for errors
ao-forge config validate --strict
# Fix configuration issues
ao-forge config fix
Configuration Templates
Basic Template
# ao.config.yml
name: 'my-ao-app'
framework: 'nextjs'
packageManager: 'pnpm'
luaFiles: ['counter.lua']
autoStart: false
ports:
dev: 3000
Advanced Template
# ao.config.yml
name: 'my-ao-app'
version: '1.0.0'
description: 'My AO-powered application'
framework: 'nextjs'
packageManager: 'pnpm'
# AO processes
luaFiles: ['counter.lua', 'token.lua']
autoStart: false
processName: 'my-process'
# Development
ports:
dev: 3000
ao: 8080
monitoring: 9090
# Build
build:
output: './dist'
optimize: true
sourceMaps: false
# Deployment
deploy:
platform: 'vercel'
environment: 'production'
domain: 'my-app.vercel.app'
Best Practices
Configuration Management
- Use version control for configuration files
- Document configuration options
- Validate configuration before deployment
- Use environment-specific configurations
- Keep secrets in environment variables
Security
- Never commit sensitive information
- Use environment variables for secrets
- Validate inputs in configuration
- Use secure defaults for production
- Regularly review configuration security
Performance
- Optimize build configuration
- Use appropriate port settings
- Configure monitoring properly
- Set up caching where appropriate
- Monitor resource usage
Troubleshooting
Common Issues
- Configuration not found
# Check if ao.config.yml exists ls -la ao.config.yml # Create default configuration ao-forge config init
- Invalid configuration
# Validate configuration ao-forge config validate # Fix configuration issues ao-forge config fix
- Configuration not applied
# Reload configuration ao-forge config reload # Restart development server ao-forge dev --restart
Getting Help
# Get help with configuration
ao-forge config --help
# Show configuration schema
ao-forge config schema
# List available options
ao-forge config options