apiVersion: v1 kind: ConfigMap metadata: name: unrip-config namespace: unrip data: PROJECT_NAME: unrip PROJECT_NAMESPACE: unrip NEAR_INTENTS_WS_URL: wss://solver-relay-v2.chaindefuser.com/ws NEAR_INTENTS_RPC_URL: https://solver-relay-v2.chaindefuser.com/rpc NEAR_INTENTS_BRIDGE_RPC_URL: https://bridge.chaindefuser.com/rpc NEAR_INTENTS_VERIFIER_CONTRACT: intents.near NEAR_RPC_URL: https://near.lava.build NEAR_INTENTS_PAIR_FILTER: nep141:nbtc.bridge.near->nep141:gnosis-0x420ca0f9b9b604ce0fd9c18ef134c705e5fa3430.omft.near NEAR_INTENTS_STATUS_POLL_MS: "60000" NEAR_INTENTS_ACCOUNT_ID: unrip-dev.near TRADING_BTC_ASSET_ID: nep141:nbtc.bridge.near TRADING_BTC_TRACKED_ASSET_IDS: nep141:nbtc.bridge.near,nep141:btc.omft.near TRADING_BTC_SYMBOL: BTC TRADING_BTC_LABEL: BTC / nBTC reserve TRADING_BTC_DECIMALS: "8" TRADING_BTC_CHAIN: btc:mainnet TRADING_BTC_WITHDRAW_ADDRESS: "" TRADING_EURE_ASSET_ID: nep141:gnosis-0x420ca0f9b9b604ce0fd9c18ef134c705e5fa3430.omft.near TRADING_EURE_SYMBOL: EURe TRADING_EURE_DECIMALS: "18" TRADING_EURE_CHAIN: "eth:100" TRADING_EURE_WITHDRAW_ADDRESS: "0x6C40267e03A97B2132e7a7d3159C88534eBEfdFb" NEAR_INTENTS_CONTROL_API_ENABLED: "true" NEAR_INTENTS_CONTROL_HOST: 0.0.0.0 NEAR_INTENTS_CONTROL_PORT: "8081" MARKET_REFERENCE_CONTROL_HOST: 0.0.0.0 MARKET_REFERENCE_CONTROL_PORT: "8082" INVENTORY_SYNC_CONTROL_HOST: 0.0.0.0 INVENTORY_SYNC_CONTROL_PORT: "8083" LIQUIDITY_MANAGER_CONTROL_HOST: 0.0.0.0 LIQUIDITY_MANAGER_CONTROL_PORT: "8084" HISTORY_WRITER_CONTROL_HOST: 0.0.0.0 HISTORY_WRITER_CONTROL_PORT: "8085" STRATEGY_ENGINE_CONTROL_HOST: 0.0.0.0 STRATEGY_ENGINE_CONTROL_PORT: "8086" TRADE_EXECUTOR_CONTROL_HOST: 0.0.0.0 TRADE_EXECUTOR_CONTROL_PORT: "8087" OPS_SENTINEL_CONTROL_HOST: 0.0.0.0 OPS_SENTINEL_CONTROL_PORT: "8088" OPERATOR_DASHBOARD_CONTROL_HOST: 0.0.0.0 OPERATOR_DASHBOARD_CONTROL_PORT: "8090" NEAR_INTENTS_CONTROL_BASE_URL: http://near-intents-ingest.unrip.svc.cluster.local:8081 MARKET_REFERENCE_CONTROL_BASE_URL: http://market-reference-ingest.unrip.svc.cluster.local:8082 INVENTORY_SYNC_CONTROL_BASE_URL: http://inventory-sync.unrip.svc.cluster.local:8083 LIQUIDITY_MANAGER_CONTROL_BASE_URL: http://liquidity-manager.unrip.svc.cluster.local:8084 HISTORY_WRITER_CONTROL_BASE_URL: http://history-writer.unrip.svc.cluster.local:8085 STRATEGY_ENGINE_CONTROL_BASE_URL: http://strategy-engine.unrip.svc.cluster.local:8086 TRADE_EXECUTOR_CONTROL_BASE_URL: http://trade-executor.unrip.svc.cluster.local:8087 OPS_SENTINEL_CONTROL_BASE_URL: http://ops-sentinel.unrip.svc.cluster.local:8088 NOTIFICATION_NTFY_BASE_URL: http://ntfy.utility.svc.cluster.local NOTIFICATION_NTFY_TOPIC: unrip NOTIFICATION_NTFY_TIMEOUT_MS: "5000" KAFKA_BROKERS: redpanda.unrip.svc.cluster.local:9092 KAFKA_CLIENT_ID: unrip KAFKA_TOPIC_RAW_NEAR_INTENTS_QUOTE: raw.near_intents.quote KAFKA_TOPIC_NORM_SWAP_DEMAND: norm.swap_demand KAFKA_TOPIC_REF_MARKET_PRICE: ref.market_price KAFKA_TOPIC_STATE_INTENT_INVENTORY: state.intent_inventory KAFKA_TOPIC_OPS_LIQUIDITY_ACTION: ops.liquidity_action KAFKA_TOPIC_OPS_FUNDING_OBSERVATION: ops.funding_observation KAFKA_TOPIC_OPS_ALERT: ops.alert KAFKA_TOPIC_OPS_ENVIRONMENT_STATUS: ops.environment_status KAFKA_TOPIC_DECISION_TRADE_DECISION: decision.trade_decision KAFKA_TOPIC_CMD_EXECUTE_TRADE: cmd.execute_trade KAFKA_TOPIC_EXEC_TRADE_RESULT: exec.trade_result KAFKA_CONSUMER_GROUP_HISTORY: history-writer-v1 KAFKA_CONSUMER_GROUP_INVENTORY: inventory-sync-v1 KAFKA_CONSUMER_GROUP_STRATEGY: strategy-engine-v1 KAFKA_CONSUMER_GROUP_EXECUTOR: trade-executor-v1 KAFKA_CONSUMER_GROUP_OPS_SENTINEL: ops-sentinel-v1 KAFKA_CONSUMER_GROUP_OPERATOR_DASHBOARD: operator-dashboard-v1 HISTORY_WRITER_DERIVED_REFRESH_MAX_EVENT_AGE_MS: "300000" STRATEGY_STATE_DIR: /var/lib/unrip/strategy-state EXECUTOR_STATE_DIR: /var/lib/unrip/executor-state LIQUIDITY_STATE_DIR: /var/lib/unrip/liquidity-state MARKET_REFERENCE_REFRESH_MS: "5000" MARKET_REFERENCE_COINGECKO_REFRESH_MS: "15000" MARKET_REFERENCE_MAX_AGE_MS: "30000" MARKET_REFERENCE_KRAKEN_TICKER_URL: https://api.kraken.com/0/public/Ticker?pair=XBTEUR MARKET_REFERENCE_COINGECKO_URL: https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=eur INVENTORY_SYNC_REFRESH_MS: "15000" LIQUIDITY_REFRESH_MS: "30000" STRATEGY_GROSS_THRESHOLD_PCT: "0.49" STRATEGY_INITIAL_ARMED: "false" STRATEGY_MAX_NOTIONAL_EURE: "150" STRATEGY_PRICE_MAX_AGE_MS: "30000" STRATEGY_INVENTORY_MAX_AGE_MS: "30000" EXECUTOR_INITIAL_ARMED: "false" EXECUTOR_RESPONSE_TIMEOUT_MS: "10000" INTENT_REQUEST_DEFAULT_AMOUNT_EURE: "5" INTENT_REQUEST_MAX_AMOUNT_EURE: "5" INTENT_REQUEST_DEFAULT_SLIPPAGE_BPS: "200" INTENT_REQUEST_MAX_SLIPPAGE_BPS: "200" INTENT_REQUEST_MIN_DEADLINE_MS: "60000" INTENT_REQUEST_QUOTE_TIMEOUT_MS: "10000" INTENT_REQUEST_PUBLISH_TIMEOUT_MS: "10000" INTENT_REQUEST_STATUS_TIMEOUT_MS: "10000" INTENT_REQUEST_INVENTORY_MAX_AGE_MS: "30000" INTENT_REQUEST_PRICE_MAX_AGE_MS: "30000" LIQUIDITY_WITHDRAWALS_FROZEN: "true" BTC_FUNDING_OBSERVER_ENABLED: "true" BTC_FUNDING_OBSERVER_BASE_URL: https://mempool.space/api FUNDING_OBSERVATION_STUCK_MS: "3600000" OPS_SENTINEL_EVALUATION_MS: "5000" OPS_SENTINEL_PRICE_STALE_MS: "30000" OPS_SENTINEL_INVENTORY_STALE_MS: "30000" OPS_SENTINEL_FUNDING_CREDIT_PENDING_MS: "300000" OPS_SENTINEL_FUNDING_STUCK_MS: "3600000" OPERATOR_DASHBOARD_AUTH_MODE: stub OPERATOR_DASHBOARD_QUOTE_LIMIT: "10" OPERATOR_DASHBOARD_TRADE_PAGE_SIZE: "20" OPERATOR_DASHBOARD_UPSTREAM_TIMEOUT_MS: "3000" --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: strategy-state namespace: unrip spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 5Gi --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: executor-state namespace: unrip spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 5Gi --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: liquidity-state namespace: unrip spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 5Gi --- apiVersion: v1 kind: Service metadata: name: near-intents-ingest namespace: unrip spec: selector: app: near-intents-ingest ports: - name: control-api port: 8081 targetPort: 8081 --- apiVersion: v1 kind: Service metadata: name: market-reference-ingest namespace: unrip spec: selector: app: market-reference-ingest ports: - name: control-api port: 8082 targetPort: 8082 --- apiVersion: v1 kind: Service metadata: name: inventory-sync namespace: unrip spec: selector: app: inventory-sync ports: - name: control-api port: 8083 targetPort: 8083 --- apiVersion: v1 kind: Service metadata: name: liquidity-manager namespace: unrip spec: selector: app: liquidity-manager ports: - name: control-api port: 8084 targetPort: 8084 --- apiVersion: v1 kind: Service metadata: name: history-writer namespace: unrip spec: selector: app: history-writer ports: - name: control-api port: 8085 targetPort: 8085 --- apiVersion: v1 kind: Service metadata: name: strategy-engine namespace: unrip spec: selector: app: strategy-engine ports: - name: control-api port: 8086 targetPort: 8086 --- apiVersion: v1 kind: Service metadata: name: trade-executor namespace: unrip spec: selector: app: trade-executor ports: - name: control-api port: 8087 targetPort: 8087 --- apiVersion: v1 kind: Service metadata: name: ops-sentinel namespace: unrip spec: selector: app: ops-sentinel ports: - name: control-api port: 8088 targetPort: 8088 --- apiVersion: v1 kind: Service metadata: name: operator-dashboard namespace: unrip spec: selector: app: operator-dashboard ports: - name: http port: 8090 targetPort: 8090 --- apiVersion: apps/v1 kind: Deployment metadata: name: near-intents-ingest namespace: unrip spec: replicas: 1 selector: matchLabels: app: near-intents-ingest template: metadata: labels: app: near-intents-ingest app.kubernetes.io/part-of: unrip spec: imagePullSecrets: - name: unrip-registry-creds containers: - name: app image: ghcr.io/example/unrip:bootstrap imagePullPolicy: IfNotPresent command: ["node", "src/apps/near-intents-ingest.mjs"] ports: - name: control-api containerPort: 8081 envFrom: - configMapRef: name: unrip-config - secretRef: name: unrip-secrets --- apiVersion: apps/v1 kind: Deployment metadata: name: market-reference-ingest namespace: unrip spec: replicas: 1 selector: matchLabels: app: market-reference-ingest template: metadata: labels: app: market-reference-ingest app.kubernetes.io/part-of: unrip spec: imagePullSecrets: - name: unrip-registry-creds containers: - name: app image: ghcr.io/example/unrip:bootstrap imagePullPolicy: IfNotPresent command: ["node", "src/apps/market-reference-ingest.mjs"] ports: - name: control-api containerPort: 8082 envFrom: - configMapRef: name: unrip-config - secretRef: name: unrip-secrets --- apiVersion: apps/v1 kind: Deployment metadata: name: liquidity-manager namespace: unrip spec: replicas: 1 selector: matchLabels: app: liquidity-manager template: metadata: labels: app: liquidity-manager app.kubernetes.io/part-of: unrip spec: imagePullSecrets: - name: unrip-registry-creds containers: - name: app image: ghcr.io/example/unrip:bootstrap imagePullPolicy: IfNotPresent command: ["node", "src/apps/liquidity-manager.mjs"] ports: - name: control-api containerPort: 8084 envFrom: - configMapRef: name: unrip-config - secretRef: name: unrip-secrets volumeMounts: - name: liquidity-state mountPath: /var/lib/unrip/liquidity-state volumes: - name: liquidity-state persistentVolumeClaim: claimName: liquidity-state --- apiVersion: apps/v1 kind: Deployment metadata: name: inventory-sync namespace: unrip spec: replicas: 1 selector: matchLabels: app: inventory-sync template: metadata: labels: app: inventory-sync app.kubernetes.io/part-of: unrip spec: imagePullSecrets: - name: unrip-registry-creds containers: - name: app image: ghcr.io/example/unrip:bootstrap imagePullPolicy: IfNotPresent command: ["node", "src/apps/inventory-sync.mjs"] ports: - name: control-api containerPort: 8083 envFrom: - configMapRef: name: unrip-config - secretRef: name: unrip-secrets --- apiVersion: apps/v1 kind: Deployment metadata: name: history-writer namespace: unrip spec: replicas: 1 selector: matchLabels: app: history-writer template: metadata: labels: app: history-writer app.kubernetes.io/part-of: unrip spec: imagePullSecrets: - name: unrip-registry-creds containers: - name: app image: ghcr.io/example/unrip:bootstrap imagePullPolicy: IfNotPresent command: ["node", "src/apps/history-writer.mjs"] ports: - name: control-api containerPort: 8085 envFrom: - configMapRef: name: unrip-config - secretRef: name: unrip-secrets --- apiVersion: apps/v1 kind: Deployment metadata: name: ops-sentinel namespace: unrip spec: replicas: 1 selector: matchLabels: app: ops-sentinel template: metadata: labels: app: ops-sentinel app.kubernetes.io/part-of: unrip spec: imagePullSecrets: - name: unrip-registry-creds containers: - name: app image: ghcr.io/example/unrip:bootstrap imagePullPolicy: IfNotPresent command: ["node", "src/apps/ops-sentinel.mjs"] ports: - name: control-api containerPort: 8088 envFrom: - configMapRef: name: unrip-config - secretRef: name: unrip-secrets --- apiVersion: apps/v1 kind: Deployment metadata: name: strategy-engine namespace: unrip spec: replicas: 1 selector: matchLabels: app: strategy-engine template: metadata: labels: app: strategy-engine app.kubernetes.io/part-of: unrip spec: imagePullSecrets: - name: unrip-registry-creds containers: - name: app image: ghcr.io/example/unrip:bootstrap imagePullPolicy: IfNotPresent command: ["node", "src/apps/strategy-engine.mjs"] ports: - name: control-api containerPort: 8086 envFrom: - configMapRef: name: unrip-config - secretRef: name: unrip-secrets volumeMounts: - name: strategy-state mountPath: /var/lib/unrip/strategy-state volumes: - name: strategy-state persistentVolumeClaim: claimName: strategy-state --- apiVersion: apps/v1 kind: Deployment metadata: name: trade-executor namespace: unrip spec: replicas: 1 selector: matchLabels: app: trade-executor template: metadata: labels: app: trade-executor app.kubernetes.io/part-of: unrip spec: imagePullSecrets: - name: unrip-registry-creds containers: - name: app image: ghcr.io/example/unrip:bootstrap imagePullPolicy: IfNotPresent command: ["node", "src/apps/trade-executor.mjs"] ports: - name: control-api containerPort: 8087 envFrom: - configMapRef: name: unrip-config - secretRef: name: unrip-secrets volumeMounts: - name: executor-state mountPath: /var/lib/unrip/executor-state volumes: - name: executor-state persistentVolumeClaim: claimName: executor-state --- apiVersion: apps/v1 kind: Deployment metadata: name: operator-dashboard namespace: unrip spec: replicas: 1 selector: matchLabels: app: operator-dashboard template: metadata: labels: app: operator-dashboard app.kubernetes.io/part-of: unrip spec: imagePullSecrets: - name: unrip-registry-creds containers: - name: app image: ghcr.io/example/unrip:bootstrap imagePullPolicy: IfNotPresent command: ["node", "src/apps/operator-dashboard.mjs"] ports: - name: http containerPort: 8090 envFrom: - configMapRef: name: unrip-config - secretRef: name: unrip-secrets