ReserveConfig is editable through the same fetch → mutate → apply pattern as market settings. This page covers the day-to-day workflow.
- SDK
- API
- Kamino CLI
Update a reserve via SDK
The SDK exposeskaminoManager.updateReserveIxs(signer, marketWithAddress, reserveAddress, newReserveConfig) for full reserve config updates. Fetch the current config, mutate, pass the new value in.1
Initialize KaminoManager and fetch the reserve
2
Mutate the fields you want to change
3
Apply the update
updateReserveIxs returns the update split into chunks for transaction size; submit each chunk in order.Cloning a reserve config
To duplicate an existing reserve’s config onto a new reserve, see Add reserves → Cloning an existing reserve config via SDK.Multisig mode
Replace the admin signer withnoopSigner(multisigPubkey) and submit the resulting transactions as Squads proposals.Common edits
Adjust LTV / liquidation threshold / borrow factor
EditloanToValuePct, liquidationThresholdPct, borrowFactorPct. Existing positions continue using the new values from the next refresh.
Adjust deposit / borrow caps
EditdepositLimit and/or borrowLimit. The CLI’s focused update-reserve-config-debt-cap command exists for the borrow cap.
Change the IR curve
EditborrowRateCurve.points. The change takes effect from the next interest accrual; current debts continue accruing at the new rate.
Update oracle config
Edit fields undertokenInfo. The on-chain validator confirms the new oracle accounts match what was passed in the instruction; mismatches return InvalidScopePriceAccount.
For a full oracle migration, do it as a single update: clear old fields, set new fields, apply. See Configure oracles.
Pause a reserve
Setstatus: 1 (Obsolete) or status: 2 (Hidden).
For a stronger pause that blocks operations program-side, use
block_price_usage: 1 on the reserve’s tokenInfo (rejects every operation that needs the price) or emergency_mode: 1 on the reserve. See Emergency controls.
Enable / disable advanced features
Most advanced features have flags at the market level — withdrawal queue, borrow orders, obligation orders, fixed-term rollover windows. The reserve-level fixed-term parameters (debt_term_seconds, host_fixed_interest_rate_bps, early_repay_remaining_interest_pct) live on ReserveConfig and use the standard reserve update flow.
See:
- Withdrawal queue (market-level)
- Fixed rate reserves (reserve-level + market-level)
- Borrow orders (market-level)
- Obligation orders (market-level + reserve-level fee)
Multisig considerations
For multisig-owned markets, every reserve update is a Squads proposal subject to the configured timelock. Plan parameter changes accordingly — a 12-hour timelock means an LTV adjustment proposed at 9:00 AM executes at 9:00 PM. For changes that need to land faster (e.g., closing a reserve in response to an oracle incident), use Emergency controls —borrow_disabled or block_price_usage flips can be batched into a single emergency proposal that takes precedence over slower-cadence parameter tuning.
Common errors
Reference
- Reserve config reference — every editable field
- Risk parameters — choosing values
- Emergency controls — pause and freeze flows
market-operationsCLI reference — full CLI flag detail