base_path: "/app/data/experiments" auth: enabled: true api_keys: admin_user: hash: "5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8" # "password" admin: true roles: ["user", "admin"] permissions: read: true write: true delete: true researcher1: hash: "ef92b778ba7a6c8f2150019a5678047b6a9a2b95cef8189518f9b35c54d2e3ae" # "research123" admin: false roles: ["user", "researcher"] permissions: jobs:read: true jobs:create: true jobs:update: true jobs:delete: false analyst1: hash: "a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3" # "analyst123" admin: false roles: ["user", "analyst"] permissions: jobs:read: true jobs:create: false jobs:update: false jobs:delete: false server: address: ":9101" tls: enabled: false security: rate_limit: enabled: true requests_per_minute: 60 burst_size: 20 ip_whitelist: [] cors: enabled: true allowed_origins: ["https://localhost:9103", "https://localhost:3000"] allowed_methods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"] allowed_headers: ["Content-Type", "Authorization"] database: type: "sqlite" connection: "/app/data/experiments/fetch_ml.db" max_connections: 20 connection_timeout: "30s" redis: url: "redis://redis:6379" max_connections: 15 connection_timeout: "10s" logging: level: "info" file: "/app/logs/app.log" max_size: "100MB" max_backups: 5 compress: true resources: max_workers: 3 desired_rps_per_worker: 3 podman_cpus: "2" podman_memory: "4g" job_timeout: "30m" monitoring: enabled: true metrics_path: "/metrics" health_check_interval: "30s"