Program
Multisig Layout
Each user gets one Squads multisig with two members and a threshold of 1:
The server is added as a member at creation but holds only
Execute — it can never initiate a transfer, only push through what the user has proposed and what passed screening.
Deterministic Vaults
The vault address is derived deterministically per user, so a login from any device resolves the same vault:/sponsor/create returns the existing PDAs instead of re-creating.
PDAs
Sponsored Transaction Model
Sage is the fee payer and rent collector for the full lifecycle. The user never needs SOL.
The multisig is created with
rentCollector = server, so rent from completed proposals returns to the sponsor.
SDK Wrappers
Thesrc/ package wraps the Squads SDK for tests and reuse:
The canonical end-to-end agentic co-signer flow is covered in
tests/reference/transfer-flow.test.ts.
Always verify the Squads program ID against the official Squads documentation before deploying to mainnet.

