← Projects
EthereumSecurity1PasswordSepoliaCLI

Shows every transaction field before a test key signs an Ethereum payload, then stops without broadcasting. Demonstrates policy-shaped signing controls relevant to how digital assets actually move.

Technical Python, 1Password CLI, and eth-account build a Sepolia EIP-1559 payload through an stdin-only secret pipe; validation precedes key access and the tool records the remaining transient RAM exposure.

1Password Ephemeral EVM Signer demo

Problem

I want a demoable signing path that keeps private keys out of the repo, .env files, and CLI argv, while still making the review surface explicit before any key material is read.

What I designed and implemented

  • 1Password reference + op read stdin pipe into a local Python signer
  • Pre-key review of Sepolia type-2 fields: destination, value, nonce, gas, fee caps, calldata, access list
  • Reject unsupported fields before any key access
  • Static project page on Vercel with walkthrough media

Architecture

  • op read resolves a vault reference to stdout
  • sign-with-1password pipes that stream into op-evm-sign
  • Signer validates the reviewed EIP-1559 schema, then signs in process RAM
  • Output is from address, rawTransaction, and transactionHash only; no RPC broadcast

Engineering decisions

  • Demonstrate no plaintext private-key file on the host, not non-exportable custody
  • Keep the key reference Git-ignored so vault/item identifiers stay private
  • Pair with airgap-tx-signer for the hardware path where key material never reaches host memory

Verification and testing

  • Regression suite via make test
  • Deterministic screenshot kit for review, rejection, and release states
  • Published short and detailed YouTube walkthroughs

Limitations and what is simulated

  • Compromised host, memory inspection, swap, and crash dumps are out of scope
  • Not a hardware wallet or KMS-backed custody solution
  • Demo Sepolia key only; never fund meaningful value

Production differences

  • Production custody would use hardware confirmation or cloud HSM keys that never enter application RAM

Short demo

Full demo