Skip to main content
Vault operations are operationally manual unless you automate them yourself.
You must host your own automation. Ranger Earn/Ranger does not provide managed bot services. You are responsible for deploying, running, and monitoring your own scripts and bots.

Why Automation Is Needed

TaskWhy It Needs Automation
RebalancingRates and allocations change over time
Reward claimingUnclaimed rewards leave value idle
Reward swappingClaimed rewards often need conversion back to base asset
Position monitoringStrategy-specific health can degrade without alerts
Fee harvestingAccumulated fees should be collected periodically

Script Repositories

RepositoryUse Case
ranger-finance/lend-scriptsLending strategy init (Project0, Save)
ranger-finance/kamino-scriptsKamino strategy init, rewards claiming
ranger-finance/drift-scriptsDrift vaults/lend/perps strategy init, position management
ranger-finance/spot-scriptsJupiter Swap/Lend strategy init
ranger-finance/client-raydium-clmm-scriptsRaydium CLMM strategy init
ranger-finance/trustful-scriptsTrustful adaptor strategy init
ranger-finance/rebalance-bot-templateProduction-ready rebalance bot (equal-weight allocation)

Rebalance Bot Template

The rebalance-bot-template is a production-ready bot that handles the core automation tasks listed above. It distributes funds equally across lending strategies on a fixed schedule and includes:
  • Rebalance loop — equal-weight allocation across all strategies, triggered on interval and on new deposits
  • Refresh loop — keeps on-chain receipt values up to date
  • Harvest fee loop — collects protocol/admin/manager fees
  • Claim reward loops — claims Kamino farm rewards and swaps them back via Jupiter
Supports Drift, Jupiter Lend, Kamino Market, and Kamino Vault strategies out of the box.
git clone https://github.com/voltrxyz/rebalance-bot-template.git
cd rebalance-bot-template
pnpm install
cp .env.example .env   # fill in your vault addresses and keypair
pnpm run build && pnpm start
See the repository README for full configuration options and Replit deployment instructions.

Basic Script Shape

import { createKeyPairSignerFromBytes, createSolanaRpc } from "@solana/kit";
import {
  fetchVault,
  getPositionAndTotalValuesForVault,
} from "@voltr/vault-sdk";

async function main() {
  const rpc = createSolanaRpc(process.env.RPC_URL!);
  const managerSigner = await createKeyPairSignerFromBytes(
    Uint8Array.from(JSON.parse(process.env.MANAGER_KEY!))
  );

  const vaultAccount = await fetchVault(rpc, vaultAddress);
  const positions = await getPositionAndTotalValuesForVault(rpc, vaultAddress);

  // 1. Read idle and deployed balances
  // 2. Pull strategy-side data
  // 3. Decide on reallocations
  // 4. Build strategy deposit/withdraw instructions

  console.log(vaultAccount.data.asset.totalValue, positions.strategies.length);
}

main().catch(console.error);

Operational Requirements

  • keep manager and admin wallets funded with SOL
  • add retries and alerting
  • respect RPC limits
  • make scripts idempotent where possible
  • keep signing keys isolated from application code