--- title: Symmetry Protocol Documentation description: On-chain infrastructure for multi-token vaults on Solana with automated rebalancing, oracle-based pricing, and permissionless keeper execution. sdk: "@symmetry-hq/sdk" url: https://docs.symmetry.fi last_updated: 2026-03-16 program_id: "BASKT7aKd8n7ibpUbwLP3Wiyxyi3yoiXsxBk4Hpumate" chain: Solana license: BUSL-1.1 --- # Symmetry Protocol Symmetry is on-chain infrastructure on Solana for creating and managing multi-token vaults with automated rebalancing. Vaults hold configurable sets of SPL tokens with target weights, mint their own SPL token representing proportional ownership, and use oracle-based pricing from Pyth and Raydium CPMM (Raydium CLMM and Switchboard are currently disabled). The protocol is fully permissionless — anyone can create vaults, deposit, withdraw, or run keeper infrastructure to earn bounties. ## SDK - Package: `@symmetry-hq/sdk` - Install: `npm install @symmetry-hq/sdk` - Peer deps: `@solana/web3.js`, `@coral-xyz/anchor` - Source: TypeScript ## Documentation ### Getting Started - Introduction: https://docs.symmetry.fi/index.md - Quickstart: https://docs.symmetry.fi/quickstart.md ### Core Concepts - Protocol Overview: https://docs.symmetry.fi/concepts/overview.md - Vaults: https://docs.symmetry.fi/concepts/vaults.md - Intents: https://docs.symmetry.fi/concepts/intents.md - Rebalancing: https://docs.symmetry.fi/concepts/rebalancing.md - Fees & Oracles: https://docs.symmetry.fi/concepts/fees-and-oracles.md - Global Config: https://docs.symmetry.fi/concepts/global-config.md ### Guides - Keeper Infrastructure: https://docs.symmetry.fi/guides/keeper.md - Integration Examples: https://docs.symmetry.fi/guides/examples.md ### SDK - SDK Reference: https://docs.symmetry.fi/sdk/reference.md ## Quick Reference | Item | Value | |------|-------| | Program ID | `BASKT7aKd8n7ibpUbwLP3Wiyxyi3yoiXsxBk4Hpumate` | | SDK package | `@symmetry-hq/sdk` | | Networks | `mainnet`, `devnet` | | Max tokens per vault | 100 | | Max managers per vault | 10 | | Max oracles per token | 4 | | Default priority fee | 25,000 micro-lamports | | Default compute units | 1,000,000 | ## Quick Start ```typescript import { Connection } from "@solana/web3.js"; import { SymmetryCore } from "@symmetry-hq/sdk"; const connection = new Connection("https://api.mainnet-beta.solana.com"); const sdk = new SymmetryCore({ connection, network: "mainnet", priorityFee: 50_000, }); // Fetch all vaults on-chain const vaults: Vault[] = await sdk.fetchAllVaults(); // Fetch a single vault and load live oracle prices let vault: Vault = await sdk.fetchVault(""); vault = await sdk.loadVaultPrice(vault); console.log(vault.formatted); ``` ## Common Use Cases | Use Case | How | |----------|-----| | Create a multi-token vault | `createVaultTx` → add tokens with `addOrEditTokenTx` → set weights with `updateWeightsTx` | | Deposit into a vault | `buyVaultTx` → `lockDepositsTx` → keeper processes rebalance → user receives vault tokens | | Withdraw from a vault | `sellVaultTx` → keeper processes rebalance → user receives underlying tokens. Pass all vault mints in `keep_tokens` for fast withdrawal (skips auctions) — then call `redeemTokensTx` directly. | | Read vault composition & price | `fetchVault` → `loadVaultPrice` → read `vault.formatted` | | Run keeper bot | Create `KeeperMonitor` and call `update()` in a loop | | Trigger vault rebalance | `rebalanceVaultTx` (keeper-initiated) | | Claim accumulated fees | `withdrawVaultFeesTx` | ## Architecture ``` ┌─────────────────────────────────────────────┐ │ Vault (on-chain) │ │ ┌─────────────────────────────────────────┐ │ │ │ SPL Token Holdings (up to 100 tokens) │ │ │ │ Target Weights (basis points, sum=10000)│ │ │ │ Oracle Aggregators (per token) │ │ │ │ Fee Settings (4 tiers × 4 categories) │ │ │ │ Vault SPL Token Mint │ │ │ └─────────────────────────────────────────┘ │ └──────────────────┬──────────────────────────┘ │ ┌─────────────┼─────────────┐ │ │ │ ┌────┴────┐ ┌────┴────┐ ┌────┴────┐ │ Intents │ │Rebalance│ │ Keepers │ │ (config │ │ Intents │ │ (off- │ │ changes)│ │(deposit/│ │ chain │ │ │ │withdraw/│ │ agents) │ │ │ │rebalance│ │ │ └─────────┘ └─────────┘ └─────────┘ ``` Roles: - **Creator**: Creates the vault, receives creator fees, can transfer the role. - **Host**: Platform that hosts the vault UI, receives host fees (set at creation, immutable). - **Managers** (up to 10): Control vault settings per their authority bitmasks. Receive manager fees split by weight. - **Keepers**: Off-chain agents that execute intents, process rebalances, update prices, and earn bounties. - **Users**: Deposit tokens to receive vault tokens, or burn vault tokens to withdraw underlying tokens. - **Symmetry Protocol**: Collects protocol-level fees as configured in the global config.