swap, add and remove liquidity, claim fees and rewards, open and close positions
A limited vault wallet that lets your AI agent swap, provide liquidity, and launch tokens on Meteora.
You set the allowed pools, actions, and spending caps per trade and per 24 hours, and a Solana program enforces them. Your agent works on DLMM, DAMM v2, and DBC inside those limits. Even with a stolen agent key, it cannot withdraw, change the limits, or send funds to another account.
Assume the agent is compromised. This is what it still cannot do.
Each row was attempted against the real Meteora programs. The right column is the error the vault returned.
| The attempt | Vault response |
|---|---|
| Send swap output to another account Meteora's program accepts this when called directly. Only the vault stops it | AccountNotOwnedByWallet |
| Pay removed liquidity to another account Meteora's program accepts this when called directly. Only the vault stops it | AccountNotOwnedByWallet |
| Claim fees or rewards into another account | AccountNotOwnedByWallet |
| Collect the referral or host fee on its own swaps | FeeRecipientNotAllowed |
| Transfer tokens or SOL straight out of the wallet | InstructionNotAllowed |
| Lock or split a position | InstructionNotAllowed |
| Fund a position someone else controls | PositionControlledByOther |
| Launch on a config that pays someone else or charges a fee | ConfigNotAllowed |
| Use a token with a transfer hook | TransferHookNotAllowed |
| Reassign the vault wallet to another program | WalletSlotNotAllowed |
| Trade in a pool you did not list | PoolNotAllowed |
| Spend above the limit, per trade or in any 24 hours | TxCapExceeded, DailyCapExceeded |
| Change its own limits, or withdraw | Unauthorized |
What the agent can do
Everything else on these programs is blocked by default.

| Action | DLMM | DAMM v2 | DBC |
|---|---|---|---|
| Swap | [x] | [x] | [x] |
| Limit orders | [x] | [ ] | [ ] |
| Open, add, remove, and close positions | [x] | [x] | [ ] |
| Choose bin range and strategy, extend, shrink, rebalance | [x] | [ ] | [ ] |
| Claim fees | [x] | [x] | [x] |
| Claim rewards | [x] | [x] | [ ] |
| Create a pool or launch a token Off until you turn it on. You list a new pool before the agent can trade it, and before it can fund a DAMM v2 pool. | [x] | [x] | [x] |
Setup takes three steps
You need Node.js 20 or newer and your own Solana RPC. With a browser wallet, you can do steps 1 and 2 in the console instead.

Write the limits
Pick the pools, the allowed actions, and how much of each token the agent may spend.
$ npm install -g --ignore-scripts \
https://metboi.com/metboi-0.1.1.tgz
$ export METBOI_RPC=<your RPC URL>
$ export METBOI_OWNER_KEY=<owner key file>
$ metboi init --agent <agent public key> \
--policy policy.json --broadcast
Fund the vault wallet
Deposit only what the agent should work with. Your main wallet stays out of reach, and you can withdraw at any time.
$ export METBOI_AGENT_KEY=<agent key file> $ export METBOI_VAULT=<vault from init> $ metboi status
Connect your agent
Install the skill, or run the MCP server. Give your agent the agent key only, and keep the owner key out of its reach. Every action simulates unless it asks to send.
$ npx skills add https://metboi.com
What it does not protect you from
Bad trades inside the limits
The vault does not judge prices. A compromised agent can lose money in a pool you listed, for example by accepting poor prices and getting sandwiched. New spending stops at your daily limit, but funds already in a position can also lose value when it exits at a bad price.
Pools you choose to list
The limits assume you trust the tokens and pools on the list. A bad token in a listed pool is still a bad token.