Skip to content

feat(request): EVM and x402 offers from a remote payer (stack 5/6) - #278

Closed
brendanjryan wants to merge 1 commit into
brendan/machine-fetch-4-tempo-dexfrom
brendan/machine-fetch-5-evm
Closed

brendanjryan wants to merge 1 commit into
brendan/machine-fetch-4-tempo-dexfrom
brendan/machine-fetch-5-evm

Conversation

@brendanjryan

@brendanjryan brendanjryan commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

5/6 — Phase 3. Pays MPP evm charges and x402 exact offers in USDC on Base (Base Sepolia on testnet) from a per-wallet remote payer key, created on first use in ~/.tempo/wallet/remote-payers.json (0600; not store.json, which the CLI and the accounts SDK rewrite whole). Offers outside the destination table, in another token, or for another EIP-3009 domain are refused before signing. Deterministic ranking with --payment-network; whoami shows remote_payer. Security review requested for the key handling.

Paired PRs

wallet-cli vendors machine-fetch main @ d168943 (0.3.0) and mppx brendan/wallet-cli-needs @ 8295134 (mppx@0.12.0 + the commits merged upstream as 82810df and 0acc2bc), pinned by commit until we choose to upgrade.

tempo request now considers MPP evm charges and x402 exact offers (unless
--funding off), on a chain in the destination table and in its USDC: Base for
mainnet, Base Sepolia for testnet, plus TEMPO_DEV_CHAINS destinations. An
offer elsewhere, in another token, or for another EIP-3009 domain is refused
before signing. Mppx's evm method signs exactly the selected offer.

The payer is the wallet's remote payer (D2): one secp256k1 key per wallet,
created on first use under a file lock and kept in remote-payers.json (0600)
beside the wallet store, which the CLI and the accounts SDK rewrite whole. The
key never appears in output; whoami reports its address and USDC. A
--private-key signer pays for itself.

Offers are ranked deterministically: a Tempo offer in a held token, a Tempo
offer a DEX swap funds, an EVM offer the payer already funds, then (with
--funding auto) one to bridge; --payment-network overrides. Balances are read
only when both kinds are offered. An unfunded payer is refused before signing
with its address. --dry-run quotes EVM offers without creating a payer.
@brendanjryan
brendanjryan force-pushed the brendan/machine-fetch-5-evm branch from 7ad768c to 4c798c5 Compare October 19, 2026 21:48
@brendanjryan
brendanjryan force-pushed the brendan/machine-fetch-4-tempo-dex branch from 8fa3fe0 to f181bbd Compare October 19, 2026 21:48
@brendanjryan

Copy link
Copy Markdown
Contributor Author

Superseded by #290, which consolidates the whole machine-fetch stack (#274–#279, #284, #285, #287) into one PR against main, with the same commits in order. Branches are kept.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant