01
Agent signs locally
Ed25519 on the device. Spend caps before anything is sent.
General protocol translator
WireSwitch translates between payment protocols so an agent can pay a merchant that doesn't speak the same language. Sign locally. Hop once. We settle the rail you name.
Name the pair. Hosted hop today: Stripe test PaymentIntent. Test keys are free.
01
Ed25519 on the device. Spend caps before anything is sent.
02
ingressProtocol and egressProtocol on one POST to /v1/translate.
03
Stripe test PaymentIntent on the hosted hop. Same signed envelope.
Sign up, issue a pt_test_ key (WIRESWITCH_API_KEY). WALLET_PRIVATE_KEY is a 32-byte Ed25519 seed the agent signs with — not the API key, not a bank account. For test, generate a throwaway hex seed. Set gatewayUrl to the hosted hop (otherwise the client talks to localhost).
wireswitch@1.1.3
ts
import { WireSwitch } from "wireswitch";
const client = new WireSwitch(process.env.WALLET_PRIVATE_KEY!, {
circuitBreaker: {
maxPerTransactionUSD: 50,
maxPerHourUSD: 500,
},
gatewayUrl: "https://wireswitch.io/v1/translate",
apiKey: process.env.WIRESWITCH_API_KEY!,
});
const result = await client.routePayment({
ingressProtocol: "GOOGLE_AP2",
egressProtocol: "STRIPE_PI",
amount: 19.99,
recipientMerchantId: "merchant_123",
});https://wireswitch.io/v1/translate
Name ingress and egress. Velocity and replay live on the engine, not in this UI.
STRIPE_PI and STRIPE_ACP are the Stripe PaymentIntent rail, not ACP checkout_sessions. Unknown pairs return 422. x402 cells exist in the engine; hosted x402 settle is not a public rail yet.