One native signer, not a wallet fleet
Asset Signer is useful, but it does not provide a multi-wallet model per agent.
Solana Agent Vault - Pinocchio program
An 8004 agent should not be limited to one signer. Agent Vault gives one 8004 Core Asset a fleet of onchain wallets: treasury, trading, operations, liquidity, settlement. The live holder controls everything; wallets can hold SOL, SPL, WSOL, sign CPI calls for swaps and DeFi, and publish verifiable onchain message attestations.
Solana already has strong primitives: Metaplex Core, Asset Signer, the 8004 registry, AgentWallet-style vaults, and Squads. What is missing is a simple agent primitive: multiple indexed program wallets tied to the same 8004 NFT identity and ready for DeFi.
Asset Signer is useful, but it does not provide a multi-wallet model per agent.
A vault without the Core Asset does not provide the same transferable ownership model.
A useful agent needs to hold tokens, wrap SOL, swap, provide liquidity, and settle flows.
Agent Vault is a small Pinocchio primitive: explicit, cheap, upgradeable, and built for composition. Seeds stay stable; future policies are layered around the core accounts.
Create PDA wallets per agent: treasury, trading, liquidity, ops. Monotonic u16 index.
Permissionless deposit, holder-only withdrawal, same-agent wallet transfer, preserved rent floor.
Create ATAs for the wallet PDA and transfer Tokenkeg plus minimal Token-2022 assets.
Required for swaps: turn wallet SOL into WSOL usable by AMMs, then unwind cleanly.
The holder authorizes the wallet PDA to sign a target instruction with explicit min-out, balance, owner, data length, and rent post-checks.
Solana Agent Vault behaves like a practical wallet layer for agents: payments, tokens, DeFi execution, account discovery, and verifiable message attestations. PDA signing is onchain through the program; off-chain message intent is recorded as a program-verified attestation.
Permissionless deposits, holder-gated withdrawals, same-agent transfers, and rent-aware closes.
ATA creation, checked transfers where decimals are available, WSOL wrap and unwrap.
Message hash, domain, nonce, expiry, wallet index, and holder authorization recorded onchain.
V0 does not hardcode Jupiter, Orca, or Raydium. The program exposes a generic primitive: the wallet PDA signs one CPI. The SDK builds routes and remaining accounts. Later policies can restrict that power without changing seeds.
No V0 allowlist, so DeFi integrations do not require redeploying the vault program.
The wallet PDA is readonly signer inside CPI; owner, data length, and rent are post-checked.
SDK helpers prepare swap instructions and mandatory checked post-conditions. The onchain program stays protocol-neutral.
Spending limits, delegation, and allowlists arrive through versioned policy PDAs.
The global account fixes the 8004 registry and accepted collection. Once initialized, it does not change: no mutable registry, no mutable collection, no admin pause flag in V0.
Clients know exactly which 8004 identity set is accepted for this deployment.
A future global policy is added in a separate account, without breaking the base.
Initialization must be reserved for the expected deployment key.
The program is designed as a small wallet primitive: compact accounts, measured compute, and DeFi CPI overhead separated from the target protocol.
Only the agent-local state needed for enumeration: version, bump, count, flags, timestamp.
Wallet metadata stays onchain. The agent relationship is proven by the PDA, not duplicated in data.
CI should snapshot CU and fail on large regressions before a release reaches devnet.
client.wallets
Agent Vault is meant to ship inside the existing 8004-solana TypeScript SDK.
The local repository is agent0-ts-solana, but the public SDK surface should
be exposed from 8004-solana as client.wallets.*.