Setup
Set up and Manage your OctoVault
Deploy
Curators can deploy a vault using the Untangled Curator App or directly via contract constructors.
Select the vault type:
- Market (single strategy)
- Vault (Meta, multi-strategy allocator)
Deployment parameters
- name
- symbol
- asset
- treasury (address where funds will be held)
Role assignments
setCurator(address, true)setGuardian(address)
Governance configuration
setTimelock(x)→ wait →acceptTimelock()setCap(x)→ wait →acceptCap()setFee(x)→ wait →acceptFee()
Add strategies
- For Vaults:
addMarket(market)→ wait →acceptMarket(market) - For Markets:
addAdapter(adapter, maxAllowance)
Optional
- Add Hook:
setHook(hookAddress)to connect modules (valuation, withdrawal, etc.)
Once deployed, the vault is fully operational and can start accepting deposits.
Roles and Capacities
| Role | Access | Responsibilities |
|---|---|---|
| Admin | onlyAdmin | Set Hook, Guardian, and Curators; transfer admin; manage adapters; remove markets. |
| Curator | onlyCurator / onlyCuratorOrAdmin | Run strategies, stage configuration changes, and allocate assets across Markets. |
| Guardian | onlyGuardian | Veto any pending parameter or market changes during timelock delay. |
| Hook | onlyHook | Executes module logic for deposits, withdrawals, valuation, and fees. |
Each role is clearly isolated to maintain trust and accountability across operational, governance, and oversight layers.
Fees
OctoVault currently implements performance fees through the ValuationModule.
Other fees are not explicitly included on-chain but curators can factor them into valuation and share price calculations.
Fee Types
| Fee Type | Description | How It Works in Code |
|---|---|---|
| Performance Fee | Charged on gains above the previous high-water mark | Calculated in the ValuationModule; vault pays via claimFee() |
| Management Fee | Not implemented | Could be added at Hook level |
| Protocol Fee | Not implemented | Global or automatic fee split has not been implemented |
Fees are transparent and depend entirely on the Hook’s logic.
The base vault itself does not charge or collect any hidden amounts.
Manage your OctoVault
The Curator App or a simple script can be used to perform daily operations.
View
- Monitor AUM and allocations across strategies.
Execute
- For Vaults:
allocate([\{market, amount\}, ...]) - For Markets:
supply(),withdraw(),harvest()
Governance
- Queue and accept staged changes.
- Guardian can veto unsafe updates.
Claim Fees
claimFee()transfers accrued amounts from the treasury.
Each action emits detailed on-chain events for transparent tracking. All actions follow timelock and role-based control, ensuring safety and traceability.
Vault Valuation
The ValuationModule provides automated high-water-mark NAV accounting.
Functions include:
onDeposit/onWithdraw: tracks net portfolio value and updates the high-water mark.updatePortfolioValue(newValue): updates NAV and accrues performance fees only on gains above the high-water mark.claimFee(): returns the accrued fee amount for distribution.setFee(bps): sets the performance fee rate in basis points.
Only the Hook may call these functions, ensuring valuation and fee logic remains controlled.
Upgradability
All OctoVaults are immutable — smart contracts cannot be upgraded or altered after deployment.
If you need to evolve your strategy or parameters significantly, deploy a new vault version and migrate existing shares.
Configuration changes such as cap, timelock, fee, or markets must go through the timelock governance flow.