The protocol operator
The Red Potion team deploys and runs the FundManagerDeployer, the single protocol root. The protocol operator onboards tenants, publishes the canonical contract implementations, and sets the protocol-wide fee recipient. It does not run individual funds or hold their assets.The tenant (fund house)
A tenant is an organization that runs one or more funds. Each tenant gets its own FundManager and controls the upgrade authority for all of its funds’ contracts. Tenants are isolated: one tenant cannot touch another’s funds.The fund operator
Within a tenant, the fund operator is the party that actually manages a fund day to day. This is not a single role but a set of them, all granted on the Fund:- Reporter submits NAV price reports after each batch closes (
SUBMIT_REPORT_ROLE). - Report acceptor accepts a reviewed report and settles the batch (
ACCEPT_REPORT_ROLE). - Reviewer can veto a suspicious or wrong report before it settles (
REJECT_REPORT_ROLE). - Allocator moves capital between the Fund and its strategies (
PUSH_TO_STRATEGY_ROLE/PULL_FROM_STRATEGY_ROLE) and funds settled redemptions (FUND_REDEEM_ROLE). - Configurators set fees, risk limits, allowed assets, and price-safety bounds through their respective roles.
The strategy operator
Capital leaves the Fund only into Strategy wallets. A strategy has its own admin and its ownCALLER_ROLE operators, separate from the fund’s roles — so the party executing trades can be different from the party running the fund. A strategy operator can only make calls that have been explicitly allowlisted (by exact caller, target contract, function selector, and optionally pinned arguments), and can never call the Fund itself. The Fund can always pull assets back from a Strategy, so an operator can deploy capital but can never lock the fund out of it.