GalaxyHubLabs/wdk-template-nextjsFork the template

One seed. Ten chains. USDT-first.

An open-source Next.js wallet template built on Tether's Wallet Development Kit. Solana, TRON, TON, Ethereum, BSC, Polygon, Arbitrum, Base, and Optimism — all from a single BIP-39 seed. Designed for human users and AI agents alike.

SolanaTRONTONEthereumBNB Smart ChainPolygonArbitrumBaseOptimismBitcoin
SolanaEthereumTRONPolygonArbitrumBase+3

Ten chains from one seed

Solana via @tetherto/wdk-wallet-solana, TRON and TON via their own modules, plus five EVM chains sharing a single WalletManagerEvm with per-chain RPCs.

Tether USDTether Gold
USDT$1.00+0.0%

USDT-first surface

Tether's canonical USDT deployments are first-class on every chain that has one. XAUt surfaces on Ethereum and TRON.

AES-256-GCMPBKDF2-SHA256250k iterations

Encrypted local vault

AES-GCM with 250,000-iteration PBKDF2, all via WebCrypto. The seed never leaves the device — not even to a backend, because there isn't one.

lib/wdk-client.ts
> await wdk.send(
{ to, amount })

AI-agent-ready

Built-in MCP server at /api/mcp exposes read tools to any agent that speaks the Model Context Protocol. Walk-through in /agents.

Watch any address

Read-only tracking across all ten chains via raw RPC, no keys required. Perfect for portfolio dashboards and treasury views.

Main
Test
10 chains1 toggle

Mainnet ↔ Testnet

A single toggle re-binds every chain to its testnet, with faucet shortcuts on zero-balance accounts. Default is testnet to keep first-run risk-free.

For AI agents
/api/mcp

Built on Tether WDK. Programmable from any AI agent.

The same @tetherto/wdk integration that powers the wallet UI is exposed to AI agents through an open Model Context Protocol server. Same chains, same RPCs, same address resolution. Zero glue code, zero seed exposure.

list_supported_chainsvalidate_addressresolve_nameget_balanceget_token_metadataget_recent_transactions

Compatible with any MCP client — Claude Desktop, Cursor, Continue, Cline, Windsurf, or your own runtime.

Read the agent guide
agent-send-usdt.ts
import { openWallet, sendToken } from "@/lib/wdk-client";
import { networkSpec } from "@/lib/chains";

// One seed, every chain — same SDK the wallet UI uses.
const wdk = await openWallet(seed, "mainnet");

const usdt = networkSpec("polygon", "mainnet")
  .tetherTokens.find(t => t.symbol === "USDT")!;

await sendToken(wdk, "polygon", usdt.address, recipient, 100_000_000n);