All checks were successful
deploy / deploy (push) Successful in 31s
Proof: Strategy gross edge threshold is lowered to the user-approved 0.49 percent in repo defaults and Kubernetes deploy config; targeted threshold tests, dashboard build, and full npm test pass. Assumptions: User explicitly approved lowering below the previous 0.99 percent threshold for the active BTC/EURe NEAR Intents pair; max notional and funds exposure are unchanged. Still fake: Venue-native terminal fill events, fee attribution, realized per-trade PnL, and full inventory-skew strategy controls remain incomplete.
559 lines
14 KiB
YAML
559 lines
14 KiB
YAML
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://rpc.fastnear.com
|
|
NEAR_INTENTS_PAIR_FILTER: nep141:btc.omft.near->nep141:gnosis-0x420ca0f9b9b604ce0fd9c18ef134c705e5fa3430.omft.near
|
|
NEAR_INTENTS_ACCOUNT_ID: unrip-dev.near
|
|
TRADING_BTC_ASSET_ID: nep141:btc.omft.near
|
|
TRADING_BTC_SYMBOL: BTC
|
|
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
|
|
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_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
|
|
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"
|
|
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
|