Nothing on the server can spend a user's wallet. One key can spend the treasury, and the protocol underneath is unaudited.
PassAccess is a signature, not a session
Every write carries a wallet address, a timestamp and a signature over them; signatures expire after ten minutes and there is no cookie or session to steal. Unauthenticated calls to /api/me, /api/launch and the persona and memory endpoints answer 401.
PassOnly the deployer can register a launch
The launch endpoint reads the factory record from chain, checks the curve, the fee recipient and the deployer against it, and rejects anything that does not match. A request body cannot claim a token it did not launch.
PassAPI keys are hashed
Keys are stored as SHA-256 with a short prefix for recognition and shown once. Per-minute rate limits and daily caps in micro-USD bound what any key or wallet can spend from the pool.
PassImage upload is signed, capped and sniffed
Uploading a token image needs a wallet signature, is limited to ten a minute per wallet and one megabyte, and the type is read from the file's own bytes, not from the request. The browser shrinks images to 512 px before sending.
PassOperator routes need a secret
Cron, the pool adjustment and the offspring veto require CRON_SECRET; without it they answer 401. The keeper's private key lives only in the server environment and never reaches the browser.
PassTransport and browser hardening
HSTS with preload, X-Frame-Options DENY, nosniff, a strict referrer policy, a content security policy and a permissions policy are set on every response.
PartialInline scripts are still allowed
The policy permits inline scripts because the framework emits them. A nonce-based policy needs middleware and is the next step.
PartialOne key spends the treasury, but the treasury stays small
The keeper is a spender, not an owner: it can claim fees and launch offspring, it cannot mint or touch locked liquidity. After every claim it forwards everything above a gas reserve to the owner's wallet, whose key is not on the server, so the key on the server never guards more than a few dollars. pons v2 itself has no third-party audit, and that is the largest open risk.