| Feature |
Description |
Notes |
| Multichain Support |
Native support for EVM chains, including L2s |
Chain list is extensible |
| Agent Wallet Abstractions |
Easy wallet/session key management |
Supports spending limits |
| Onchain Communication |
Simplified APIs for inter-agent messaging and contract calls |
Supports x402 model payments |
| LangChain Integration |
Connects GOAT agents to LangChain pipelines |
Accelerates NLP workflows |
| CLI and SDK Tools |
Command-line tools for setup, deployment, and troubleshooting |
Early CLI features, evolving fast |
The GOAT SDK components are primarily implemented in TypeScript, making them accessible to many web3 developers who lean toward JS/TS stacks. However, keep in mind that some critical features remain experimental or have limited test coverage as of version 0.7.x.
Setting Up GOAT SDK: Environment and Prerequisites
Before building a multichain agent, ensure you have the following ready:
- Node.js v18+ installed
- Yarn or NPM for package management
- Access to RPC endpoints for your target chains (Infura, Alchemy, or public nodes)
- Private keys or encrypted wallet files (for testing, use testnet keys obviously)
Clone the GOAT SDK repo and install dependencies:
git clone https://github.com/goat-sdk/goat-sdk.git
cd goat-sdk
yarn install
Next, create a .env file to hold RPC URLs and private keys. Here’s a minimal example for Ethereum Goerli and Polygon Mumbai:
ETHEREUM_RPC=https://goerli.infura.io/v3/YOUR_INFURA_KEY
POLYGON_RPC=https://rpc-mumbai.maticvigil.com
AGENT_PRIVATE_KEY=0xYOUR_TESTNET_PRIVATE_KEY
I recommend using an .env.example file as a template. Also, keep your keys secure.
Finally, build the SDK:
yarn build
With the environment ready, you’re set to deploy your first multichain on-chain agent.
Building a Multichain On-Chain Agent with GOAT SDK
Let's create a simple agent that listens to events on Ethereum Goerli and responds by calling a method on Polygon Mumbai. This use case illustrates cross-chain interaction with minimal logic.
Step 1: Initialize Agent Wallet
In agent.ts, add:
import { AgentWallet, Agent } from 'goat-sdk';
import { ethers } from 'ethers';
const ethProvider = new ethers.providers.JsonRpcProvider(process.env.ETHEREUM_RPC);
const polygonProvider = new ethers.providers.JsonRpcProvider(process.env.POLYGON_RPC);
const wallet = new ethers.Wallet(process.env.AGENT_PRIVATE_KEY!);
const ethWallet = wallet.connect(ethProvider);
const polygonWallet = wallet.connect(polygonProvider);
// Wrap wallets in GOAT SDK AgentWallet
const ethAgentWallet = new AgentWallet(ethWallet);
const polygonAgentWallet = new AgentWallet(polygonWallet);
Step 2: Define the Agent Logic
const agent = new Agent({
wallets: {
ethereum: ethAgentWallet,
polygon: polygonAgentWallet
}
});
// Example: listen to event on Ethereum and call a contract on Polygon
async function run() {
const filter = {
address: '0xSomeContractOnGoerli',
topics: [ethers.utils.id('DataReceived(bytes)')]
};
ethProvider.on(filter, async (log) => {
console.log('Event detected on Ethereum Goerli:', log);
// Prepare a simple function call to Polygon
const contractOnPolygon = new ethers.Contract(
'0xContractOnPolygon',
['function respond(bytes data)'],
polygonAgentWallet.getSigner()
);
const data = log.data;
try {
const tx = await contractOnPolygon.respond(data, { gasLimit: 100000 });
console.log('Transaction sent on Polygon Mumbai:', tx.hash);
await tx.wait();
console.log('Transaction confirmed');
} catch (err) {
console.error('Error sending transaction:', err);
}
});
}
run().catch(console.error);
Step 3: Run Agent
Use:
node dist/agent.js
This simplistic agent bridges event data to another chain contract call. Of course, real agents will want robust error handling, retries, and security checks.
GOAT SDK and LangChain Integration Explained
GOAT SDK includes early support for LangChain, facilitating integration between onchain agents and sophisticated AI workflows. This means you can embed natural language processing or custom AI orchestrations in your agent pipelines.
For example, you could plug in a LangChain chatbot that fetches onchain data via GOAT's RPC connectors, then formats results and triggers further contract calls reactively.
Sample LangChain integration snippet (pseudo-code):
import { LangChainConnector } from 'goat-sdk/langchain';
const langchain = new LangChainConnector({ agentWallet: ethAgentWallet });
const response = await langchain.query('Get latest DeFi stats on Polygon');
console.log('LangChain agent response:', response);
Note: This feature is experimental and requires the latest versions of both GOAT SDK and LangChain (check repos for compatibility).
Security Considerations for Agent Wallets
Agent wallets are a primary attack surface. In my experience, these are key points to mind:
- Session keys and spending limits: Use session or derived keys with capped gas/spending to reduce loss scope if compromised.
- Avoid unlimited approvals: Be wary of agents with blanket token approvals — restrict allowances tightly.
- Secure private key storage: Never hardcode keys; consider hardware security modules or encrypted vaults.
- Untrusted MCP servers: If you rely on Model Context Protocol servers for AI triggers, ensure the endpoint integrity and encryption.
Check out the agent-wallet-security page for detailed hardening guides.
Comparing GOAT SDK with Other Agent Frameworks
For multichain agent builders, choosing the right framework depends on trade-offs like language familiarity, chain support, maturity, and tooling. Here’s a snapshot comparison:
| Framework |
Language |
Chain Support |
License |
Maturity |
| GOAT SDK |
TypeScript |
EVM + L2s |
Apache-2 |
Early/experimental |
| ElizaOS |
Rust |
EVM + Polkadot |
MIT |
Beta |
| Solana Agent Kit |
Rust |
Solana Defi-centric |
Apache-2 |
Mature |
| Coinbase AgentKit |
TypeScript |
EVM |
Proprietary |
Stable |
Each has strengths. If your stack leans TypeScript and you want built-in LangChain support, GOAT SDK is attractive. But if you need Solana native or Rust tooling, consider other options.
See more on this in our framework-comparison guide.
Common Errors and Troubleshooting Tips
During development, you might hit:
- RPC rate limits: Use robust retry middleware or paid endpoints to stay resilient.
- Failed ABI calls: Confirm contract ABIs match deployed bytecode, avoid version mismatches.
- Private key issues: Double-check
.env keys, wallet connection setup, or mnemonic phrase correctness.
- LangChain integration errors: Mismatched runtime versions can break connectors; pin dependencies carefully.
For detailed fixes, check our faq section and agent setup tutorials like onchain-ai-agent-setup.
Summary and Next Steps
The GOAT SDK presents a solid foundation for building multichain onchain agents tailored to crypto×AI workflows. While it’s still evolving, it effectively abstracts wallet management, cross-chain communication, and even links into AI tools like LangChain.
I strongly encourage testing agents thoroughly on testnets, implementing spending limits via session keys, and keeping an eye on SDK updates due to their fast pace. If you want to explore alternatives or deeper agent setup, our onchain-ai-agent-setup and mcp-server-integration pages are excellent next reads.
Happy coding — and don’t get burned by infinite approvals!