Install
openclaw skills install 31third-safe-rebalancer-simpleOne-step Safe rebalancer using on-chain 31Third policies.
openclaw skills install 31third-safe-rebalancer-simpleThis skill is intentionally minimal for non-technical users.
Best practice: use only one command / one tool:
rebalance_nowverify_deployment_config (post-deploy troubleshooting)If you are unsure, use the help command first:
npm run cli -- helpnpm install
npm run build
ExecutorModule; this private key is used by this skill.Required env vars:
SAFE_ADDRESS=0xYourSafe
EXECUTOR_MODULE_ADDRESS=0xYourExecutorModule
EXECUTOR_WALLET_PRIVATE_KEY=0x...
TOT_API_KEY=your_31third_api_key
RPC_URL=https://mainnet.base.org
CHAIN_ID=8453
TOT_API_KEY can be requested via https://31third.com/contact or by emailing dev@31third.com.
AssetUniverse and StaticAllocation policy state from ExecutorModule.baseEntries from current Safe balances for AssetUniverse tokens.targetEntries from on-chain StaticAllocation targets.calculateRebalancing(...).executeRebalancing(...) using ethers wallet signer.Safety checks:
ExecutorModule.executor.driftThresholdBps from StaticAllocation and skips execution when drift is below threshold.StaticAllocation.priceOracle / Slippage.priceOracle for pricing.maxSlippageBps from SlippagePolicy and uses:
maxSlippage = policySlippage - 0.1%maxPriceImpact = policySlippage - 0.1%minTradeValue = 0.1.Partial policy deployment behavior:
[].targetEntries.
Do this only when StaticAllocation policy is intentionally not deployed.
CLI fallback example:
npm run cli -- rebalance-now --target-entries '[{"tokenAddress":"0x...","allocation":0.5},{"tokenAddress":"0x...","allocation":0.5}]'npm run cli -- help
npm run cli -- rebalance-now
npm run cli -- rebalance-now --target-entries '[{"tokenAddress":"0x...","allocation":0.5},{"tokenAddress":"0x...","allocation":0.5}]'
npm run cli -- verify-deployment --troubleshooting-file ./summary.txt
npm run cli -- verify-deployment --troubleshooting-summary "Safe=0x..."
If your rebalance fails, check these common issues:
Use the verify-deployment tool to verify the deployed contracts against your environment.
Copy the troubleshooting info from the Safe Policy Deployer (Step 4 or Step 5). It has the following schema:
Safe=0x123...456
ExecutorModule=0x123...456 | Deployed
Executor=0x123...456
BatchTrade=0xD20c024560ccA40288C05BAB650ac087ae9b0f6e
PriceOracle=0x123...456
FeedRegistry=0x1d4999242A24C8588c4f5dB7dFF1D74Df6bC746A
CooldownSec=3600
AssetUniversePolicy=0x123...456 | Deployed
AssetUniverseAssets:
- USDC | 0x833589fcd6edb6e08f4c7c32d4f71b54bda02913
- WETH | 0x4200000000000000000000000000000000000006
StaticAllocationPolicy=0x123...456 | Deployed
StaticAllocationDriftThresholdPercent=0.50%
StaticAllocationToleranceThresholdPercent=0.50%
StaticAllocationTargets:
- USDC | 0x833589fcd6edb6e08f4c7c32d4f71b54bda02913 | AllocationPercent=10.00%
- WETH | 0x4200000000000000000000000000000000000006 | AllocationPercent=90.00%
SlippagePolicy=0x123...456 | Deployed
MaxSlippagePercent=0.50%
IMPORTANT: The framework is deployed with a Safe batch transaction. It might happen that an internal transaction runs out of gas and fails. The batch transaction itself still succeeds, but not all policies might be deployed. In this case, execution of rebalancings might fail.
Your AssetUniverse policy is blocking the trade.
The trade slippage is too high.
aTokens or wrapped assets on new chains).The script can't find a target allocation on-chain.