Skip to Content
GuidesRecipesVault curator ops

Recipe: vault curator operations

Goal — A curator team runs day-to-day strategy operations from operator wallets or bots. Sensitive configuration changes stay behind higher-trust signers. Every action is restricted to known contracts, known functions, and bounded parameters.

Good for:

  • Curator teams that separate strategy execution from governance approvals.
  • Automated rebalancing with tight operational constraints.
  • Multi-vault operations that reuse one policy pattern.

Example: two policies, two trust levels

A curator manages a USDC strategy. An operator wallet rebalances across approved markets; a committee oversees material changes:

PolicyMembersAllowed
Rebalance & maintenanceOperator wallets, botsOnly the strategy and vault contracts and their underlying protocols. Rebalances, routine position adjustments, reward claims. Per-call amount limits; no arbitrary transfer recipients.
Governance changesCommittee signersOnly the admin and config functions of the strategy contracts: add or remove markets, change caps and queues, update fees.

The split matters: a leaked operator key cannot expand its own scope, because the config functions live in the other policy.

Steps

  1. Import the controlling Safe — the vault or admin Safe that executes the strategy’s transactions.
  2. Create the “Rebalance & maintenance” policy: open Policies, create a policy (for example “Curator Rebalancing”), select the Safe, and add the operator wallets or bot addresses as Members.
  3. Add tightly scoped actions for the routine operations: DeFi actions for your protocols, Custom actions recorded with Pilot, and Swap actions for reward conversion. Restrict the targets to the exact contracts, name the functions, and cap the amounts.
  4. Create the separate “Governance changes” policy with the committee signers. It contains only the admin and config calls.
  5. Click Apply Changes for both policies and sign with the Safe.

Operators then execute the allowed workflows with Pilot: simulation first, onchain policy checks on execution.

Do it as code

The two-policy structure is two roles on one constellation node:

export const curatorRoles = eth.roles['Curator Roles']({ nonce: 0n, owner: adminSafe, avatar: adminSafe, target: adminSafe, roles: { rebalance, governance }, })

Each role has its own members and permissions files. For bot operators, apply the AI agent pattern; to give the committee a veto window over high-impact calls, route a role through a Delay Modifier.

Last updated on