Files
AIPA/config/app.yaml
T
2026-04-02 22:01:07 -07:00

198 lines
8.4 KiB
YAML

# app.yaml — AIPA Application Configuration
#
# This file defines structure and defaults for the entire application.
# Environment variables override individual settings (see comments).
# Secrets (API keys) are never stored here — use .env.
#
# Docker deployment pattern:
# - Bake this file into the image, or mount it as a volume.
# - Set AIPA_ROOT to your data volume mount point.
# - Override per-environment values with environment variables.
# - Pass secrets via Docker secrets or environment injection.
#
# Path resolution:
# - Relative paths are resolved against AIPA_ROOT (if set) or the repo root.
# - Absolute paths are used as-is.
# - Set AIPA_ROOT=/app/data in production to relocate all mutable data.
# ---------------------------------------------------------------------------
# Application Identity
# ---------------------------------------------------------------------------
app:
name: AIPA # env: AIPA_APP_NAME
version: "1.0.0"
environment: development # env: AIPA_ENV (development | production | test)
log_level: INFO # env: AIPA_LOG_LEVEL (DEBUG | INFO | WARNING | ERROR)
# ---------------------------------------------------------------------------
# Paths
#
# Paths marked [config] are read-only at runtime (baked into image or repo).
# Paths marked [data] are read-write and should be on a mounted volume in Docker.
# Paths marked [runtime] are generated at runtime.
# ---------------------------------------------------------------------------
paths:
# Root override for Docker / relocatable deployments.
# All relative paths below resolve against this value if set.
# If unset, resolves against the repo root.
# env: AIPA_ROOT
root: ""
# Agent system
prompts_dir: agents/prompts # [config] env: AIPA_PROMPTS_DIR
registry: agents/registry/agent_registry.md # [config] env: AIPA_REGISTRY_PATH
# Configuration
agents_config: config/agents.yaml # [config] env: AIPA_AGENTS_CONFIG
app_config: config/app.yaml # [config] (self-referential, for reference)
# Memory and session data
standing_brief: docs/standing_brief.md # [data] env: AIPA_STANDING_BRIEF_PATH
brief_template: docs/standing_brief_template.md # [config] env: AIPA_BRIEF_TEMPLATE_PATH
archive_dir: docs/archive # [data] env: AIPA_ARCHIVE_DIR
# Logs
logs_dir: logs # [runtime] env: AIPA_LOGS_DIR
# Data / persistent storage
data_dir: data # [data] env: AIPA_DATA_DIR
tasks_dir: data/tasks # [data] env: AIPA_TASKS_DIR
# ---------------------------------------------------------------------------
# Logging
# ---------------------------------------------------------------------------
logging:
# Log level — also controlled by app.log_level above.
# env: AIPA_LOG_LEVEL
level: INFO # DEBUG | INFO | WARNING | ERROR | CRITICAL
# Terminal output format.
# env: AIPA_LOG_FORMAT
format: rich # rich | plain | json
# File logging — disabled by default.
file:
enabled: false # env: AIPA_LOG_FILE_ENABLED
path: logs/aipa.log # env: AIPA_LOG_FILE_PATH (relative to AIPA_ROOT)
rotation: daily # env: AIPA_LOG_ROTATION (daily | size | none)
max_size_mb: 100 # env: AIPA_LOG_MAX_SIZE_MB (when rotation: size)
retention_days: 30 # env: AIPA_LOG_RETENTION_DAYS
# ---------------------------------------------------------------------------
# Session
# Defaults for each orchestration session.
# All overridable at runtime via slash commands within a session.
# ---------------------------------------------------------------------------
session:
# Number of session log entries to retain in the standing brief before archiving.
# env: AIPA_SESSION_LOG_RETENTION
log_retention: 10
# Seconds to wait for a lead agent before timing out.
# env: AIPA_LEAD_TIMEOUT
lead_timeout: 120
# Automatically run Vera's audit after every directive.
# env: AIPA_AUTO_AUDIT
auto_audit: true
# Print raw agent outputs to terminal (useful for debugging).
# env: AIPA_DEBUG
debug_output: false
# ---------------------------------------------------------------------------
# Memory
# Configuration for agent memory and knowledge persistence.
# ---------------------------------------------------------------------------
memory:
# Standing brief — Miranda's cross-session working memory.
standing_brief:
enabled: true # env: AIPA_MEMORY_BRIEF_ENABLED
# Maximum sections retained before Miranda is asked to archive.
max_session_logs: 10 # env: AIPA_MEMORY_MAX_SESSION_LOGS
# Agent memory store — for future long-term agent memory support.
# Currently unused; placeholder for vector store or database integration.
store:
enabled: false # env: AIPA_MEMORY_STORE_ENABLED
backend: none # env: AIPA_MEMORY_STORE_BACKEND
# none | sqlite | postgres | chroma | pinecone
# SQLite (local, no additional infrastructure)
sqlite:
path: data/memory.db # env: AIPA_MEMORY_SQLITE_PATH
# PostgreSQL
postgres:
host: localhost # env: AIPA_MEMORY_PG_HOST
port: 5432 # env: AIPA_MEMORY_PG_PORT
database: aipa # env: AIPA_MEMORY_PG_DB
user: aipa # env: AIPA_MEMORY_PG_USER
# password: via env only # env: AIPA_MEMORY_PG_PASSWORD
# Vector store (for semantic memory / RAG)
vector:
backend: none # env: AIPA_MEMORY_VECTOR_BACKEND
# none | chroma | pinecone | weaviate
collection: aipa_memory # env: AIPA_MEMORY_VECTOR_COLLECTION
chroma:
host: localhost # env: AIPA_MEMORY_CHROMA_HOST
port: 8000 # env: AIPA_MEMORY_CHROMA_PORT
persist_dir: data/chroma # env: AIPA_MEMORY_CHROMA_PERSIST_DIR
pinecone:
index: aipa-memory # env: AIPA_MEMORY_PINECONE_INDEX
# api_key: via env only # env: PINECONE_API_KEY
environment: us-east-1-aws # env: AIPA_MEMORY_PINECONE_ENV
# ---------------------------------------------------------------------------
# Infrastructure
# ---------------------------------------------------------------------------
infrastructure:
# REST API server — for future web/programmatic access.
# Currently unused; placeholder for FastAPI or similar.
api:
enabled: false # env: AIPA_API_ENABLED
host: 0.0.0.0 # env: AIPA_API_HOST
port: 8080 # env: AIPA_API_PORT
workers: 1 # env: AIPA_API_WORKERS
cors_origins: # env: AIPA_API_CORS_ORIGINS (comma-separated)
- "*"
# tls:
# enabled: false # env: AIPA_API_TLS_ENABLED
# cert: certs/server.crt # env: AIPA_API_TLS_CERT
# key: certs/server.key # env: AIPA_API_TLS_KEY
# Response caching — for future use.
cache:
enabled: false # env: AIPA_CACHE_ENABLED
backend: memory # env: AIPA_CACHE_BACKEND (memory | redis)
ttl_seconds: 3600 # env: AIPA_CACHE_TTL
redis:
host: localhost # env: AIPA_REDIS_HOST
port: 6379 # env: AIPA_REDIS_PORT
db: 0 # env: AIPA_REDIS_DB
# password: via env only # env: AIPA_REDIS_PASSWORD
# Queue — for async task dispatch (future).
queue:
enabled: false # env: AIPA_QUEUE_ENABLED
backend: memory # env: AIPA_QUEUE_BACKEND (memory | redis | rabbitmq)
# Docker / container settings
container:
# Data volume mount point — set AIPA_ROOT to this in docker-compose.
# All relative paths resolve against this in production.
data_volume: /app/data # env: AIPA_ROOT (when deployed)
config_volume: /app/config # informational — mount config/ here
prompts_volume: /app/agents/prompts # informational — mount agents/prompts here