Skip to main content
When you mandate a strategy, you deploy and own the infrastructure while delegating day-to-day operations to a professional asset manager. You define exactly what the asset manager can and cannot do — which yield sources they can use, how fees are split, and what roles they hold. The smart contracts enforce these boundaries, not trust. This guide walks you through the full journey: agreeing on terms, deploying the strategy, configuring guardrails, and delegating operations.

What is a mandate?

A mandate is your platform’s request for an asset manager to operate a Strategy according to guardrails you define. You say: “manage this capital, but only using these yield sources, with these fee caps.” The asset manager accepts and operates within those constraints. Three parties are involved: This differs from the “use an existing strategy” path where the asset manager owns the strategy and you simply point your Conduit at it. With a mandate, you own and control the strategy — the asset manager is your operator, not your counterparty.

Define the terms of your mandate

Before deploying anything, agree with your asset manager on what the mandate allows:
TermWhat you decideHow it’s enforced on-chain
Authorized yield sourcesWhich protocols the AM can deploy capital toVehicle Registry — only explicitly approved sources can receive assets
Allocation limitsMaximum exposure per yield sourceQueue configuration and allocation caps
Fee structureFee rates, max caps, and recipient splitsFee Manager — immutable max caps guarantee the boundaries
Operational scopeWhich on-chain roles the AM receivesEAC scoped roles — granular, per-contract permissions

Execute the mandate

1

Deploy the strategy

As the platform, you deploy and own the strategy infrastructure — the External Access Control, Fee Manager, and MultiVehicle. This gives you admin control over the entire system.Follow the deployment guide to set up:
  • External Access Control (EAC) — your central permission contract, with your platform admin as DEFAULT_ADMIN_ROLE
  • Fee Manager — configured with the fee structure you agreed on with the AM
  • MultiVehicle — the Strategy contract itself, along with its accounting and queue engines

Deploy your strategy

Step-by-step guide to deploying the strategy infrastructure as a Conduit owner.
For more detail on each contract and parameter, see Create a Strategy.
2

Authorize yield sources

Decide which yield sources your strategy can use. This is the most important guardrail — the asset manager can only deploy capital to sources you have explicitly approved. Everything else is blocked at the contract level.You can add or remove authorized sources at any time. Only the owner (you) can change this list.
ISectorAccountingEngine accounting = contracts.multiVehicle.accountingEngine();

// Authorize yield sources for your strategy
accounting.syncVehicleActivationStatus(aaveVehicle, true);
accounting.syncVehicleActivationStatus(compoundVehicle, true);
Requires: MULTI_VEHICLE_SET_VEHICLE_AUTHORIZATION role scoped to the Sector Accounting Engine. As the owner, grant this role to yourself — never to the asset manager.
3

Grant operational roles to the asset manager

This is the formal delegation. You grant the asset manager scoped roles that allow them to operate the strategy — and nothing more.
Role categoryWhat it allowsScoped to
Core operations (dispatch, rebalance, move assets/shares)Allocate capital and rebalance across yield sourcesSector Accounting Engine
Queue managementConfigure deposit and redeem allocation queuesQueue Strategy Engine
Query progressionAdvance async operations through their lifecycleSub Query Engine
Redemption queueFeed and retrieve assets from the redemption queueMultiVehicle
For the full code to grant all operational roles, see Grant operational roles.
Never grant DEFAULT_ADMIN_ROLE to the asset manager. This is the most privileged role — it can grant and revoke any other role, including its own.
Optionally grant fee collection roles (FEE_MANAGER_DISPATCH_ERC20, FEE_MANAGER_REDEEM_VEHICLE_SHARES) to the AM or a keeper for routine fee distribution. See Optional: grant fee collection roles.
4

Verify the mandate

Confirm the asset manager has exactly the right permissions — operational roles granted, admin roles retained by you.
// Verify the AM has an operational role
bool canDispatch = eac.hasRoleOrScopedRole(
    keccak256("MULTI_VEHICLE_DISPATCH"),
    address(accounting),
    assetManager
);

// Verify the AM does NOT have admin roles
bool hasAdmin = eac.hasRoleOrScopedRole(
    keccak256("DEFAULT_ADMIN_ROLE"),
    address(0),
    assetManager
);
assert(!hasAdmin); // Must be false
Mandate checklist:
  • The AM has core operational roles (dispatch, rebalance, move assets/shares)
  • The AM has queue management and query progression roles
  • The AM does not have vehicle authorization (MULTI_VEHICLE_SET_VEHICLE_AUTHORIZATION)
  • The AM does not have fee configuration (FEE_MANAGER_SET_FEES, FEE_MANAGER_SET_FEE_RECIPIENTS)
  • The AM does not have DEFAULT_ADMIN_ROLE
5

Connect to your Conduit

With the mandate in place and the asset manager operating your strategy, deploy a Conduit on top to let your users access it through your platform’s interface.

Quick start

Deploy your first Conduit and connect it to your mandated strategy.

Monitor the mandate

Once the mandate is active, ongoing oversight is your responsibility as the strategy owner.
Monitor your strategy’s TVL, allocation breakdown, and operational activity through the Railnet subgraph:
query StrategyOverview($address: String!) {
  Vehicle(where: { address: { _ilike: $address } }) {
    supply
    SectorBalance {
      asset
      value
      sector { name }
    }
    Query(order_by: { createdAt: desc }, limit: 20) {
      mode
      state
      createdAt
    }
  }
}
See API & reporting for comprehensive monitoring queries.
Every asset movement emits on-chain events. You can verify that the asset manager is deploying capital only to authorized yield sources and within any allocation limits you defined.
The Fee Manager tracks all fee accrual and distribution on-chain. Fees flow to the configured recipients automatically, according to the splits you defined in the Fee Manager.See Fee Manager reference for details on how fees are collected and distributed.

Adjust the mandate

As the strategy owner, you can adjust mandate terms without redeploying:
AdjustmentHowNotes
Add a yield sourceAuthorize via syncVehicleActivationStatusTakes effect immediately — the AM can start allocating
Remove a yield sourceDeauthorize via syncVehicleActivationStatusThe AM must withdraw capital from that source first
Change fee ratesUpdate via Fee ManagerMust stay within immutable max caps
Update fee recipientsUpdate via Fee ManagerDispatch pending fees before changing recipients
Tighten allocation limitsUpdate queue configurationRestricts future allocations; existing positions are unaffected

Offboard an asset manager

1

Check for in-flight operations

Before revoking roles, ensure there are no pending queries that require the asset manager’s roles to complete.
query PendingQueries($address: String!) {
  Query(where: {
    Vehicle: { address: { _ilike: $address } },
    state: { _nin: ["SETTLED", "CANCELLED"] }
  }) {
    id
    mode
    state
    createdAt
  }
}
Allow time for async operations (like Ethena’s 7-day cooldown) to settle before revoking roles. Pending operations will complete even after revocation, but new ones cannot be initiated.
2

Revoke all operational roles

Once in-flight operations have settled, revoke the asset manager’s roles. They will no longer be able to initiate any operations on the strategy.For the full revocation code, see Revoke access.
3

Onboard a replacement (optional)

You can immediately delegate to a new asset manager by granting them the same set of scoped roles. Your strategy, guardrails, and fee structure remain unchanged — only the operator changes.See Grant operational roles to onboard the new AM.

Mandate vs. using an existing strategy

Not sure which path is right? Here’s how they compare:
Use an existing strategyMandate a bespoke strategy
Who owns the strategy?The asset managerYou (the platform)
Who sets guardrails?The AM (self-imposed)You
Fee structureThe AM’s termsYour terms
Yield source authorizationThe AM decidesYou decide
Can you switch AMs?Point to a different strategyRevoke and re-delegate
ComplexityLower — just connectHigher — deploy, configure, delegate

Next steps

Configure fees

Configure distribution-layer fees on your Conduit and understand the two-layer fee model.

Guardrails reference

Full technical reference for the delegation model and role-granting code.