> For the complete documentation index, see [llms.txt](https://docs.upshift.finance/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.upshift.finance/vault-architecture/stellar-vaults/curator-model.md).

# Curator Model

An appointed curator (the operator) manages the vault's yield strategy by moving capital into and out of a whitelisted set of subaccounts. Each subaccount has one of two types, registered at the time it is added:

| **Subaccount** **Type** | **Custody Model**                                                                                                                           | **NAV Accounting**                                                                                    |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| Strategy                | Another Soroban contract that implements the vault's IStrategy interface (deposit, withdraw, get\_balance, get\_local\_balance, get\_asset) | Self-reports the full position (idle + deployed) on every NAV calculation via get\_balance()          |
| EOA                     | A MPC-controlled address (via Fordefi)                                                                                                      | Vault-controlled tracker (WalletNetDeployed) maintained per-wallet and aggregated as deployed\_assets |

The operator interacts with subaccounts through the following entrypoints:

| **Operation**                  | **What It Does**                                                                                                                                                                                                                                 |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `deposit_to_subaccount`        | Transfers tokens from the vault to a subaccount. For Strategy targets, also calls IStrategy::deposit so the strategy knows tokens have arrived. For EOA targets, increments WalletNetDeployed and the aggregate deployed\_assets.                |
| `withdraw_from_subaccount`     | Pulls tokens back. For Strategy targets, calls IStrategy::withdraw (push model). For EOA targets, pulls via SEP-41 transfer\_from (the wallet owner must have pre-approved the vault as spender), then decrements the tracker and the aggregate. |
| `update_wallet_deployed`       | Reconciles a single Wallet subaccount's attributed value used to recognize gains, losses, or external dust. Moves the per-wallet tracker and the aggregate deployed\_assets in lockstep.                                                         |
| `update_wallet_deployed_batch` | Reconciles multiple Wallet subaccounts atomically. The per-call AUM rate limit is applied to the net delta, so a batch with offsetting moves (+100k on A, −100k on B) passes the limiter.                                                        |
| `update_deployed_assets`       | Aggregate-only emergency reconciliation. Documented as deprecated for routine use after the introduction of per-wallet attribution.                                                                                                              |

Subaccount membership is controlled by the admin via `add_subaccount` and `remove_subaccount`. The admin is a multi-sig address with an signer quorum involving all parties of the upshift vault. The whitelist is capped at 10 entries.&#x20;

The curator operates within strict bounds set by the Upshift team. A policy engine governs which protocols, contracts, and functions the curator is authorized to interact with as part of the vault's strategy. As an additional safety measure the admin sets AUM change limits, capping how much deployed\_assets can move per update and per rolling window, preventing sudden NAV manipulation.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.upshift.finance/vault-architecture/stellar-vaults/curator-model.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
