modules: - class: modules::stream::StreamModule config: port: ${STREAMS_PORT:3114} host: 0.0.0.0 adapter: class: modules::stream::adapters::KvStore config: store_method: file_based file_path: ./data/streams_store - class: modules::state::StateModule config: adapter: class: modules::state::adapters::KvStore config: store_method: file_based file_path: ./data/state_store.db - class: modules::api::RestApiModule config: port: 3111 host: 0.0.0.0 default_timeout: 30000 concurrency_request_limit: 1024 cors: allowed_origins: - "https://motia.bitbylaw.com" - "https://api-motia.bitbylaw.com" - "http://localhost:3113" - "http://localhost:3115" - "*" allowed_methods: - GET - POST - PUT - DELETE - OPTIONS allowed_headers: - "*" allow_credentials: true - class: modules::observability::OtelModule config: enabled: ${OTEL_ENABLED:true} service_name: ${OTEL_SERVICE_NAME:iii-engine-python} service_version: ${SERVICE_VERSION:0.2.0} service_namespace: ${SERVICE_NAMESPACE:production} exporter: ${OTEL_EXPORTER_TYPE:memory} endpoint: ${OTEL_EXPORTER_OTLP_ENDPOINT:http://localhost:4317} sampling_ratio: 1.0 memory_max_spans: ${OTEL_MEMORY_MAX_SPANS:10000} metrics_enabled: true metrics_exporter: ${OTEL_METRICS_EXPORTER:memory} metrics_retention_seconds: 3600 metrics_max_count: 10000 logs_enabled: ${OTEL_LOGS_ENABLED:true} logs_exporter: ${OTEL_LOGS_EXPORTER:memory} logs_max_count: ${OTEL_LOGS_MAX_COUNT:1000} logs_retention_seconds: ${OTEL_LOGS_RETENTION_SECONDS:3600} logs_sampling_ratio: ${OTEL_LOGS_SAMPLING_RATIO:1.0} - class: modules::queue::QueueModule config: adapter: class: modules::queue::BuiltinQueueAdapter - class: modules::pubsub::PubSubModule config: adapter: class: modules::pubsub::LocalAdapter - class: modules::cron::CronModule config: adapter: class: modules::cron::KvCronAdapter - class: modules::shell::ExecModule config: watch: - steps/**/*.py exec: - uv run motia run --dir steps