From 3e2d94b12d0961387826e3e5200ecf48f7ec76b6 Mon Sep 17 00:00:00 2001 From: defiQUG Date: Fri, 27 Mar 2026 18:46:34 -0700 Subject: [PATCH] config: add route matrix, ops template, public-sector manifest, PMM mesh unit example Made-with: Cursor --- config/aggregator-route-matrix.csv | 26 + config/aggregator-route-matrix.json | 678 +++++++ config/proxmox-operational-template.json | 1762 +++++++++++++++++ config/public-sector-program-manifest.json | 75 + ...ain138-pmm-mesh-automation.service.example | 33 + 5 files changed, 2574 insertions(+) create mode 100644 config/aggregator-route-matrix.csv create mode 100644 config/aggregator-route-matrix.json create mode 100644 config/proxmox-operational-template.json create mode 100644 config/public-sector-program-manifest.json create mode 100644 config/systemd/chain138-pmm-mesh-automation.service.example diff --git a/config/aggregator-route-matrix.csv b/config/aggregator-route-matrix.csv new file mode 100644 index 0000000..389ede7 --- /dev/null +++ b/config/aggregator-route-matrix.csv @@ -0,0 +1,26 @@ +kind,routeId,status,routeType,fromChainId,toChainId,tokenInSymbol,tokenInAddress,tokenOutSymbol,tokenOutAddress,hopCount,bridgeType,bridgeAddress,aggregatorFamilies,tags,intermediateSymbols,legRefs,notesOrReason +liveSwapRoute,138-cUSDT-cUSDC-direct,live,swap,138,138,cUSDT,0x93E66202A11B1772E55407B32B44e5Cd8eda7f22,cUSDC,0xf22258f57794CC8E06237084b353Ab30fFfa640b,1,,,1inch|0x|LiFi,stable|direct|public,,0xff8d3b8fDF7B112759F076B69f4271D4209C0849, +liveSwapRoute,138-cUSDT-USDT-direct,live,swap,138,138,cUSDT,0x93E66202A11B1772E55407B32B44e5Cd8eda7f22,USDT,0x004b63A7B5b0E06f6bB6adb4a5F9f590BF3182D1,1,,,1inch|0x|LiFi,stable|official-mirror|public,,0x6fc60DEDc92a2047062294488539992710b99D71, +liveSwapRoute,138-cUSDC-USDC-direct,live,swap,138,138,cUSDC,0xf22258f57794CC8E06237084b353Ab30fFfa640b,USDC,0x71D6687F38b93CCad569Fa6352c876eea967201b,1,,,1inch|0x|LiFi,stable|official-mirror|public,,0x0309178ae30302D83c76d6Dd402a684eF3160eec, +liveSwapRoute,138-cUSDT-cXAUC-direct,live,swap,138,138,cUSDT,0x93E66202A11B1772E55407B32B44e5Cd8eda7f22,cXAUC,0x290E52a8819A4fbD0714E517225429aA2B70EC6b,1,,,1inch|0x|LiFi,xau-hub|public,,0x1AA55E2001E5651349AfF5A63FD7A7Ae44f0F1b0, +liveSwapRoute,138-cUSDC-cXAUC-direct,live,swap,138,138,cUSDC,0xf22258f57794CC8E06237084b353Ab30fFfa640b,cXAUC,0x290E52a8819A4fbD0714E517225429aA2B70EC6b,1,,,1inch|0x|LiFi,xau-hub|public,,0xEA9Ac6357CaCB42a83b9082B870610363B177cBa, +liveSwapRoute,138-cEURT-cXAUC-direct,live,swap,138,138,cEURT,0xdf4b71c61E5912712C1Bdd451416B9aC26949d72,cXAUC,0x290E52a8819A4fbD0714E517225429aA2B70EC6b,1,,,1inch|0x|LiFi,xau-hub|public,,0xbA99bc1eAAC164569d5AcA96C806934DDaF970Cf, +liveSwapRoute,138-cEURT-cUSDT-via-cXAUC,live,swap,138,138,cEURT,0xdf4b71c61E5912712C1Bdd451416B9aC26949d72,cUSDT,0x93E66202A11B1772E55407B32B44e5Cd8eda7f22,2,,,1inch|0x|LiFi,multihop|xau-hub|public,cXAUC,0xbA99bc1eAAC164569d5AcA96C806934DDaF970Cf|0x1AA55E2001E5651349AfF5A63FD7A7Ae44f0F1b0,Inferred from two live public pools. +liveSwapRoute,138-cEURT-cUSDC-via-cXAUC,live,swap,138,138,cEURT,0xdf4b71c61E5912712C1Bdd451416B9aC26949d72,cUSDC,0xf22258f57794CC8E06237084b353Ab30fFfa640b,2,,,1inch|0x|LiFi,multihop|xau-hub|public,cXAUC,0xbA99bc1eAAC164569d5AcA96C806934DDaF970Cf|0xEA9Ac6357CaCB42a83b9082B870610363B177cBa,Inferred from two live public pools. +liveSwapRoute,138-cUSDT-cUSDC-via-cXAUC,live,swap,138,138,cUSDT,0x93E66202A11B1772E55407B32B44e5Cd8eda7f22,cUSDC,0xf22258f57794CC8E06237084b353Ab30fFfa640b,2,,,1inch|0x|LiFi,multihop|xau-hub|public|alternate,cXAUC,0x1AA55E2001E5651349AfF5A63FD7A7Ae44f0F1b0|0xEA9Ac6357CaCB42a83b9082B870610363B177cBa,Alternate path to the deeper direct cUSDT/cUSDC pool. +liveBridgeRoute,138-WETH-1-ccip,live,bridge,138,1,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,,CCIP,0xcacfd227A040002e49e2e01626363071324f820a,LiFi,,,, +liveBridgeRoute,138-WETH-56-ccip,live,bridge,138,56,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,,CCIP,0xcacfd227A040002e49e2e01626363071324f820a,LiFi,,,, +liveBridgeRoute,138-WETH-137-ccip,live,bridge,138,137,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,,CCIP,0xcacfd227A040002e49e2e01626363071324f820a,LiFi,,,, +liveBridgeRoute,138-WETH-10-ccip,live,bridge,138,10,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,,CCIP,0xcacfd227A040002e49e2e01626363071324f820a,LiFi,,,, +liveBridgeRoute,138-WETH-42161-ccip,live,bridge,138,42161,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,,CCIP,0xcacfd227A040002e49e2e01626363071324f820a,LiFi,,,, +liveBridgeRoute,138-WETH-43114-ccip,live,bridge,138,43114,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,,CCIP,0xcacfd227A040002e49e2e01626363071324f820a,LiFi,,,, +liveBridgeRoute,138-WETH-8453-ccip,live,bridge,138,8453,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,,CCIP,0xcacfd227A040002e49e2e01626363071324f820a,LiFi,,,, +liveBridgeRoute,138-WETH-100-ccip,live,bridge,138,100,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,,CCIP,0xcacfd227A040002e49e2e01626363071324f820a,LiFi,,,, +liveBridgeRoute,138-WETH-25-ccip,live,bridge,138,25,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,,CCIP,0xcacfd227A040002e49e2e01626363071324f820a,LiFi,,,, +liveBridgeRoute,138-WETH-42220-ccip,live,bridge,138,42220,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,,CCIP,0xcacfd227A040002e49e2e01626363071324f820a,LiFi,,,, +liveBridgeRoute,138-WETH-651940-alltra,live,bridge,138,651940,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,,ALT,0x66FEBA2fC9a0B47F26DD4284DAd24F970436B8Dc,LiFi,,,, +liveBridgeRoute,138-WETH10-1-ccip,live,bridge,138,1,WETH10,0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f,WETH10,0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f,,CCIP,0xe0E93247376aa097dB308B92e6Ba36bA015535D0,LiFi,,,, +blockedOrPlannedRoute,138-compliant-stable-to-weth-bridgeable,blocked,swap-bridge-swap,138,1,cUSDT|cUSDC|cEURT,,,,,,,,,,,"No live public cUSDT/WETH, cUSDC/WETH, or cEURT/WETH pool on Chain 138." +blockedOrPlannedRoute,651940-public-dex-routes,planned,swap,651940,651940,,,,,,,,,,,,Uniswap V2/V3 and DODO are env placeholders only; no pool addresses are documented in-repo. +blockedOrPlannedRoute,cw-edge-pools-public-chains,planned,swap,1,43114,,,,,,,,,,,,"cW* token addresses exist on several public chains, but deployment-status.json contains no PMM pools." +blockedOrPlannedRoute,138-weth-1111-ccip,planned,bridge,138,1111,,,,,,,,,,,,Wemix bridge is pending funding and deployment. diff --git a/config/aggregator-route-matrix.json b/config/aggregator-route-matrix.json new file mode 100644 index 0000000..7ef1580 --- /dev/null +++ b/config/aggregator-route-matrix.json @@ -0,0 +1,678 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Canonical route matrix for 1inch/0x/LiFi-style adapter ingestion. Captures live Chain 138 public DEX routes, live bridge lanes, and planned-but-not-live routes that should be filtered out by executors.", + "version": "1.0.0", + "updated": "2026-03-27", + "homeChainId": 138, + "metadata": { + "generatedFrom": [ + "docs/11-references/LIQUIDITY_POOLS_MASTER_MAP.md", + "docs/11-references/DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md", + "config/routing-registry.json", + "config/token-mapping-multichain.json", + "cross-chain-pmm-lps/config/deployment-status.json" + ], + "verification": { + "verifiedAt": "2026-03-27", + "verifiedBy": "scripts/verify/check-pmm-pool-balances-chain138.sh", + "rpc": "http://192.168.11.211:8545" + }, + "adapterNotes": [ + "Executors should ingest only entries with status=live.", + "Entries with status=planned or blocked are included to make missing routes explicit and prevent false discovery.", + "Chain 138 has live DODO PMM pools but no native 1inch/0x support in this repo; adapter layers must map these routes into their own quote/execution abstractions." + ] + }, + "chains": { + "138": { + "name": "SMOM-DBIS-138 (DeFi Oracle Meta)", + "rpc": "https://rpc-core.d-bis.org", + "nativeDexes": [ + { + "dexId": "dodo_pmm_chain138", + "type": "dodo_pmm", + "integrationAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", + "providerAddress": "0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381", + "status": "live" + } + ] + }, + "651940": { + "name": "ALL Mainnet (Alltra)", + "nativeDexes": [ + { + "dexId": "allmainnet_uniswap_v2", + "type": "uniswap_v2", + "status": "planned" + }, + { + "dexId": "allmainnet_uniswap_v3", + "type": "uniswap_v3", + "status": "planned" + }, + { + "dexId": "allmainnet_dodo", + "type": "dodo_pmm", + "status": "planned" + } + ] + } + }, + "tokens": { + "138": { + "cUSDT": { + "address": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22", + "decimals": 6 + }, + "cUSDC": { + "address": "0xf22258f57794CC8E06237084b353Ab30fFfa640b", + "decimals": 6 + }, + "USDT": { + "address": "0x004b63A7B5b0E06f6bB6adb4a5F9f590BF3182D1", + "decimals": 6 + }, + "USDC": { + "address": "0x71D6687F38b93CCad569Fa6352c876eea967201b", + "decimals": 6 + }, + "cXAUC": { + "address": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", + "decimals": 6 + }, + "cEURT": { + "address": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72", + "decimals": 6 + }, + "WETH": { + "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "decimals": 18 + }, + "WETH10": { + "address": "0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f", + "decimals": 18 + } + } + }, + "liveSwapRoutes": [ + { + "routeId": "138-cUSDT-cUSDC-direct", + "status": "live", + "aggregatorFamilies": [ + "1inch", + "0x", + "LiFi" + ], + "fromChainId": 138, + "toChainId": 138, + "tokenInSymbol": "cUSDT", + "tokenInAddress": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22", + "tokenOutSymbol": "cUSDC", + "tokenOutAddress": "0xf22258f57794CC8E06237084b353Ab30fFfa640b", + "routeType": "swap", + "hopCount": 1, + "legs": [ + { + "kind": "swap", + "protocol": "dodo_pmm", + "executor": "DODOPMMIntegration", + "executorAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", + "poolAddress": "0xff8d3b8fDF7B112759F076B69f4271D4209C0849", + "tokenInAddress": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22", + "tokenOutAddress": "0xf22258f57794CC8E06237084b353Ab30fFfa640b", + "reserves": { + "cUSDT": "10000000.000000", + "cUSDC": "10000000.000000" + } + } + ], + "tags": [ + "stable", + "direct", + "public" + ] + }, + { + "routeId": "138-cUSDT-USDT-direct", + "status": "live", + "aggregatorFamilies": [ + "1inch", + "0x", + "LiFi" + ], + "fromChainId": 138, + "toChainId": 138, + "tokenInSymbol": "cUSDT", + "tokenInAddress": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22", + "tokenOutSymbol": "USDT", + "tokenOutAddress": "0x004b63A7B5b0E06f6bB6adb4a5F9f590BF3182D1", + "routeType": "swap", + "hopCount": 1, + "legs": [ + { + "kind": "swap", + "protocol": "dodo_pmm", + "executor": "DODOPMMIntegration", + "executorAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", + "poolAddress": "0x6fc60DEDc92a2047062294488539992710b99D71", + "tokenInAddress": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22", + "tokenOutAddress": "0x004b63A7B5b0E06f6bB6adb4a5F9f590BF3182D1", + "reserves": { + "cUSDT": "10000000.000000", + "USDT": "10000000.000000" + } + } + ], + "tags": [ + "stable", + "official-mirror", + "public" + ] + }, + { + "routeId": "138-cUSDC-USDC-direct", + "status": "live", + "aggregatorFamilies": [ + "1inch", + "0x", + "LiFi" + ], + "fromChainId": 138, + "toChainId": 138, + "tokenInSymbol": "cUSDC", + "tokenInAddress": "0xf22258f57794CC8E06237084b353Ab30fFfa640b", + "tokenOutSymbol": "USDC", + "tokenOutAddress": "0x71D6687F38b93CCad569Fa6352c876eea967201b", + "routeType": "swap", + "hopCount": 1, + "legs": [ + { + "kind": "swap", + "protocol": "dodo_pmm", + "executor": "DODOPMMIntegration", + "executorAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", + "poolAddress": "0x0309178ae30302D83c76d6Dd402a684eF3160eec", + "tokenInAddress": "0xf22258f57794CC8E06237084b353Ab30fFfa640b", + "tokenOutAddress": "0x71D6687F38b93CCad569Fa6352c876eea967201b", + "reserves": { + "cUSDC": "10000000.000000", + "USDC": "10000000.000000" + } + } + ], + "tags": [ + "stable", + "official-mirror", + "public" + ] + }, + { + "routeId": "138-cUSDT-cXAUC-direct", + "status": "live", + "aggregatorFamilies": [ + "1inch", + "0x", + "LiFi" + ], + "fromChainId": 138, + "toChainId": 138, + "tokenInSymbol": "cUSDT", + "tokenInAddress": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22", + "tokenOutSymbol": "cXAUC", + "tokenOutAddress": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", + "routeType": "swap", + "hopCount": 1, + "legs": [ + { + "kind": "swap", + "protocol": "dodo_pmm", + "executor": "DODOPMMIntegration", + "executorAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", + "poolAddress": "0x1AA55E2001E5651349AfF5A63FD7A7Ae44f0F1b0", + "tokenInAddress": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22", + "tokenOutAddress": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", + "reserves": { + "cUSDT": "2666965.000000", + "cXAUC": "519.477000" + } + } + ], + "tags": [ + "xau-hub", + "public" + ] + }, + { + "routeId": "138-cUSDC-cXAUC-direct", + "status": "live", + "aggregatorFamilies": [ + "1inch", + "0x", + "LiFi" + ], + "fromChainId": 138, + "toChainId": 138, + "tokenInSymbol": "cUSDC", + "tokenInAddress": "0xf22258f57794CC8E06237084b353Ab30fFfa640b", + "tokenOutSymbol": "cXAUC", + "tokenOutAddress": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", + "routeType": "swap", + "hopCount": 1, + "legs": [ + { + "kind": "swap", + "protocol": "dodo_pmm", + "executor": "DODOPMMIntegration", + "executorAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", + "poolAddress": "0xEA9Ac6357CaCB42a83b9082B870610363B177cBa", + "tokenInAddress": "0xf22258f57794CC8E06237084b353Ab30fFfa640b", + "tokenOutAddress": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", + "reserves": { + "cUSDC": "1000000.000000", + "cXAUC": "194.782554" + } + } + ], + "tags": [ + "xau-hub", + "public" + ] + }, + { + "routeId": "138-cEURT-cXAUC-direct", + "status": "live", + "aggregatorFamilies": [ + "1inch", + "0x", + "LiFi" + ], + "fromChainId": 138, + "toChainId": 138, + "tokenInSymbol": "cEURT", + "tokenInAddress": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72", + "tokenOutSymbol": "cXAUC", + "tokenOutAddress": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", + "routeType": "swap", + "hopCount": 1, + "legs": [ + { + "kind": "swap", + "protocol": "dodo_pmm", + "executor": "DODOPMMIntegration", + "executorAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", + "poolAddress": "0xbA99bc1eAAC164569d5AcA96C806934DDaF970Cf", + "tokenInAddress": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72", + "tokenOutAddress": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", + "reserves": { + "cEURT": "1000000.000000", + "cXAUC": "225.577676" + } + } + ], + "tags": [ + "xau-hub", + "public" + ] + }, + { + "routeId": "138-cEURT-cUSDT-via-cXAUC", + "status": "live", + "aggregatorFamilies": [ + "1inch", + "0x", + "LiFi" + ], + "fromChainId": 138, + "toChainId": 138, + "tokenInSymbol": "cEURT", + "tokenInAddress": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72", + "tokenOutSymbol": "cUSDT", + "tokenOutAddress": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22", + "routeType": "swap", + "hopCount": 2, + "intermediateSymbols": [ + "cXAUC" + ], + "legs": [ + { + "kind": "swap", + "protocol": "dodo_pmm", + "executorAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", + "poolAddress": "0xbA99bc1eAAC164569d5AcA96C806934DDaF970Cf", + "tokenInAddress": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72", + "tokenOutAddress": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b" + }, + { + "kind": "swap", + "protocol": "dodo_pmm", + "executorAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", + "poolAddress": "0x1AA55E2001E5651349AfF5A63FD7A7Ae44f0F1b0", + "tokenInAddress": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", + "tokenOutAddress": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22" + } + ], + "tags": [ + "multihop", + "xau-hub", + "public" + ], + "notes": [ + "Inferred from two live public pools." + ] + }, + { + "routeId": "138-cEURT-cUSDC-via-cXAUC", + "status": "live", + "aggregatorFamilies": [ + "1inch", + "0x", + "LiFi" + ], + "fromChainId": 138, + "toChainId": 138, + "tokenInSymbol": "cEURT", + "tokenInAddress": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72", + "tokenOutSymbol": "cUSDC", + "tokenOutAddress": "0xf22258f57794CC8E06237084b353Ab30fFfa640b", + "routeType": "swap", + "hopCount": 2, + "intermediateSymbols": [ + "cXAUC" + ], + "legs": [ + { + "kind": "swap", + "protocol": "dodo_pmm", + "executorAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", + "poolAddress": "0xbA99bc1eAAC164569d5AcA96C806934DDaF970Cf", + "tokenInAddress": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72", + "tokenOutAddress": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b" + }, + { + "kind": "swap", + "protocol": "dodo_pmm", + "executorAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", + "poolAddress": "0xEA9Ac6357CaCB42a83b9082B870610363B177cBa", + "tokenInAddress": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", + "tokenOutAddress": "0xf22258f57794CC8E06237084b353Ab30fFfa640b" + } + ], + "tags": [ + "multihop", + "xau-hub", + "public" + ], + "notes": [ + "Inferred from two live public pools." + ] + }, + { + "routeId": "138-cUSDT-cUSDC-via-cXAUC", + "status": "live", + "aggregatorFamilies": [ + "1inch", + "0x", + "LiFi" + ], + "fromChainId": 138, + "toChainId": 138, + "tokenInSymbol": "cUSDT", + "tokenInAddress": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22", + "tokenOutSymbol": "cUSDC", + "tokenOutAddress": "0xf22258f57794CC8E06237084b353Ab30fFfa640b", + "routeType": "swap", + "hopCount": 2, + "intermediateSymbols": [ + "cXAUC" + ], + "legs": [ + { + "kind": "swap", + "protocol": "dodo_pmm", + "executorAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", + "poolAddress": "0x1AA55E2001E5651349AfF5A63FD7A7Ae44f0F1b0", + "tokenInAddress": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22", + "tokenOutAddress": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b" + }, + { + "kind": "swap", + "protocol": "dodo_pmm", + "executorAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", + "poolAddress": "0xEA9Ac6357CaCB42a83b9082B870610363B177cBa", + "tokenInAddress": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", + "tokenOutAddress": "0xf22258f57794CC8E06237084b353Ab30fFfa640b" + } + ], + "tags": [ + "multihop", + "xau-hub", + "public", + "alternate" + ], + "notes": [ + "Alternate path to the deeper direct cUSDT/cUSDC pool." + ] + } + ], + "liveBridgeRoutes": [ + { + "routeId": "138-WETH-1-ccip", + "status": "live", + "aggregatorFamilies": [ + "LiFi" + ], + "fromChainId": 138, + "toChainId": 1, + "assetSymbol": "WETH", + "assetAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "routeType": "bridge", + "bridgeType": "CCIP", + "bridgeAddress": "0xcacfd227A040002e49e2e01626363071324f820a", + "label": "CCIPWETH9Bridge" + }, + { + "routeId": "138-WETH-56-ccip", + "status": "live", + "aggregatorFamilies": [ + "LiFi" + ], + "fromChainId": 138, + "toChainId": 56, + "assetSymbol": "WETH", + "assetAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "routeType": "bridge", + "bridgeType": "CCIP", + "bridgeAddress": "0xcacfd227A040002e49e2e01626363071324f820a", + "label": "CCIPWETH9Bridge" + }, + { + "routeId": "138-WETH-137-ccip", + "status": "live", + "aggregatorFamilies": [ + "LiFi" + ], + "fromChainId": 138, + "toChainId": 137, + "assetSymbol": "WETH", + "assetAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "routeType": "bridge", + "bridgeType": "CCIP", + "bridgeAddress": "0xcacfd227A040002e49e2e01626363071324f820a", + "label": "CCIPWETH9Bridge" + }, + { + "routeId": "138-WETH-10-ccip", + "status": "live", + "aggregatorFamilies": [ + "LiFi" + ], + "fromChainId": 138, + "toChainId": 10, + "assetSymbol": "WETH", + "assetAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "routeType": "bridge", + "bridgeType": "CCIP", + "bridgeAddress": "0xcacfd227A040002e49e2e01626363071324f820a", + "label": "CCIPWETH9Bridge" + }, + { + "routeId": "138-WETH-42161-ccip", + "status": "live", + "aggregatorFamilies": [ + "LiFi" + ], + "fromChainId": 138, + "toChainId": 42161, + "assetSymbol": "WETH", + "assetAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "routeType": "bridge", + "bridgeType": "CCIP", + "bridgeAddress": "0xcacfd227A040002e49e2e01626363071324f820a", + "label": "CCIPWETH9Bridge" + }, + { + "routeId": "138-WETH-43114-ccip", + "status": "live", + "aggregatorFamilies": [ + "LiFi" + ], + "fromChainId": 138, + "toChainId": 43114, + "assetSymbol": "WETH", + "assetAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "routeType": "bridge", + "bridgeType": "CCIP", + "bridgeAddress": "0xcacfd227A040002e49e2e01626363071324f820a", + "label": "CCIPWETH9Bridge" + }, + { + "routeId": "138-WETH-8453-ccip", + "status": "live", + "aggregatorFamilies": [ + "LiFi" + ], + "fromChainId": 138, + "toChainId": 8453, + "assetSymbol": "WETH", + "assetAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "routeType": "bridge", + "bridgeType": "CCIP", + "bridgeAddress": "0xcacfd227A040002e49e2e01626363071324f820a", + "label": "CCIPWETH9Bridge" + }, + { + "routeId": "138-WETH-100-ccip", + "status": "live", + "aggregatorFamilies": [ + "LiFi" + ], + "fromChainId": 138, + "toChainId": 100, + "assetSymbol": "WETH", + "assetAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "routeType": "bridge", + "bridgeType": "CCIP", + "bridgeAddress": "0xcacfd227A040002e49e2e01626363071324f820a", + "label": "CCIPWETH9Bridge" + }, + { + "routeId": "138-WETH-25-ccip", + "status": "live", + "aggregatorFamilies": [ + "LiFi" + ], + "fromChainId": 138, + "toChainId": 25, + "assetSymbol": "WETH", + "assetAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "routeType": "bridge", + "bridgeType": "CCIP", + "bridgeAddress": "0xcacfd227A040002e49e2e01626363071324f820a", + "label": "CCIPWETH9Bridge" + }, + { + "routeId": "138-WETH-42220-ccip", + "status": "live", + "aggregatorFamilies": [ + "LiFi" + ], + "fromChainId": 138, + "toChainId": 42220, + "assetSymbol": "WETH", + "assetAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "routeType": "bridge", + "bridgeType": "CCIP", + "bridgeAddress": "0xcacfd227A040002e49e2e01626363071324f820a", + "label": "CCIPWETH9Bridge" + }, + { + "routeId": "138-WETH-651940-alltra", + "status": "live", + "aggregatorFamilies": [ + "LiFi" + ], + "fromChainId": 138, + "toChainId": 651940, + "assetSymbol": "WETH", + "assetAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "routeType": "bridge", + "bridgeType": "ALT", + "bridgeAddress": "0x66FEBA2fC9a0B47F26DD4284DAd24F970436B8Dc", + "label": "AlltraAdapter" + }, + { + "routeId": "138-WETH10-1-ccip", + "status": "live", + "aggregatorFamilies": [ + "LiFi" + ], + "fromChainId": 138, + "toChainId": 1, + "assetSymbol": "WETH10", + "assetAddress": "0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f", + "routeType": "bridge", + "bridgeType": "CCIP", + "bridgeAddress": "0xe0E93247376aa097dB308B92e6Ba36bA015535D0", + "label": "CCIPWETH10Bridge" + } + ], + "blockedOrPlannedRoutes": [ + { + "routeId": "138-compliant-stable-to-weth-bridgeable", + "status": "blocked", + "fromChainId": 138, + "toChainId": 1, + "tokenInSymbols": [ + "cUSDT", + "cUSDC", + "cEURT" + ], + "routeType": "swap-bridge-swap", + "reason": "No live public cUSDT/WETH, cUSDC/WETH, or cEURT/WETH pool on Chain 138." + }, + { + "routeId": "651940-public-dex-routes", + "status": "planned", + "fromChainId": 651940, + "toChainId": 651940, + "routeType": "swap", + "reason": "Uniswap V2/V3 and DODO are env placeholders only; no pool addresses are documented in-repo." + }, + { + "routeId": "cw-edge-pools-public-chains", + "status": "planned", + "fromChainId": 1, + "toChainId": 43114, + "routeType": "swap", + "reason": "cW* token addresses exist on several public chains, but deployment-status.json contains no PMM pools." + }, + { + "routeId": "138-weth-1111-ccip", + "status": "planned", + "fromChainId": 138, + "toChainId": 1111, + "routeType": "bridge", + "reason": "Wemix bridge is pending funding and deployment." + } + ] +} diff --git a/config/proxmox-operational-template.json b/config/proxmox-operational-template.json new file mode 100644 index 0000000..805821a --- /dev/null +++ b/config/proxmox-operational-template.json @@ -0,0 +1,1762 @@ +{ + "schemaVersion": "1.0.0", + "updated": "2026-03-23", + "description": "Operational template: Proxmox VE nodes, LAN/WAN, NPMplus ingress, workloads (VMID/IP/hostname/FQDN), Besu peering summary, and deployment prerequisites. Authoritative detail remains in docs/04-configuration/ALL_VMIDS_ENDPOINTS.md and config/ip-addresses.conf \u2014 update those first, then sync this file. Live inventory reconciled 2026-03-23 vs cluster SSH audit; order-legal (10070) ARP fix 2026-03-25 (IP_ORDER_LEGAL).", + "canonicalSources": [ + "config/ip-addresses.conf", + "docs/04-configuration/ALL_VMIDS_ENDPOINTS.md", + "docs/11-references/NETWORK_CONFIGURATION_MASTER.md", + "docs/03-deployment/DEPLOYMENT_ORDER_OF_OPERATIONS.md", + "docs/02-architecture/CHAIN138_CANONICAL_NETWORK_ROLES_VALIDATORS_SENTRY_AND_RPC.md" + ], + "network": { + "management_lan": { + "cidr": "192.168.11.0/24", + "gateway": "192.168.11.1", + "vlan_id": 11, + "vlan_name": "MGMT-LAN", + "dns_resolvers_preferred": [ + "1.1.1.1", + "1.0.0.1" + ] + }, + "public_ipv4_block_spectrum": { + "cidr": "76.53.10.32/28", + "gateway": "76.53.10.33", + "udm_pro_port_forwards": "80/443/81 per NPMplus instance; see npmplus_instances[]" + } + }, + "proxmox_nodes": [ + { + "hostname": "ml110", + "mgmt_ipv4": "192.168.11.10", + "role": "legacy_cluster_member_or_wan_aggregator", + "ui_url": "https://192.168.11.10:8006", + "notes": "Repurpose to OPNsense/pfSense WAN aggregator planned; migrate workloads to R630s before cutover. See NETWORK_CONFIGURATION_MASTER.md." + }, + { + "hostname": "r630-01", + "mgmt_ipv4": "192.168.11.11", + "role": "primary_compute_chain138_rpc_ccip_relay_sankofa", + "ui_url": "https://192.168.11.11:8006", + "cluster_name": "h" + }, + { + "hostname": "r630-02", + "mgmt_ipv4": "192.168.11.12", + "role": "firefly_npmplus_secondary_mim4u_mifos_support", + "ui_url": "https://192.168.11.12:8006", + "cluster_name": "h" + } + ], + "cluster_peering": { + "stack": "Proxmox VE + corosync", + "cluster_name": "h", + "ring0": { + "network": "192.168.11.0/24", + "description": "Management LAN; all nodes reach gateway 192.168.11.1" + }, + "firewall_udp": [ + "5405-5412" + ], + "documentation": [ + "docs/04-configuration/UDM_PRO_PROXMOX_CLUSTER.md" + ] + }, + "besu_chain138_peering_model": { + "chain_id": 138, + "summary": "Validators (1000\u20131004) \u2194 Sentries (1500\u20131506) \u2194 RPC tier (2101 core, 2201 public, 230x named, 240x thirdweb). Use canonical roles doc for allowed adjacencies and ops.", + "p2p_port_tcp_udp": 30303, + "doc_ref": "docs/02-architecture/CHAIN138_CANONICAL_NETWORK_ROLES_VALIDATORS_SENTRY_AND_RPC.md" + }, + "deployment_requirements": { + "infrastructure": [ + "UDM Pro: VLAN 11, gateway, port forwards to NPMplus internal IPs", + "Proxmox: quorate cluster; vmbr0 (VLAN-aware) on each node; storage for CT/VM disks", + "DNS: public A/AAAA or Cloudflare for d-bis.org, sankofa.nexus, defi-oracle.io hostnames", + "NPMplus proxy hosts aligned with ALL_VMIDS_ENDPOINTS NPMplus table (fix stale targets e.g. rpc.public-0138 \u2192 192.168.11.240:443)" + ], + "chain138_contracts": [ + "Core RPC VMID 2101 http://192.168.11.211:8545 for deploy only", + "smom-dbis-138/.env: PRIVATE_KEY, RPC_URL_138, gas/nonce discipline per DEPLOYMENT_ORDER_OF_OPERATIONS.md Phase 0" + ], + "operator_automation": [ + "Repo root .env + smom-dbis-138/.env for operator scripts (load-project-env.sh)", + "Phoenix Deploy API optional: PHOENIX_RAILING_URL on Sankofa API; manifest GET /api/v1/public-sector/programs" + ] + }, + "npmplus_instances": [ + { + "vmid": 10233, + "internal_ipv4": [ + "192.168.11.166", + "192.168.11.167" + ], + "primary_ingress_ip": "192.168.11.167", + "public_ipv4": "76.53.10.36", + "purpose": "Main d-bis.org, explorer, Option B RPC hostnames, MIM4U, primary ingress" + }, + { + "vmid": 10234, + "internal_ipv4": [ + "192.168.11.168" + ], + "public_ipv4": "76.53.10.37", + "purpose": "Secondary / HA NPMplus (verify running; doc may show stopped)", + "status_note": "Confirm on cluster before relying on HA" + }, + { + "vmid": 10235, + "internal_ipv4": [ + "192.168.11.169" + ], + "public_ipv4": "76.53.10.38", + "designated_public_ip_alt": "76.53.10.42", + "purpose": "rpc-core-2, Alltra, HYBX \u2014 see NPMPLUS_ALLTRA_HYBX_MASTER_PLAN.md" + }, + { + "vmid": 10236, + "internal_ipv4": [ + "192.168.11.170" + ], + "public_ipv4": "76.53.10.40", + "purpose": "Dev/Codespaces tunnel, Gitea, Proxmox admin UI" + }, + { + "vmid": 10237, + "internal_ipv4": [ + "192.168.11.171" + ], + "purpose": "Mifos NPMplus front; mifos.d-bis.org \u2192 VMID 5800" + } + ], + "services": [ + { + "vmid": 100, + "hostname": "proxmox-mail-gateway", + "ipv4": "192.168.11.32", + "preferred_node": "r630-02", + "category": "infra", + "ports": [ + { + "port": 25, + "name": "smtp" + }, + { + "port": 587, + "name": "submission" + } + ], + "fqdns": [] + }, + { + "vmid": 101, + "hostname": "proxmox-datacenter-manager", + "ipv4": "192.168.11.33", + "preferred_node": "r630-02", + "category": "infra", + "ports": [ + { + "port": 8006, + "name": "pve-ui" + } + ], + "fqdns": [] + }, + { + "vmid": 103, + "hostname": "omada", + "ipv4": "192.168.11.30", + "preferred_node": "r630-02", + "category": "infra", + "ports": [ + { + "port": 8043, + "name": "omada" + } + ], + "fqdns": [] + }, + { + "vmid": 104, + "hostname": "gitea", + "ipv4": "192.168.11.31", + "preferred_node": "r630-02", + "category": "infra", + "ports": [ + { + "port": 80, + "name": "http" + }, + { + "port": 443, + "name": "https" + } + ], + "fqdns": [] + }, + { + "vmid": 105, + "hostname": "nginxproxymanager", + "ipv4": "192.168.11.26", + "preferred_node": "r630-02", + "category": "legacy_proxy", + "ports": [ + { + "port": 80 + }, + { + "port": 81 + }, + { + "port": 443 + } + ], + "fqdns": [] + }, + { + "vmid": 130, + "hostname": "monitoring-1", + "ipv4": "192.168.11.27", + "preferred_node": "r630-02", + "category": "monitoring", + "ports": [ + { + "port": 80 + }, + { + "port": 443 + } + ], + "fqdns": [] + }, + { + "vmid": 1000, + "hostname": "besu-validator-1", + "ipv4": "192.168.11.100", + "preferred_node": "r630-01", + "category": "besu_validator", + "ports": [ + { + "port": 30303, + "name": "p2p" + }, + { + "port": 9545, + "name": "metrics" + } + ], + "peering_layer": "validators_to_sentries", + "fqdns": [] + }, + { + "vmid": 1001, + "hostname": "besu-validator-2", + "ipv4": "192.168.11.101", + "preferred_node": "r630-01", + "category": "besu_validator", + "ports": [ + { + "port": 30303 + }, + { + "port": 9545 + } + ], + "peering_layer": "validators_to_sentries", + "fqdns": [] + }, + { + "vmid": 1002, + "hostname": "besu-validator-3", + "ipv4": "192.168.11.102", + "preferred_node": "r630-01", + "category": "besu_validator", + "ports": [ + { + "port": 30303 + }, + { + "port": 9545 + } + ], + "peering_layer": "validators_to_sentries", + "fqdns": [] + }, + { + "vmid": 1003, + "hostname": "besu-validator-4", + "ipv4": "192.168.11.103", + "preferred_node": "r630-01", + "category": "besu_validator", + "ports": [ + { + "port": 30303 + }, + { + "port": 9545 + } + ], + "peering_layer": "validators_to_sentries", + "fqdns": [] + }, + { + "vmid": 1004, + "hostname": "besu-validator-5", + "ipv4": "192.168.11.104", + "preferred_node": "r630-01", + "category": "besu_validator", + "ports": [ + { + "port": 30303 + }, + { + "port": 9545 + } + ], + "peering_layer": "validators_to_sentries", + "fqdns": [] + }, + { + "vmid": 1500, + "hostname": "besu-sentry-1", + "ipv4": "192.168.11.150", + "preferred_node": "r630-01", + "category": "besu_sentry", + "ports": [ + { + "port": 30303 + }, + { + "port": 9545 + } + ], + "peering_layer": "sentry_boundary", + "fqdns": [] + }, + { + "vmid": 1501, + "hostname": "besu-sentry-2", + "ipv4": "192.168.11.151", + "preferred_node": "r630-01", + "category": "besu_sentry", + "ports": [ + { + "port": 30303 + }, + { + "port": 9545 + } + ], + "peering_layer": "sentry_boundary", + "fqdns": [] + }, + { + "vmid": 1502, + "hostname": "besu-sentry-3", + "ipv4": "192.168.11.152", + "preferred_node": "r630-01", + "category": "besu_sentry", + "ports": [ + { + "port": 30303 + }, + { + "port": 9545 + } + ], + "peering_layer": "sentry_boundary", + "fqdns": [] + }, + { + "vmid": 1503, + "hostname": "besu-sentry-4", + "ipv4": "192.168.11.153", + "preferred_node": "r630-01", + "category": "besu_sentry", + "ports": [ + { + "port": 30303 + }, + { + "port": 9545 + } + ], + "peering_layer": "sentry_boundary", + "fqdns": [] + }, + { + "vmid": 1504, + "hostname": "besu-sentry-ali", + "ipv4": "192.168.11.154", + "preferred_node": "r630-01", + "category": "besu_sentry", + "ports": [ + { + "port": 30303 + }, + { + "port": 9545 + } + ], + "peering_layer": "sentry_boundary", + "fqdns": [] + }, + { + "vmid": 1505, + "hostname": "besu-sentry-alltra-1", + "ipv4": "192.168.11.213", + "preferred_node": "r630-01", + "category": "besu_sentry", + "ports": [ + { + "port": 30303 + }, + { + "port": 9545 + } + ], + "peering_layer": "sentry_boundary", + "fqdns": [] + }, + { + "vmid": 1506, + "hostname": "besu-sentry-alltra-2", + "ipv4": "192.168.11.214", + "preferred_node": "r630-01", + "category": "besu_sentry", + "ports": [ + { + "port": 30303 + }, + { + "port": 9545 + } + ], + "peering_layer": "sentry_boundary", + "fqdns": [] + }, + { + "vmid": 2101, + "hostname": "besu-rpc-core-1", + "ipv4": "192.168.11.211", + "preferred_node": "r630-01", + "category": "rpc_core", + "ports": [ + { + "port": 8545, + "name": "jsonrpc-http" + }, + { + "port": 8546, + "name": "jsonrpc-ws" + }, + { + "port": 30303, + "name": "p2p" + } + ], + "peering_layer": "rpc_tier", + "fqdns": [ + "rpc-http-prv.d-bis.org", + "rpc-ws-prv.d-bis.org" + ] + }, + { + "vmid": 2102, + "hostname": "besu-rpc-core-2", + "ipv4": "192.168.11.212", + "preferred_node": "r630-01", + "category": "rpc_core", + "ports": [ + { + "port": 8545 + }, + { + "port": 8546 + }, + { + "port": 30303 + } + ], + "peering_layer": "rpc_tier", + "fqdns": [ + "rpc-core-2.d-bis.org" + ], + "notes": "Nathan core-2; NPMplus 10235 / tunnel per NPMPLUS_FOUR_INSTANCES_MASTER.md" + }, + { + "vmid": 2201, + "hostname": "besu-rpc-public-1", + "ipv4": "192.168.11.221", + "preferred_node": "r630-01", + "category": "rpc_public", + "ports": [ + { + "port": 8545 + }, + { + "port": 8546 + }, + { + "port": 30303 + } + ], + "peering_layer": "rpc_tier", + "fqdns": [ + "rpc-http-pub.d-bis.org", + "rpc-ws-pub.d-bis.org" + ] + }, + { + "vmid": 2301, + "hostname": "besu-rpc-private-1", + "ipv4": "192.168.11.232", + "preferred_node": "r630-01", + "category": "rpc_private", + "ports": [ + { + "port": 8545 + }, + { + "port": 8546 + } + ], + "peering_layer": "rpc_tier", + "fqdns": [], + "status_note": "Documented stopped at times; verify before production dependency" + }, + { + "vmid": 2303, + "hostname": "besu-rpc-ali-0x8a", + "ipv4": "192.168.11.233", + "preferred_node": "r630-01", + "category": "rpc_named", + "ports": [ + { + "port": 8545 + }, + { + "port": 8546 + }, + { + "port": 30303 + } + ], + "peering_layer": "rpc_tier", + "fqdns": [] + }, + { + "vmid": 2304, + "hostname": "besu-rpc-ali-0x1", + "ipv4": "192.168.11.234", + "preferred_node": "r630-01", + "category": "rpc_named", + "ports": [ + { + "port": 8545 + }, + { + "port": 8546 + }, + { + "port": 30303 + } + ], + "peering_layer": "rpc_tier", + "fqdns": [] + }, + { + "vmid": 2305, + "hostname": "besu-rpc-luis-0x8a", + "ipv4": "192.168.11.235", + "preferred_node": "r630-01", + "category": "rpc_named", + "ports": [ + { + "port": 8545 + }, + { + "port": 8546 + }, + { + "port": 30303 + } + ], + "peering_layer": "rpc_tier", + "fqdns": [] + }, + { + "vmid": 2306, + "hostname": "besu-rpc-luis-0x1", + "ipv4": "192.168.11.236", + "preferred_node": "r630-01", + "category": "rpc_named", + "ports": [ + { + "port": 8545 + }, + { + "port": 8546 + }, + { + "port": 30303 + } + ], + "peering_layer": "rpc_tier", + "fqdns": [] + }, + { + "vmid": 2307, + "hostname": "besu-rpc-putu-0x8a", + "ipv4": "192.168.11.237", + "preferred_node": "r630-01", + "category": "rpc_named", + "ports": [ + { + "port": 8545 + }, + { + "port": 8546 + }, + { + "port": 30303 + } + ], + "peering_layer": "rpc_tier", + "fqdns": [] + }, + { + "vmid": 2308, + "hostname": "besu-rpc-putu-0x1", + "ipv4": "192.168.11.238", + "preferred_node": "r630-01", + "category": "rpc_named", + "ports": [ + { + "port": 8545 + }, + { + "port": 8546 + }, + { + "port": 30303 + } + ], + "peering_layer": "rpc_tier", + "fqdns": [] + }, + { + "vmid": 2400, + "hostname": "thirdweb-rpc-1", + "ipv4": "192.168.11.240", + "preferred_node": "r630-01", + "category": "rpc_thirdweb", + "ports": [ + { + "port": 443, + "name": "nginx" + }, + { + "port": 8545 + }, + { + "port": 8546 + }, + { + "port": 9645, + "name": "translator-http" + }, + { + "port": 9646, + "name": "translator-ws" + } + ], + "peering_layer": "rpc_tier", + "fqdns": [ + "rpc.public-0138.defi-oracle.io" + ] + }, + { + "vmid": 2401, + "hostname": "besu-rpc-thirdweb-0x8a-1", + "ipv4": "192.168.11.241", + "preferred_node": "r630-01", + "category": "rpc_thirdweb", + "ports": [ + { + "port": 8545 + }, + { + "port": 8546 + }, + { + "port": 30303 + } + ], + "peering_layer": "rpc_tier", + "fqdns": [] + }, + { + "vmid": 2402, + "hostname": "besu-rpc-thirdweb-0x8a-2", + "ipv4": "192.168.11.242", + "preferred_node": "r630-01", + "category": "rpc_thirdweb", + "ports": [ + { + "port": 8545 + }, + { + "port": 8546 + }, + { + "port": 30303 + } + ], + "peering_layer": "rpc_tier", + "fqdns": [] + }, + { + "vmid": 2403, + "hostname": "besu-rpc-thirdweb-0x8a-3", + "ipv4": "192.168.11.243", + "preferred_node": "r630-01", + "category": "rpc_thirdweb", + "ports": [ + { + "port": 8545 + }, + { + "port": 8546 + }, + { + "port": 30303 + } + ], + "peering_layer": "rpc_tier", + "fqdns": [], + "status_note": "May lag sync; verify metrics/port conflicts per ALL_VMIDS" + }, + { + "vmid": 5000, + "hostname": "blockscout-1", + "ipv4": "192.168.11.140", + "preferred_node": "r630-01", + "category": "explorer", + "ports": [ + { + "port": 80 + }, + { + "port": 443 + }, + { + "port": 4000, + "name": "blockscout-api" + } + ], + "fqdns": [ + "explorer.d-bis.org" + ] + }, + { + "vmid": 3500, + "hostname": "oracle-publisher-1", + "ipv4": "192.168.11.29", + "preferred_node": "r630-01", + "category": "oracle", + "ports": [], + "fqdns": [] + }, + { + "vmid": 3501, + "hostname": "ccip-monitor-1", + "ipv4": "192.168.11.28", + "preferred_node": "r630-01", + "category": "ccip", + "ports": [], + "fqdns": [] + }, + { + "vmid": 5200, + "hostname": "cacti-1", + "ipv4": "192.168.11.80", + "preferred_node": "r630-02", + "category": "monitoring", + "ports": [ + { + "port": 80 + }, + { + "port": 443 + } + ], + "fqdns": [] + }, + { + "vmid": 6000, + "hostname": "fabric-1", + "ipv4": "192.168.11.65", + "preferred_node": "r630-02", + "category": "dlt", + "ports": [ + { + "port": 7051 + }, + { + "port": 7050 + } + ], + "fqdns": [] + }, + { + "vmid": 6400, + "hostname": "indy-1", + "ipv4": "192.168.11.64", + "preferred_node": "r630-02", + "category": "dlt", + "ports": [ + { + "port": 9701, + "name": "indy-range-start" + } + ], + "fqdns": [] + }, + { + "vmid": 6200, + "hostname": "firefly-1", + "ipv4": "192.168.11.35", + "preferred_node": "r630-02", + "category": "firefly", + "ports": [ + { + "port": 80 + }, + { + "port": 443 + }, + { + "port": 5000 + } + ], + "fqdns": [] + }, + { + "vmid": 6201, + "hostname": "firefly-ali-1", + "ipv4": "192.168.11.57", + "preferred_node": "r630-02", + "category": "firefly", + "ports": [ + { + "port": 80 + }, + { + "port": 443 + }, + { + "port": 5000 + } + ], + "fqdns": [] + }, + { + "vmid": 10100, + "hostname": "dbis-postgres-primary", + "ipv4": "192.168.11.105", + "preferred_node": "r630-01", + "category": "dbis", + "ports": [ + { + "port": 5432 + } + ], + "fqdns": [] + }, + { + "vmid": 10101, + "hostname": "dbis-postgres-replica-1", + "ipv4": "192.168.11.106", + "preferred_node": "r630-01", + "category": "dbis", + "ports": [ + { + "port": 5432 + } + ], + "fqdns": [] + }, + { + "vmid": 10120, + "hostname": "dbis-redis", + "ipv4": "192.168.11.125", + "preferred_node": "r630-01", + "category": "dbis", + "ports": [ + { + "port": 6379 + } + ], + "fqdns": [] + }, + { + "vmid": 10130, + "hostname": "dbis-frontend", + "ipv4": "192.168.11.130", + "preferred_node": "r630-01", + "category": "dbis", + "ports": [ + { + "port": 80 + }, + { + "port": 443 + } + ], + "fqdns": [ + "dbis-admin.d-bis.org", + "secure.d-bis.org" + ] + }, + { + "vmid": 10150, + "hostname": "dbis-api-primary", + "ipv4": "192.168.11.155", + "preferred_node": "r630-01", + "category": "dbis", + "ports": [ + { + "port": 3000 + } + ], + "fqdns": [ + "dbis-api.d-bis.org" + ] + }, + { + "vmid": 10151, + "hostname": "dbis-api-secondary", + "ipv4": "192.168.11.156", + "preferred_node": "r630-01", + "category": "dbis", + "ports": [ + { + "port": 3000 + } + ], + "fqdns": [ + "dbis-api-2.d-bis.org" + ] + }, + { + "vmid": 7810, + "hostname": "mim-web-1", + "ipv4": "192.168.11.37", + "preferred_node": "r630-02", + "category": "mim4u", + "ports": [ + { + "port": 80 + }, + { + "port": 443 + } + ], + "fqdns": [ + "mim4u.org", + "www.mim4u.org", + "secure.mim4u.org", + "training.mim4u.org" + ], + "notes": "nginx proxies /api/ to 7811" + }, + { + "vmid": 7811, + "hostname": "mim-api-1", + "ipv4": "192.168.11.36", + "preferred_node": "r630-02", + "category": "mim4u", + "ports": [ + { + "port": 3001, + "name": "api-backend" + } + ], + "fqdns": [] + }, + { + "vmid": 7800, + "hostname": "sankofa-api-1", + "ipv4": "192.168.11.50", + "preferred_node": "r630-01", + "category": "sankofa_phoenix", + "ports": [ + { + "port": 4000, + "name": "graphql" + } + ], + "fqdns": [ + "phoenix.sankofa.nexus", + "www.phoenix.sankofa.nexus" + ] + }, + { + "vmid": 7801, + "hostname": "sankofa-portal-1", + "ipv4": "192.168.11.51", + "preferred_node": "r630-01", + "category": "sankofa_phoenix", + "ports": [ + { + "port": 3000 + } + ], + "fqdns": [ + "sankofa.nexus", + "www.sankofa.nexus" + ] + }, + { + "vmid": 7802, + "hostname": "sankofa-keycloak-1", + "ipv4": "192.168.11.52", + "preferred_node": "r630-01", + "category": "sankofa_phoenix", + "ports": [ + { + "port": 8080 + } + ], + "fqdns": [] + }, + { + "vmid": 7803, + "hostname": "sankofa-postgres-1", + "ipv4": "192.168.11.53", + "preferred_node": "r630-01", + "category": "sankofa_phoenix", + "ports": [ + { + "port": 5432 + } + ], + "fqdns": [] + }, + { + "vmid": 7804, + "hostname": "gov-portals-dev", + "ipv4": "192.168.11.54", + "preferred_node": "r630-01", + "category": "sankofa_phoenix", + "ports": [ + { + "port": 80 + } + ], + "fqdns": [ + "*.xom-dev.phoenix.sankofa.nexus" + ], + "notes": "Sole owner of 192.168.11.54 (gov portals). Order-legal (10070) uses IP_ORDER_LEGAL / 192.168.11.87." + }, + { + "vmid": 7805, + "hostname": "sankofa-studio", + "ipv4": "192.168.11.72", + "preferred_node": "r630-01", + "category": "sankofa_phoenix", + "ports": [ + { + "port": 8000 + } + ], + "fqdns": [ + "studio.sankofa.nexus" + ] + }, + { + "vmid": 8640, + "hostname": "vault-phoenix-1", + "ipv4": "192.168.11.200", + "preferred_node": "r630-01", + "category": "vault", + "ports": [ + { + "port": 8200 + } + ], + "fqdns": [] + }, + { + "vmid": 8641, + "hostname": "vault-phoenix-2", + "ipv4": "192.168.11.215", + "preferred_node": "r630-01", + "category": "vault", + "ports": [ + { + "port": 8200 + } + ], + "fqdns": [] + }, + { + "vmid": 8642, + "hostname": "vault-phoenix-3", + "ipv4": "192.168.11.202", + "preferred_node": "r630-01", + "category": "vault", + "ports": [ + { + "port": 8200 + } + ], + "fqdns": [] + }, + { + "vmid": 5800, + "hostname": "mifos-fineract", + "ipv4": "192.168.11.85", + "preferred_node": "r630-02", + "category": "mifos", + "ports": [ + { + "port": 80 + } + ], + "fqdns": [ + "mifos.d-bis.org" + ] + }, + { + "vmid": 5801, + "hostname": "dapp-smom", + "ipv4": "192.168.11.58", + "preferred_node": "r630-02", + "category": "dapp", + "ports": [ + { + "port": 80 + } + ], + "fqdns": [ + "dapp.d-bis.org" + ] + }, + { + "vmid": 5700, + "hostname": "dev-vm-gitops", + "ipv4": "192.168.11.59", + "preferred_node": "any", + "category": "dev", + "ports": [], + "fqdns": [], + "notes": "Shared dev / Gitea; see DEV_VM_GITOPS_PLAN.md" + }, + { + "vmid": 10230, + "hostname": "order-vault", + "ipv4": "192.168.11.55", + "preferred_node": "r630-01", + "category": "order", + "ports": [ + { + "port": 8200 + } + ], + "fqdns": [] + }, + { + "vmid": 10232, + "hostname": "ct10232", + "ipv4": "192.168.11.56", + "preferred_node": "r630-01", + "category": "general", + "ports": [], + "fqdns": [] + }, + { + "vmid": 10060, + "hostname": "order-dataroom", + "ipv4": "192.168.11.42", + "preferred_node": "r630-01", + "category": "order", + "ports": [ + { + "port": 80 + } + ], + "fqdns": [] + }, + { + "vmid": 10070, + "hostname": "order-legal", + "ipv4": "192.168.11.87", + "preferred_node": "r630-01", + "category": "order", + "ports": [], + "fqdns": [], + "notes": "Moved off .54 2026-03-25 (ARP conflict with VMID 7804). Use IP_ORDER_LEGAL in ip-addresses.conf." + }, + { + "vmid": 10210, + "hostname": "order-haproxy", + "ipv4": "192.168.11.39", + "preferred_node": "r630-01", + "category": "order", + "ports": [ + { + "port": 80 + }, + { + "port": 443 + } + ], + "fqdns": [ + "the-order.sankofa.nexus", + "www.the-order.sankofa.nexus" + ], + "notes": "NPMplus → HTTP :80; TLS at NPM (LE). VMID 10210." + }, + { + "vmid": null, + "hostname": "order-redis-primary", + "ipv4": "192.168.11.38", + "preferred_node": "r630-01", + "category": "order", + "ports": [ + { + "port": 6379 + } + ], + "fqdns": [], + "notes": "ORDER_REDIS_IP reserved; no dedicated order-redis LXC on cluster as of 2026-03 (Redis may run in-stack)." + }, + { + "vmid": 3000, + "hostname": "ml-node-1", + "ipv4": "192.168.11.60", + "preferred_node": "ml110", + "category": "ml", + "ports": [], + "fqdns": [] + }, + { + "vmid": 3001, + "hostname": "ml-node-2", + "ipv4": "192.168.11.61", + "preferred_node": "ml110", + "category": "ml", + "ports": [], + "fqdns": [] + }, + { + "vmid": 3002, + "hostname": "ml-node-3", + "ipv4": "192.168.11.62", + "preferred_node": "ml110", + "category": "ml", + "ports": [], + "fqdns": [] + }, + { + "vmid": 3003, + "hostname": "ml-node-4", + "ipv4": "192.168.11.63", + "preferred_node": "ml110", + "category": "ml", + "ports": [], + "fqdns": [] + }, + { + "vmid": 10233, + "hostname": "npmplus-primary", + "ipv4": "192.168.11.167", + "preferred_node": "r630-01", + "category": "npmplus", + "ports": [ + { + "port": 80 + }, + { + "port": 81 + }, + { + "port": 443 + } + ], + "fqdns": [], + "notes": "Also .166 on eth0; ingress .167 per NETWORK_CONFIGURATION_MASTER" + }, + { + "vmid": 10234, + "hostname": "npmplus-secondary", + "ipv4": "192.168.11.168", + "preferred_node": "r630-02", + "category": "npmplus", + "ports": [ + { + "port": 80 + }, + { + "port": 81 + }, + { + "port": 443 + } + ], + "fqdns": [] + }, + { + "vmid": 10235, + "hostname": "npmplus-alltra-hybx", + "ipv4": "192.168.11.169", + "preferred_node": "r630-02", + "category": "npmplus", + "ports": [ + { + "port": 80 + }, + { + "port": 81 + }, + { + "port": 443 + } + ], + "fqdns": [] + }, + { + "vmid": 10236, + "hostname": "npmplus-fourth-dev", + "ipv4": "192.168.11.170", + "preferred_node": "r630-02", + "category": "npmplus", + "ports": [ + { + "port": 80 + }, + { + "port": 81 + }, + { + "port": 443 + } + ], + "fqdns": [] + }, + { + "vmid": 10237, + "hostname": "npmplus-mifos", + "ipv4": "192.168.11.171", + "preferred_node": "r630-02", + "category": "npmplus", + "ports": [ + { + "port": 80 + }, + { + "port": 81 + }, + { + "port": 443 + } + ], + "fqdns": [] + }, + { + "vmid": 102, + "hostname": "cloudflared", + "ipv4": "192.168.11.34", + "preferred_node": "r630-01", + "category": "tunnel", + "ports": [], + "fqdns": [], + "notes": "Cloudflare tunnel / ingress helper" + }, + { + "vmid": 1507, + "hostname": "besu-sentry-hybx-1", + "ipv4": "192.168.11.244", + "preferred_node": "ml110", + "category": "besu_sentry", + "ports": [ + { + "port": 30303 + }, + { + "port": 9545 + } + ], + "peering_layer": "sentry_boundary", + "fqdns": [] + }, + { + "vmid": 1508, + "hostname": "besu-sentry-hybx-2", + "ipv4": "192.168.11.245", + "preferred_node": "ml110", + "category": "besu_sentry", + "ports": [ + { + "port": 30303 + }, + { + "port": 9545 + } + ], + "peering_layer": "sentry_boundary", + "fqdns": [] + }, + { + "vmid": 2103, + "hostname": "besu-rpc-core-thirdweb", + "ipv4": "192.168.11.217", + "preferred_node": "r630-01", + "category": "rpc_core", + "ports": [ + { + "port": 8545 + }, + { + "port": 8546 + }, + { + "port": 30303 + } + ], + "peering_layer": "rpc_tier", + "fqdns": [] + }, + { + "vmid": 2500, + "hostname": "besu-rpc-alltra-1", + "ipv4": "192.168.11.172", + "preferred_node": "r630-01", + "category": "rpc_alltra_hybx", + "ports": [ + { + "port": 8545 + }, + { + "port": 8546 + }, + { + "port": 30303 + } + ], + "fqdns": [] + }, + { + "vmid": 2501, + "hostname": "besu-rpc-alltra-2", + "ipv4": "192.168.11.173", + "preferred_node": "r630-01", + "category": "rpc_alltra_hybx", + "ports": [ + { + "port": 8545 + }, + { + "port": 8546 + }, + { + "port": 30303 + } + ], + "fqdns": [] + }, + { + "vmid": 2502, + "hostname": "besu-rpc-alltra-3", + "ipv4": "192.168.11.174", + "preferred_node": "r630-01", + "category": "rpc_alltra_hybx", + "ports": [ + { + "port": 8545 + }, + { + "port": 8546 + }, + { + "port": 30303 + } + ], + "fqdns": [] + }, + { + "vmid": 2503, + "hostname": "besu-rpc-hybx-1", + "ipv4": "192.168.11.246", + "preferred_node": "r630-01", + "category": "rpc_alltra_hybx", + "ports": [ + { + "port": 8545 + }, + { + "port": 8546 + }, + { + "port": 30303 + } + ], + "fqdns": [] + }, + { + "vmid": 2504, + "hostname": "besu-rpc-hybx-2", + "ipv4": "192.168.11.247", + "preferred_node": "r630-01", + "category": "rpc_alltra_hybx", + "ports": [ + { + "port": 8545 + }, + { + "port": 8546 + }, + { + "port": 30303 + } + ], + "fqdns": [] + }, + { + "vmid": 2505, + "hostname": "besu-rpc-hybx-3", + "ipv4": "192.168.11.248", + "preferred_node": "r630-01", + "category": "rpc_alltra_hybx", + "ports": [ + { + "port": 8545 + }, + { + "port": 8546 + }, + { + "port": 30303 + } + ], + "fqdns": [] + }, + { + "vmid": 5010, + "hostname": "tsunamiswap", + "ipv4": "192.168.11.91", + "preferred_node": "r630-01", + "category": "defi", + "ports": [ + { + "port": 80 + } + ], + "fqdns": [] + }, + { + "vmid": 5201, + "hostname": "cacti-alltra-1", + "ipv4": "192.168.11.177", + "preferred_node": "r630-02", + "category": "monitoring", + "ports": [ + { + "port": 80 + }, + { + "port": 443 + } + ], + "fqdns": [] + }, + { + "vmid": 5202, + "hostname": "cacti-hybx-1", + "ipv4": "192.168.11.251", + "preferred_node": "r630-02", + "category": "monitoring", + "ports": [ + { + "port": 80 + }, + { + "port": 443 + } + ], + "fqdns": [] + }, + { + "vmid": 5702, + "hostname": "ai-inf-1", + "ipv4": "192.168.11.82", + "preferred_node": "r630-01", + "category": "ai_infra", + "ports": [], + "fqdns": [] + }, + { + "vmid": 5705, + "hostname": "ai-inf-2", + "ipv4": "192.168.11.86", + "preferred_node": "r630-01", + "category": "ai_infra", + "ports": [], + "fqdns": [] + }, + { + "vmid": 6001, + "hostname": "fabric-alltra-1", + "ipv4": "192.168.11.178", + "preferred_node": "r630-02", + "category": "dlt", + "ports": [ + { + "port": 7051 + } + ], + "fqdns": [] + }, + { + "vmid": 6002, + "hostname": "fabric-hybx-1", + "ipv4": "192.168.11.252", + "preferred_node": "r630-02", + "category": "dlt", + "ports": [ + { + "port": 7051 + } + ], + "fqdns": [] + }, + { + "vmid": 6401, + "hostname": "indy-alltra-1", + "ipv4": "192.168.11.179", + "preferred_node": "r630-02", + "category": "dlt", + "ports": [], + "fqdns": [] + }, + { + "vmid": 6402, + "hostname": "indy-hybx-1", + "ipv4": "192.168.11.253", + "preferred_node": "r630-02", + "category": "dlt", + "ports": [], + "fqdns": [] + }, + { + "vmid": 10030, + "hostname": "order-identity", + "ipv4": "192.168.11.40", + "preferred_node": "r630-01", + "category": "order", + "ports": [], + "fqdns": [] + }, + { + "vmid": 10040, + "hostname": "order-intake", + "ipv4": "192.168.11.41", + "preferred_node": "r630-01", + "category": "order", + "ports": [], + "fqdns": [] + }, + { + "vmid": 10050, + "hostname": "order-finance", + "ipv4": "192.168.11.49", + "preferred_node": "r630-01", + "category": "order", + "ports": [], + "fqdns": [] + }, + { + "vmid": 10080, + "hostname": "order-eresidency", + "ipv4": "192.168.11.43", + "preferred_node": "r630-01", + "category": "order", + "ports": [], + "fqdns": [] + }, + { + "vmid": 10090, + "hostname": "order-portal-public", + "ipv4": "192.168.11.36", + "preferred_node": "r630-01", + "category": "order", + "ports": [ + { + "port": 80 + } + ], + "fqdns": [], + "notes": "Candidate backend for the-order.sankofa.nexus when wired" + }, + { + "vmid": 10091, + "hostname": "order-portal-internal", + "ipv4": "192.168.11.35", + "preferred_node": "r630-01", + "category": "order", + "ports": [], + "fqdns": [] + }, + { + "vmid": 10092, + "hostname": "order-mcp-legal", + "ipv4": "192.168.11.37", + "preferred_node": "r630-01", + "category": "order", + "ports": [], + "fqdns": [] + }, + { + "vmid": 10200, + "hostname": "order-prometheus", + "ipv4": "192.168.11.46", + "preferred_node": "r630-01", + "category": "order", + "ports": [ + { + "port": 9090 + } + ], + "fqdns": [] + }, + { + "vmid": 10201, + "hostname": "order-grafana", + "ipv4": "192.168.11.47", + "preferred_node": "r630-01", + "category": "order", + "ports": [ + { + "port": 3000 + } + ], + "fqdns": [] + }, + { + "vmid": 10202, + "hostname": "order-opensearch", + "ipv4": "192.168.11.48", + "preferred_node": "r630-01", + "category": "order", + "ports": [ + { + "port": 9200 + } + ], + "fqdns": [] + } + ] +} diff --git a/config/public-sector-program-manifest.json b/config/public-sector-program-manifest.json new file mode 100644 index 0000000..aeba616 --- /dev/null +++ b/config/public-sector-program-manifest.json @@ -0,0 +1,75 @@ +{ + "schemaVersion": "1.0.0", + "updated": "2026-03-25", + "description": "Registry of public-sector and eIDAS-related programs outside or beside proxmox; used by runbooks and docs. Verify repoUrl on Gitea if a repo is renamed. Unauthenticated HTTP to gitea.d-bis.org may return 404 for private or missing repos — confirm in Gitea UI or with credentials.", + "programs": [ + { + "id": "smoa", + "displayName": "Secure Mobile Operations Application (SMOA)", + "role": "Android credential-holder / mission client; Spring Boot backend", + "repoUrl": "https://gitea.d-bis.org/Sankofa_Phoenix/SMOA.git", + "localPathHint": "../smoa", + "proxmoxDocRefs": [ + "docs/02-architecture/SERVICE_DESCRIPTIONS.md", + "docs/02-architecture/PUBLIC_SECTOR_TENANCY_MARKETPLACE_AND_DEPLOYMENT_BASELINE.md" + ], + "externalDocRefs": [ + "backend/docs/LXC-PROXMOX-CONTAINERS.md", + "docs/compliance/evidence/eidas-compliance-evidence.md" + ] + }, + { + "id": "complete-credential", + "displayName": "Complete Credential (umbrella program)", + "role": "eIDAS / SMOA / credential integration program documentation and services", + "repoUrl": "https://gitea.d-bis.org/Sankofa_Phoenix/complete-credential.git", + "localPathHint": "../complete-credential", + "proxmoxDocRefs": [ + "docs/11-references/COMPLETE_CREDENTIAL_EIDAS_PROGRAM_REPOS.md" + ], + "externalDocRefs": [] + }, + { + "id": "cc-eidas-connector", + "displayName": "eIDAS SAML connector (receiving MS)", + "role": "SAML ACS / connector implementation (E-05 / E-05b roadmap)", + "repoUrl": "https://gitea.d-bis.org/Sankofa_Phoenix/cc-eidas-connector.git", + "localPathHint": "../complete-credential/submodules/cc-eidas-connector", + "proxmoxDocRefs": [ + "docs/11-references/COMPLETE_CREDENTIAL_EIDAS_PROGRAM_REPOS.md" + ], + "externalDocRefs": [ + "docs/E05B_SAML_VERIFICATION_ROADMAP.md" + ] + } + ], + "catalogSkus": [ + { + "id": "cc-phase1-lab", + "displayName": "Complete Credential Phase 1 lab (compose)", + "programManifestId": "complete-credential", + "deploymentProfile": "A", + "artifactKind": "compose_profile", + "artifactRef": "integration/docker-compose.phase1.yml", + "specRef": "complete-credential/docs/integrations/PHOENIX_SERVICE_CATALOG_SPEC.md" + }, + { + "id": "cc-phase2-lab", + "displayName": "Complete Credential Phase 2 lab (NFC + device-registry stubs + Phase 1)", + "programManifestId": "complete-credential", + "deploymentProfile": "A", + "artifactKind": "compose_profile", + "artifactRef": "integration/docker-compose.phase1.yml + integration/docker-compose.phase2.lab.yml", + "specRef": "complete-credential/docs/integrations/PHOENIX_SERVICE_CATALOG_SPEC.md" + }, + { + "id": "cc-eidas-connector-stack", + "displayName": "eIDAS connector (reference submodule)", + "programManifestId": "cc-eidas-connector", + "deploymentProfile": "B", + "artifactKind": "manual_runbook", + "artifactRef": "complete-credential/docs/integrations/EIDAS_CONNECTOR_DEPTH_RUNBOOK.md", + "specRef": "complete-credential/docs/integrations/PHOENIX_SERVICE_CATALOG_SPEC.md" + } + ] +} diff --git a/config/systemd/chain138-pmm-mesh-automation.service.example b/config/systemd/chain138-pmm-mesh-automation.service.example new file mode 100644 index 0000000..fe5967a --- /dev/null +++ b/config/systemd/chain138-pmm-mesh-automation.service.example @@ -0,0 +1,33 @@ +# Copy to /etc/systemd/system/chain138-pmm-mesh-automation.service (or ~/.config/systemd/user/) +# Adjust paths and EnvironmentFile to your host. +# +# sudo cp chain138-pmm-mesh-automation.service.example /etc/systemd/system/chain138-pmm-mesh-automation.service +# sudo systemctl daemon-reload +# sudo systemctl enable --now chain138-pmm-mesh-automation.service +# journalctl -u chain138-pmm-mesh-automation -f + +[Unit] +Description=Chain 138 PMM mesh — oracle/keeper/WETH poll every 6s +After=network-online.target +Wants=network-online.target + +[Service] +Type=simple +User=YOUR_UNIX_USER +WorkingDirectory=/ABSOLUTE/PATH/TO/proxmox/smom-dbis-138 +Environment=PMM_MESH_INTERVAL_SEC=6 +Environment=MESH_CAST_GAS_PRICE=2gwei +# Set to 0 until ETH-USD oracle allows your key as transmitter (see update-oracle-price.sh output). +Environment=ENABLE_MESH_ORACLE_TICK=1 +Environment=ENABLE_MESH_KEEPER_TICK=1 +Environment=ENABLE_MESH_PMM_READS=1 +Environment=ENABLE_MESH_WETH_READS=1 +# Prefer EnvironmentFile over committing secrets: +EnvironmentFile=-/ABSOLUTE/PATH/TO/proxmox/smom-dbis-138/.env +# Required in .env: PRIVATE_KEY, AGGREGATOR_ADDRESS; recommended: PRICE_FEED_KEEPER_ADDRESS (see ORACLE_AND_KEEPER_CHAIN138.md) +ExecStart=/bin/bash /ABSOLUTE/PATH/TO/proxmox/smom-dbis-138/scripts/reserve/pmm-mesh-6s-automation.sh +Restart=always +RestartSec=3 + +[Install] +WantedBy=multi-user.target