GitHub RadarBlue team tool
Safe bridge between AI agents and Web3 transactions. Open-source React kit + protocol with anti-phishing UI patterns built in. Primary language: TypeScript. 5 stars.
Project links:Open GitHub projectBack to radar
<p align="center"> <img src="./logo.svg" width="64" height="64" alt="txKit" /> </p>
<h1 align="center">txKit</h1>
<p align="center"> Safe bridge between AI agents and Web3 transactions - open protocol + reference implementation. </p>
<p align="center"> Embeddable Web3 UI components for React + <a href="./packages/tx-protocol/spec/v0.1/prepared-transaction.md"><code>PreparedTransaction</code> spec</a> for AI / MCP tools. </p>
<p align="center"> <a href="https://www.npmjs.com/package/@txkit/react"><img src="https://img.shields.io/badge/npm-v0.1.0--alpha-blue.svg" alt="npm version" /></a> <a href="https://bundlephobia.com/package/@txkit/react"><img src="https://img.shields.io/bundlephobia/minzip/@txkit/react" alt="bundle size" /></a> <a href="https://github.com/txkit/mono/actions/workflows/ci.yml"><img src="https://github.com/txkit/mono/actions/workflows/ci.yml/badge.svg" alt="CI" /></a> <a href="https://github.com/txkit/mono/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/@txkit/react.svg" alt="license" /></a> <img src="https://img.shields.io/badge/TypeScript-5.9-blue.svg" alt="TypeScript" /> </p>
<p align="center"> <a href="https://github.com/ethereum/ERCs/pull/1753"><img src="https://img.shields.io/badge/ERC--8265-Draft%20PR%20%231753-success.svg" alt="ERC-8265 PR" /></a> <a href="https://ethereum-magicians.org/t/erc-8265-prepared-transaction-envelope/28557"><img src="https://img.shields.io/badge/Ethereum%20Magicians-thread%2028557-blue.svg" alt="Magicians thread 28557" /></a> </p>
Reference implementation of **ERC-8265 Prepared Transaction Envelope** - a proposed open standard for pre-execution transaction validation between AI agents, MCP tools, and wallets. Apache-2.0 SDK shipped, ERC draft open in ethereum/ERCs (CI green), public discussion live on Ethereum Magicians.---
v0.1.0-alpha - published under the alpha npm tag while we refine the public surface. API may shift before v1.0.txKit is two things:
PreparedEnvelope shape for AI-initiated Web3 operations (decode, simulate, preview before signing). Composable with MoonPay's Open Wallet Standard.PreparedEnvelope to render confirmation flows, with full lifecycle handling for wallets, balances, transactions, and signatures.Core invariant: txKit never holds keys. It is an orchestrator, not a signer - keys remain in the wallet, Safe, Turnkey, Privy, or any wagmi-compatible signer.
Live submission to the Arbitrum Open House London Buildathon (deadline 14 June 2026). Multi-chain deployment surface:
| Chain | CAIP-2 | Role | |-------|--------|------| | Arbitrum Sepolia | eip155:421614 | Primary L2 testbed | | Robinhood Chain testnet | eip155:46630 | Financial-grade L2 on Arbitrum Orbit, RWA-focused | | Ethereum Mainnet / Sepolia | eip155:1 / eip155:11155111 | Reference + ENS resolution |
Why pre-execution safety, why now. The FCA + Bank of England joint tokenization framework (18 May 2026) and MiCA Phase 2 obligations on CASPs push agent-driven RWA workflows toward verifiable, audit-ready transaction routing. txKit decodes the envelope before signature - intent, allowance bounds, recipient allowlist, MEV risk - so agents and wallets approve or reject on the decoded picture, not the calldata bytes. Post-execution analysis catches losses after settlement; on tokenized stocks, ETFs, and on-chain bonds, settlement is final.
Live agent demo: `examples/arbitrum-london/` - x402 producer + EIP-7702 signer + TransactionButton flow on Arbitrum Sepolia and Robinhood Chain testnet.
| Package | Description | Version | |---------|-------------|---------| | `@txkit/react` | React components and headless hooks |  | | `@txkit/core` | Framework-agnostic utilities and types |  | | `@txkit/themes` | CSS themes (light, dark, variants) |  | | `@txkit/tx-protocol` | Open protocol: PreparedTransaction types + zod schemas |  | | `@txkit/tx-decoder` | Decode raw EVM calldata into clearSigning trees (ERC-7730 + ABI fallback) |  | | `@txkit/ows-adapter` | Bridge MoonPay Open Wallet Standard <-> PreparedTransaction |  | | `@txkit/x402-adapter` | Bridge x402 HTTP payments (Linux Foundation, 2 Apr 2026) <-> PreparedTransaction |  |
npm install @txkit/react@alpha @txkit/themes@alpha wagmi viem @tanstack/react-queryimport { TxKitProvider, ConnectWallet } from '@txkit/react'
import '@txkit/themes'
import { mainnet } from 'viem/chains'
import { http } from 'viem'
const App = () => (
<TxKitProvider
config={{
chains: [ mainnet ],
transports: { [mainnet.id]: http() },
}}
>
<ConnectWallet />
</TxKitProvider>
)| Package | Version | |---------|---------| | react / react-dom | >= 18 | | wagmi | >= 3 | | viem | >= 2 | | @tanstack/react-query | >= 5 |
If you're adding txKit to an existing dApp (RainbowKit, AppKit, etc.), you likely already have these installed.
Already using RainbowKit or another wagmi-based connector? Use embedded mode:
import { TxKitProvider, TransactionButton, txStep } from '@txkit/react'
import { parseEther } from 'viem'
import '@txkit/themes'
// Inside your existing WagmiProvider
function SendButton() {
return (
<TxKitProvider embedded>
<TransactionButton
steps={[
txStep('send', 'Send ETH', { to: '0x...', value: parseEther('0.01') }),
]}
label="Send 0.01 ETH"
/>
</TxKitProvider>
)
}Every component supports three customization levels:
children as render function for custom UIComing in v0.2: <TxApproval /> (review-before-sign with decode + simulate + risk badges), <AllowanceGrant /> (policy/limit grants for session keys, agent budgets, multisig spending policies), <TxHistory />, <CollateralRiskBadge />, ERC-7715 + Skyfire adapters.
`@txkit/tx-protocol` defines an open envelope + content shape flowing between producers (AI / MCP tools, DeFi protocol adapters) and consumers (wallets, signer orchestrators, UI preview layers, policy engines).
_"OWS signs. txKit decides what's safe to sign."_
v0.1 covers three kinds today: evm-tx (single EVM transaction), evm-batch (EIP-5792 atomic batch), signature (EIP-712 / SIWE / personal-sign). Nine more are reserved: evm-userop, evm-frame, evm-7702, mandate, intent, psbt, svm-tx, move-tx, cosmos-tx.
| Example | Pattern | |---------|---------| | `stakewise-deposit.ts` | Single EVM call (evm-tx) with attack-defense fields for protocol UI | | `uniswap-permit2-swap.ts` | EIP-5792 atomic batch (evm-batch) with Permit2 approval | | `safe-delegatecall-warning.ts` | Safe wallet delegatecall risk warning + decoded trace | | `multicall-batch.ts` | Multicall-bait detection via attack-defense flags |
import { createEvmTx, validateEnvelope } from '@txkit/tx-protocol'
const envelope = createEvmTx({
chain: 'eip155:1',
calls: [ { to: '0x...', data: '0x...', value: '0xde0b6b3a7640000' } ],
validity: { notAfter: Math.floor(Date.now() / 1000) + 3600 },
description: { short: 'Stake 1 ETH', action: 'stake' },
metadata: { protocol: 'stakewise-v3', tokenMovements: [...], counterparties: [...] },
})
const result = validateEnvelope(envelope)
// See packages/tx-protocol/README.md for the full APItxKit is a decode / preview / risk layer. It sits between agents that produce intent and wallets that sign. Common neighbors:
##