- UI
- SDK
- CLI
Configure via kamino.com/curators/vaults
Add a reserve
Open the Allocations tab
Navigate to your vault on
kamino.com/curators/vaults and open the Allocations tab.Select market and reserve
The reserve picker shows market name and TVL, reserve type (floating or fixed-rate), supply APY, reserve TVL, and utilization. A market may contain multiple reserves for the same token (e.g. USDC floating, USDC 5% 3M, USDC 6% 6M).
Set parameters
| Parameter | Notes |
|---|---|
| Allocation Weight | Relative integer; ignored for Conditional allocations |
| Allocation Cap | Hard ceiling in tokens; binding limit for Conditional |
| Conditional Allocation toggle | Off = Standard (immediate deployment); On = Conditional (deploy on demand) |
| Allocation Priority | Default 0; raise to protect this Standard allocation from being a source for Conditional fills |
Edit an existing allocation
Open the allocation entry on the Allocations tab. Adjust weight, cap, type toggle, or priority. Submit.Batch edit weights
To change weights across multiple reserves in a single transaction, use the batch-edit view. The UI shows real-time percentage recalculation and projected vault APY impact, including unallocated funds.Remove an allocation
Either set the weight (Standard) or cap (Conditional) to0, or remove the entry entirely. The removed reserve’s share is redistributed to the remaining allocations per their weights.Sync after changes
Allocations are targets. After updating an allocation, the vault doesn’t immediately rebalance — a permissionless sync brings actual allocation toward target. The sync bot runs every ~15 minutes; you can also trigger it manually via the UI’s “Sync Allocations” action or the SDK’sinvestAllReservesIxs / investSingleReserveIxs methods.
The underlying vault operation is invest. It compares the reserve’s current allocation with its weight/cap target and then either:
- deposits vault liquidity into the reserve if the reserve is under target, or
- withdraws available liquidity from the reserve back into the vault if the reserve is over target.
Partial moves with invest_with_max_amount
invest_with_max_amount is a capped variant of invest: weights and allocation caps still determine whether funds move into or out of the reserve, but the caller can cap the amount of liquidity moved toward that target. Use it when the full target move is larger than the liquidity currently available, or when you want to move funds in controlled chunks.
This instruction is available on-chain and in @kamino-finance/klend-sdk 9.1.0+ as investSingleReserveWithMaxAmountIxs. The SDK argument is maxAmountLamports: the maximum vault-token lamports to move in or out of the selected reserve.
Example — partial rebalance when one reserve cannot fully deallocate:
- Vault has two allocations, 50% each, with 1M total tokens: 500K in reserve 1 and 500K in reserve 2.
- The manager changes weights to reserve 1: 90%, reserve 2: 10%.
- The target move is to withdraw 400K from reserve 2, but reserve 2 only has 300K available.
- Call
invest_with_max_amounton reserve 2 withmax_amount = 300K. This withdraws 300K from reserve 2 into the vault. - Call
invest_with_max_amounton reserve 1 withmax_amount = 300K. This deposits that 300K into reserve 1. - Final state: reserve 1 has 800K and reserve 2 has 200K. The vault is closer to the 900K / 100K target, and reserve 2 utilization may rise to 100%, incentivizing borrowers to repay so more liquidity becomes withdrawable.
cappedInvestIxs is empty, the computed move was below the vault’s minInvestAmount or there was no eligible liquidity to move.
Sync may still not reach the exact target if the reserve has no available liquidity left after the capped move. When you need to exit capital that is not currently withdrawable, use the withdrawal queue.
What’s next
Allocations (concept)
The model behind weights, caps, types, and priority.
Configure fixed-rate allocations
The focused step-by-step for adding an FR allocation, with FR-specific parameter choices.