{ "$schema": "node_modules/wrangler/config-schema.json", "name": "x402-api", "main": "src/index.ts", "minify": true, "compatibility_date": "2025-01-08", "compatibility_flags": ["nodejs_compat_v2"], // Local development settings "workers_dev": true, "preview_urls": true, "observability": { "enabled": false }, /** * Top-level bindings are for local development only (wrangler dev). * These are NOT inherited by environments - each env must define its own. */ "ai": { "binding": "AI" }, "durable_objects": { "bindings": [ { "name": "USAGE_DO", "class_name": "UsageDO" }, { "name": "STORAGE_DO", "class_name": "StorageDO" }, { "name": "METRICS_DO", "class_name": "MetricsDO" }, { "name": "PAYMENT_POLLING_DO", "class_name": "PaymentPollingDO" } ] }, "services": [ { "binding": "LOGS", "service": "worker-logs-staging", "entrypoint": "LogsRPC" } ], "migrations": [ { "tag": "v1", "new_sqlite_classes": ["UsageDO", "StorageDO"] }, { "tag": "v2", "new_sqlite_classes": ["MetricsDO"] }, { "tag": "v3", "new_sqlite_classes": ["PaymentPollingDO"] } ], "vars": { "ENVIRONMENT": "development", "X402_FACILITATOR_URL": "https://x402-relay.aibtc.dev", "X402_NETWORK": "testnet", "X402_SERVER_ADDRESS": "ST37NMC4HGFQ1H2JSFP4H3TMNQBF4PY0MVSD1GV7Z" }, /** * Environments * Note: kv_namespaces, ai, durable_objects, services are NOT inherited. * Each environment must explicitly define all bindings it needs. * * Secrets (set via `wrangler secret put --env `): * - OPENROUTER_API_KEY: API key for OpenRouter * - HIRO_API_KEY: API key for Hiro (better rate limits) */ "env": { "staging": { "name": "x402-api-staging", "workers_dev": false, "routes": [{ "pattern": "x402.aibtc.dev", "custom_domain": true }], "observability": { "enabled": true }, "vars": { "ENVIRONMENT": "staging", "X402_FACILITATOR_URL": "https://x402-relay.aibtc.dev", "X402_NETWORK": "testnet", "X402_SERVER_ADDRESS": "ST37NMC4HGFQ1H2JSFP4H3TMNQBF4PY0MVSD1GV7Z" }, // Bindings must be duplicated per environment "ai": { "binding": "AI" }, "durable_objects": { "bindings": [ { "name": "USAGE_DO", "class_name": "UsageDO" }, { "name": "STORAGE_DO", "class_name": "StorageDO" }, { "name": "METRICS_DO", "class_name": "MetricsDO" }, { "name": "PAYMENT_POLLING_DO", "class_name": "PaymentPollingDO" } ] }, "services": [ { "binding": "LOGS", "service": "worker-logs-staging", "entrypoint": "LogsRPC" } ] }, "production": { "name": "x402-api-production", "workers_dev": false, "routes": [{ "pattern": "x402.aibtc.com", "custom_domain": true }], "observability": { "enabled": true }, "vars": { "ENVIRONMENT": "production", "X402_FACILITATOR_URL": "https://x402-relay.aibtc.com", "X402_NETWORK": "mainnet", "X402_SERVER_ADDRESS": "SP37NMC4HGFQ1H2JSFP4H3TMNQBF4PY0MVRHQXGQE" }, // Bindings must be duplicated per environment "ai": { "binding": "AI" }, "durable_objects": { "bindings": [ { "name": "USAGE_DO", "class_name": "UsageDO" }, { "name": "STORAGE_DO", "class_name": "StorageDO" }, { "name": "METRICS_DO", "class_name": "MetricsDO" }, { "name": "PAYMENT_POLLING_DO", "class_name": "PaymentPollingDO" } ] }, "services": [ { "binding": "LOGS", "service": "worker-logs-production", "entrypoint": "LogsRPC" } ] } } }