The 30-second version
A vault is a shared pool with one trader — an agent — and one hard rule: whoever deposits can pull their fair share back out at any moment, without the agent's permission.
You deposit a base asset (USDC or SOL). The agent trades the whole pool across Solana. Your deposit becomes shares of the pool. Whenever you want out, you redeem your shares for your pro-rata slice of whatever the vault holds right now — paid in kind, no lockup, no notice, no signature from the agent.
Are you depositing, or running the agent?
The same vault has two kinds of people. Everything below is written for one or the other, so know which you are.
You back an agent with your capital. You deposit, watch, and redeem whenever you like. Jump to If you deposit.
You run the agent. You create the vault, keep ≥5% skin in it, and trade the pool with your own bot. Jump to Run an agent.
The two modes, said plainly
Every vault declares one execution mode at creation and can never change it. The badge on the card is the trust model — it tells you what the agent is allowed to do with the pool.
The agent can only swap, and only through Jupiter. It can still swap badly on purpose — but it can't send funds to a wallet. You can always withdraw your share of what remains.
Full discretion — the agent can do anything with the pool. You are trusting it completely. You can always withdraw your share of what remains.
If you deposit
Run an agent — create your vault
Anyone can run an agent. It's three moves: create the vault, hold your two keys straight, and seed your own skin.
Owns the vault. Signs create / pause / retire, earns the fee, holds the skin. Your main wallet. Keep it safe.
The hot key your bot trades with. Online 24/7, so it's the risky one. If it leaks, the thief can only trade — never steal or change rules.
# generate the agent (bot) key — put its pubkey in the form solana-keygen new -o bot.json solana-keygen pubkey bot.json # → paste this as "Agent signing key"
Making your agent actually trade
This is the part with no button. Trading is not done on this website. The site is for depositing, redeeming, and managing. To trade the pool, your own bot sends one instruction to the program —agent_execute— signed by your agent key. The program co-signs the swap with the vault's authority so the vault's funds move, then checks that nothing was stolen.
register_holding creates the vault's token account for that mint. One call per mint, done by the operator.agent_execute, and signs with the agent key. The vault's USDC swaps into its SOL holding. To go back, another agent_execute swaps SOL → USDC.// 1. quote a route on Jupiter (USDC -> SOL) for the vault's authority
const route = await jupiter.quote({ inputMint: USDC, outputMint: SOL, amount });
const swapIx = await jupiter.swapInstruction(route, vaultAuthority);
// 2. wrap it in agent_execute and sign with the AGENT key
const tx = buildAgentExecute({
agent: botKeypair.publicKey, // the hot key (bot.json)
vault, // your vault
innerProgram: JUPITER_V6, // pinned in jupiter mode
innerIx: swapIx, // the Jupiter swap
holdingProofs: [solHolding], // proves the SOL account is a registered holding
});
tx.sign(botKeypair);
await connection.sendTransaction(tx);bot.json and your vault, it does a real Jupiter swap) is on the way. Until then, this is the exact instruction shape. Test with a tiny amount first.What's guaranteed, what isn't
- · Anytime pro-rata exit from what remains.
- · Paid in kind — you get the actual assets.
- · No agent signature, no lockup, no notice.
- · Non-custodial: Skew never holds your keys or funds.
- · Mode, base, and fee are immutable after creation.
- · That the agent makes money — it can lose all of it.
- · That a Jupiter agent swaps in your interest.
- · That an unrestricted agent does anything sensible.
- · Protection from a bad strategy — only from theft.