Repository files navigation

AgentKit

Every agent deserves a wallet.

pypi downloadsnpm downloadsGitHub star chartOpen Issues

Table of Contents

📖 Overview

AgentKit is Coinbase Developer Platform's toolkit for giving AI agents a crypto wallet and onchain interactions. It is designed to be framework-agnostic, so you can use it with any AI framework, and wallet-agnostic, so you can use it with any wallet. With AgentKit, you can enable fee-free stablecoin payments and monetize your AI agents seamlessly. AgentKit is actively being built out, and welcomes community contributions!

🚀 Quickstart

Node.js

Prerequisites:

  1. Get your agent running:
# Create a new fullstack agent project
npm create onchain-agent@latest
# Navigate to your project directorycd onchain-agent
# At this point, fill in your CDP API key id/secret, OpenAI API key, and any other environment variables in the .env.local file.# Then, rename the .env.local file to .env
mv .env.local .env
# Install dependencies
npm install
# Run the development server
npm run dev
  1. Visit http://localhost:3000 in your browser and start telling your Agent to do things onchain!
User: Fund my wallet with some testnet ETH.
Agent: Your wallet has been successfully funded with testnet ETH. You can view the transaction [here](https://sepolia.basescan.org/tx/0x03e82934cd04be5b725927729b517c606f6f744611f0f36e834f21ad742ad7ca)

Python

Prerequisites:

  1. Get your agent running:
# Create a new agent chatbot
pipx run create-onchain-agent
# Navigate to your project directorycd onchain-agent
# At this point, fill in your CDP API key id/secret, OpenAI API key, and any other environment variables in the .env.local file.# Then, rename the .env.local file to .env
mv .env.local .env
# Install dependencies
poetry install
# Run the chatbot
poetry run python chatbot.py
  1. Select "1. chat mode" and start telling your Agent to do things onchain!
Prompt: Fund my wallet with some testnet ETH.
-------------------
Wallet: ccaf1dbf-3a90-4e52-ad34-89a07aad9e8b on network: base-sepolia with default address: 0xD9b990c7b0079c1c3733D2918Ee50b68f29FCFD5
-------------------
-------------------
Received eth from the faucet. Transaction: https://sepolia.basescan.org/tx/0x03e82934cd04be5b725927729b517c606f6f744611f0f36e834f21ad742ad7ca
-------------------
Your wallet has been successfully funded with testnet ETH. You can view the transaction [here](https://sepolia.basescan.org/tx/0x03e82934cd04be5b725927729b517c606f6f744611f0f36e834f21ad742ad7ca).
-------------------

🗂 Repository Structure

AgentKit is organized as two monorepos, one for Python and one for Typescript, each containing multiple packages.

agentkit/
├── typescript/
│ ├── agentkit/
| | └── scripts/generate-action-provider/ # use this to create new actions
│ │ └── src/
│ │ ├── action-providers/ # find 50+ actions in here
│ │ └── wallet-providers/
│ │ ├── cdp/
│ │ ├── privy/
│ │ └── viem/
│ ├── create-onchain-agent/
│ ├── framework-extensions/
│ │ ├── langchain/
│ │ ├── vercel-ai-sdk/
│ │ └── model-context-protocol/
│ └── examples/
│ ├── langchain-cdp-chatbot/
│ ├── langchain-cdp-smart-wallet-chatbot/
│ ├── langchain-farcaster-chatbot/
│ ├── langchain-legacy-cdp-chatbot/
│ ├── langchain-privy-chatbot/
│ ├── langchain-solana-chatbot/
│ ├── langchain-twitter-chatbot/
│ ├── langchain-xmtp-chatbot/
│ ├── langchain-zerodev-chatbot/
│ ├── model-context-protocol-smart-wallet-server/
│ └── vercel-ai-sdk-smart-wallet-chatbot/
├── python/
│ ├── coinbase-agentkit/
│ │ └── coinbase_agentkit/
│ │ ├── action_providers/ # find 30+ actions in here
│ │ └── wallet_providers/
│ │ ├── cdp/
│ │ ├── privy/
│ │ └── viem/
│ ├── create-onchain-agent/
│ ├── framework-extensions/
│ │ ├── autogen/
│ │ ├── langchain/
│ │ ├── openai-agents-sdk/
│ │ ├── pydantic-ai/
│ │ └── strands-agents/
│ └── examples/
│ ├── autogen-cdp-chatbot/
│ ├── langchain-cdp-chatbot/
│ ├── langchain-cdp-smart-wallet-chatbot/
│ ├── langchain-cdp-solana-chatbot/
│ ├── langchain-eth-account-chatbot/
│ ├── langchain-nillion-secretvault-chatbot/
│ ├── langchain-twitter-chatbot/
│ ├── openai-agents-sdk-cdp-chatbot/
│ ├── openai-agents-sdk-cdp-voice-chatbot/
│ ├── openai-agents-sdk-smart-wallet-chatbot/
│ ├── pydantic-ai-cdp-chatbot/
│ └── strands-agents-cdp-server-chatbot/

⚠️ Managing Risk

AgentKit gives an AI agent a wallet. LLMs do not reliably distinguish instructions from data, so text that reaches the model's context can influence which actions the agent takes, including transfers. This is inherent to the design and cannot be resolved within the SDK.

Every surface that feeds the model text increases the injection surface:

  • Direct — interfaces where a third party sends text to the agent, such as a public website, chat bot, or API.
  • Indirect — actions that pull external content into context. twitterActionProvider returns mentions and farcasterActionProvider returns profile data, both as tool output the model reads.

Either surface, combined with a funded wallet and a fund-moving action provider (walletActionProvider is registered by default), is sufficient for injected text to result in an onchain transfer. AgentKit does not gate transfers behind human approval, enforce spend caps, or allowlist destinations.

By using AgentKit you accept that managing these surfaces and keeping your funds safe is your responsibility as the developer.

Guardrails middleware is one common strategy. See the LangChain middleware docs and the guardrails chatbot example, which combines human-in-the-loop approval for transfers with prompt injection filtering.

🤝 Contributing

AgentKit is actively looking for community contributions!

  • To see a list of actions and frameworks we'd love to see open-source contributions for, see WISHLIST.md.
  • To understand the process for contributing to AgentKit, see CONTRIBUTING.md.

📜 Documentation

🌙 Nightly Builds

To access the bleeding edge version of AgentKit, you can install the nightly build for your language. This is a build of the latest code in the main branch, and is updated nightly.

Typescript

You can install the latest nightly build with the following command:

npm install @coinbase/agentkit@nightly @coinbase/agentkit-langchain@nightly

If you're using an AI framework other than Langchain, make sure to install the corresponding package instead of @coinbase/agentkit-langchain.

To install a specific version of the nightly build, you can specify the exact version. For example, if you want to install the nightly build from February 20th, 2025, you can run the following:

npm install @coinbase/agentkit@0.2.3-nightly.20250220.0 @coinbase/agentkit-langchain@0.2.3-nightly.20250220.0

Python

You can install the latest nightly build with the following command:

pip install --pre coinbase-agentkit coinbase-agentkit-langchain
# or, using poetry
poetry add coinbase-agentkit coinbase-agentkit-langchain --allow-prereleases

If you're using an AI framework other than Langchain, make sure to install the corresponding package instead of coinbase-agentkit-langchain.

To install a specific version of the nightly build, you can specify the exact version. For example, if you want to install the nightly build from February 20th, 2025, you can run the following:

pip install coinbase-agentkit==0.1.2.dev20250220 coinbase-agentkit-langchain==0.1.1.dev20250220
# or, using poetry
poetry add coinbase-agentkit==0.1.2.dev20250220 coinbase-agentkit-langchain==0.1.1.dev20250220 --allow-prereleases

🚨 Security and Bug Reports

The AgentKit team takes security seriously. See SECURITY.md for more information.

📧 Contact

For feature requests, feedback, or questions, please reach out to us via the Coinbase Developer Platform Discord.

🔗 Supported Wallets, Protocols, and Frameworks

AgentKit is proud to have support for the following protocols, frameworks, wallets and networks. For detailed documentation on supported providers, see:

Wallets

CoinbasePrivyViEM

Protocols

AlchemyCompoundDefiLlamaFarcasterJupiterHyperbolicMoonwellMorphoPythOpenSeaSuperfluidZoraAlloradTelecom

Frameworks

LangchainElizaVercel AI SDKModel Context ProtocolAgents SDKStrands Agents

Networks

BaseEthereumSolana

Note: We support all EVM and SVM networks, with deep protocol support for the above networks. Please don't hesitate to make contributions to add more support for your preferred networks.

📝 License

AgentKit is licensed under the Apache-2.0 license.

🔒 Legal and Privacy

The AgentKit software is novel and experimental, and is therefore provided on an AS-IS basis. The software is intended to be used only for the purposes of assisting with designing blockchain transactions and enabling other API integrations using natural language inputs, and is not intended to provide (i) an offer, or solicitation of an offer, to invest in, or to buy or sell, any interests or shares, or to participate in any investment or trading strategy, (ii) accounting, legal, tax advice, investment recommendations or other professional advice or (iii) an official statement of Coinbase. Acts proposed or performed by an agent through AgentKit software are NOT acts of Coinbase. You should consult with a professional advisor before making any decisions based on the information provided by the software. You are not permitted to use the proceeds of loans or credit to purchase digital assets on or through coinbase.com, Coinbase's APIs, the Coinbase mobile application, or any other Coinbase website or product, including AgentKit. No representation or warranty is made, expressed or implied, with respect to the accuracy, completeness, reliability, security, or suitability of the software or to any information provided in connection with the software. The risk of loss through use of the software can be substantial, and you assume any and all risks of loss and liability. The software may produce output that is inaccurate, incorrect, unpredictable or undesirable, and it is the user’s exclusive responsibility to evaluate the output and the use-case and determine whether it is appropriate. The right to use the software is contingent on your agreement to the CDP Terms of Service (except to the extent it conflicts with the Apache-2.0 license).

About

Every AI Agent deserves a wallet.

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

AgentKit

Every agent deserves a wallet.

pypi downloadsnpm downloadsGitHub star chartOpen Issues

Table of Contents

📖 Overview

AgentKit is Coinbase Developer Platform's toolkit for giving AI agents a crypto wallet and onchain interactions. It is designed to be framework-agnostic, so you can use it with any AI framework, and wallet-agnostic, so you can use it with any wallet. With AgentKit, you can enable fee-free stablecoin payments and monetize your AI agents seamlessly. AgentKit is actively being built out, and welcomes community contributions!

🚀 Quickstart

Node.js

Prerequisites:

  1. Get your agent running:
# Create a new fullstack agent project
npm create onchain-agent@latest
# Navigate to your project directorycd onchain-agent
# At this point, fill in your CDP API key id/secret, OpenAI API key, and any other environment variables in the .env.local file.# Then, rename the .env.local file to .env
mv .env.local .env
# Install dependencies
npm install
# Run the development server
npm run dev
  1. Visit http://localhost:3000 in your browser and start telling your Agent to do things onchain!
User: Fund my wallet with some testnet ETH.
Agent: Your wallet has been successfully funded with testnet ETH. You can view the transaction [here](https://sepolia.basescan.org/tx/0x03e82934cd04be5b725927729b517c606f6f744611f0f36e834f21ad742ad7ca)

Python

Prerequisites:

  1. Get your agent running:
# Create a new agent chatbot
pipx run create-onchain-agent
# Navigate to your project directorycd onchain-agent
# At this point, fill in your CDP API key id/secret, OpenAI API key, and any other environment variables in the .env.local file.# Then, rename the .env.local file to .env
mv .env.local .env
# Install dependencies
poetry install
# Run the chatbot
poetry run python chatbot.py
  1. Select "1. chat mode" and start telling your Agent to do things onchain!
Prompt: Fund my wallet with some testnet ETH.
-------------------
Wallet: ccaf1dbf-3a90-4e52-ad34-89a07aad9e8b on network: base-sepolia with default address: 0xD9b990c7b0079c1c3733D2918Ee50b68f29FCFD5
-------------------
-------------------
Received eth from the faucet. Transaction: https://sepolia.basescan.org/tx/0x03e82934cd04be5b725927729b517c606f6f744611f0f36e834f21ad742ad7ca
-------------------
Your wallet has been successfully funded with testnet ETH. You can view the transaction [here](https://sepolia.basescan.org/tx/0x03e82934cd04be5b725927729b517c606f6f744611f0f36e834f21ad742ad7ca).
-------------------

🗂 Repository Structure

AgentKit is organized as two monorepos, one for Python and one for Typescript, each containing multiple packages.

agentkit/
├── typescript/
│ ├── agentkit/
| | └── scripts/generate-action-provider/ # use this to create new actions
│ │ └── src/
│ │ ├── action-providers/ # find 50+ actions in here
│ │ └── wallet-providers/
│ │ ├── cdp/
│ │ ├── privy/
│ │ └── viem/
│ ├── create-onchain-agent/
│ ├── framework-extensions/
│ │ ├── langchain/
│ │ ├── vercel-ai-sdk/
│ │ └── model-context-protocol/
│ └── examples/
│ ├── langchain-cdp-chatbot/
│ ├── langchain-cdp-smart-wallet-chatbot/
│ ├── langchain-farcaster-chatbot/
│ ├── langchain-legacy-cdp-chatbot/
│ ├── langchain-privy-chatbot/
│ ├── langchain-solana-chatbot/
│ ├── langchain-twitter-chatbot/
│ ├── langchain-xmtp-chatbot/
│ ├── langchain-zerodev-chatbot/
│ ├── model-context-protocol-smart-wallet-server/
│ └── vercel-ai-sdk-smart-wallet-chatbot/
├── python/
│ ├── coinbase-agentkit/
│ │ └── coinbase_agentkit/
│ │ ├── action_providers/ # find 30+ actions in here
│ │ └── wallet_providers/
│ │ ├── cdp/
│ │ ├── privy/
│ │ └── viem/
│ ├── create-onchain-agent/
│ ├── framework-extensions/
│ │ ├── autogen/
│ │ ├── langchain/
│ │ ├── openai-agents-sdk/
│ │ ├── pydantic-ai/
│ │ └── strands-agents/
│ └── examples/
│ ├── autogen-cdp-chatbot/
│ ├── langchain-cdp-chatbot/
│ ├── langchain-cdp-smart-wallet-chatbot/
│ ├── langchain-cdp-solana-chatbot/
│ ├── langchain-eth-account-chatbot/
│ ├── langchain-nillion-secretvault-chatbot/
│ ├── langchain-twitter-chatbot/
│ ├── openai-agents-sdk-cdp-chatbot/
│ ├── openai-agents-sdk-cdp-voice-chatbot/
│ ├── openai-agents-sdk-smart-wallet-chatbot/
│ ├── pydantic-ai-cdp-chatbot/
│ └── strands-agents-cdp-server-chatbot/

⚠️ Managing Risk

AgentKit gives an AI agent a wallet. LLMs do not reliably distinguish instructions from data, so text that reaches the model's context can influence which actions the agent takes, including transfers. This is inherent to the design and cannot be resolved within the SDK.

Every surface that feeds the model text increases the injection surface:

  • Direct — interfaces where a third party sends text to the agent, such as a public website, chat bot, or API.
  • Indirect — actions that pull external content into context. twitterActionProvider returns mentions and farcasterActionProvider returns profile data, both as tool output the model reads.

Either surface, combined with a funded wallet and a fund-moving action provider (walletActionProvider is registered by default), is sufficient for injected text to result in an onchain transfer. AgentKit does not gate transfers behind human approval, enforce spend caps, or allowlist destinations.

By using AgentKit you accept that managing these surfaces and keeping your funds safe is your responsibility as the developer.

Guardrails middleware is one common strategy. See the LangChain middleware docs and the guardrails chatbot example, which combines human-in-the-loop approval for transfers with prompt injection filtering.

🤝 Contributing

AgentKit is actively looking for community contributions!

  • To see a list of actions and frameworks we'd love to see open-source contributions for, see WISHLIST.md.
  • To understand the process for contributing to AgentKit, see CONTRIBUTING.md.

📜 Documentation

🌙 Nightly Builds

To access the bleeding edge version of AgentKit, you can install the nightly build for your language. This is a build of the latest code in the main branch, and is updated nightly.

Typescript

You can install the latest nightly build with the following command:

npm install @coinbase/agentkit@nightly @coinbase/agentkit-langchain@nightly

If you're using an AI framework other than Langchain, make sure to install the corresponding package instead of @coinbase/agentkit-langchain.

To install a specific version of the nightly build, you can specify the exact version. For example, if you want to install the nightly build from February 20th, 2025, you can run the following:

npm install @coinbase/agentkit@0.2.3-nightly.20250220.0 @coinbase/agentkit-langchain@0.2.3-nightly.20250220.0

Python

You can install the latest nightly build with the following command:

pip install --pre coinbase-agentkit coinbase-agentkit-langchain
# or, using poetry
poetry add coinbase-agentkit coinbase-agentkit-langchain --allow-prereleases

If you're using an AI framework other than Langchain, make sure to install the corresponding package instead of coinbase-agentkit-langchain.

To install a specific version of the nightly build, you can specify the exact version. For example, if you want to install the nightly build from February 20th, 2025, you can run the following:

pip install coinbase-agentkit==0.1.2.dev20250220 coinbase-agentkit-langchain==0.1.1.dev20250220
# or, using poetry
poetry add coinbase-agentkit==0.1.2.dev20250220 coinbase-agentkit-langchain==0.1.1.dev20250220 --allow-prereleases

🚨 Security and Bug Reports

The AgentKit team takes security seriously. See SECURITY.md for more information.

📧 Contact

For feature requests, feedback, or questions, please reach out to us via the Coinbase Developer Platform Discord.

🔗 Supported Wallets, Protocols, and Frameworks

AgentKit is proud to have support for the following protocols, frameworks, wallets and networks. For detailed documentation on supported providers, see:

Wallets

CoinbasePrivyViEM

Protocols

AlchemyCompoundDefiLlamaFarcasterJupiterHyperbolicMoonwellMorphoPythOpenSeaSuperfluidZoraAlloradTelecom

Frameworks

LangchainElizaVercel AI SDKModel Context ProtocolAgents SDKStrands Agents

Networks

BaseEthereumSolana

Note: We support all EVM and SVM networks, with deep protocol support for the above networks. Please don't hesitate to make contributions to add more support for your preferred networks.

📝 License

AgentKit is licensed under the Apache-2.0 license.

🔒 Legal and Privacy

The AgentKit software is novel and experimental, and is therefore provided on an AS-IS basis. The software is intended to be used only for the purposes of assisting with designing blockchain transactions and enabling other API integrations using natural language inputs, and is not intended to provide (i) an offer, or solicitation of an offer, to invest in, or to buy or sell, any interests or shares, or to participate in any investment or trading strategy, (ii) accounting, legal, tax advice, investment recommendations or other professional advice or (iii) an official statement of Coinbase. Acts proposed or performed by an agent through AgentKit software are NOT acts of Coinbase. You should consult with a professional advisor before making any decisions based on the information provided by the software. You are not permitted to use the proceeds of loans or credit to purchase digital assets on or through coinbase.com, Coinbase's APIs, the Coinbase mobile application, or any other Coinbase website or product, including AgentKit. No representation or warranty is made, expressed or implied, with respect to the accuracy, completeness, reliability, security, or suitability of the software or to any information provided in connection with the software. The risk of loss through use of the software can be substantial, and you assume any and all risks of loss and liability. The software may produce output that is inaccurate, incorrect, unpredictable or undesirable, and it is the user’s exclusive responsibility to evaluate the output and the use-case and determine whether it is appropriate. The right to use the software is contingent on your agreement to the CDP Terms of Service (except to the extent it conflicts with the Apache-2.0 license).

About

Every AI Agent deserves a wallet.

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

AgentKit

Every agent deserves a wallet.

pypi downloadsnpm downloadsGitHub star chartOpen Issues

Table of Contents

📖 Overview

AgentKit is Coinbase Developer Platform's toolkit for giving AI agents a crypto wallet and onchain interactions. It is designed to be framework-agnostic, so you can use it with any AI framework, and wallet-agnostic, so you can use it with any wallet. With AgentKit, you can enable fee-free stablecoin payments and monetize your AI agents seamlessly. AgentKit is actively being built out, and welcomes community contributions!

🚀 Quickstart

Node.js

Prerequisites:

  1. Get your agent running:
# Create a new fullstack agent project
npm create onchain-agent@latest
# Navigate to your project directorycd onchain-agent
# At this point, fill in your CDP API key id/secret, OpenAI API key, and any other environment variables in the .env.local file.# Then, rename the .env.local file to .env
mv .env.local .env
# Install dependencies
npm install
# Run the development server
npm run dev
  1. Visit http://localhost:3000 in your browser and start telling your Agent to do things onchain!
User: Fund my wallet with some testnet ETH.
Agent: Your wallet has been successfully funded with testnet ETH. You can view the transaction [here](https://sepolia.basescan.org/tx/0x03e82934cd04be5b725927729b517c606f6f744611f0f36e834f21ad742ad7ca)

Python

Prerequisites:

  1. Get your agent running:
# Create a new agent chatbot
pipx run create-onchain-agent
# Navigate to your project directorycd onchain-agent
# At this point, fill in your CDP API key id/secret, OpenAI API key, and any other environment variables in the .env.local file.# Then, rename the .env.local file to .env
mv .env.local .env
# Install dependencies
poetry install
# Run the chatbot
poetry run python chatbot.py
  1. Select "1. chat mode" and start telling your Agent to do things onchain!
Prompt: Fund my wallet with some testnet ETH.
-------------------
Wallet: ccaf1dbf-3a90-4e52-ad34-89a07aad9e8b on network: base-sepolia with default address: 0xD9b990c7b0079c1c3733D2918Ee50b68f29FCFD5
-------------------
-------------------
Received eth from the faucet. Transaction: https://sepolia.basescan.org/tx/0x03e82934cd04be5b725927729b517c606f6f744611f0f36e834f21ad742ad7ca
-------------------
Your wallet has been successfully funded with testnet ETH. You can view the transaction [here](https://sepolia.basescan.org/tx/0x03e82934cd04be5b725927729b517c606f6f744611f0f36e834f21ad742ad7ca).
-------------------

🗂 Repository Structure

AgentKit is organized as two monorepos, one for Python and one for Typescript, each containing multiple packages.

agentkit/
├── typescript/
│ ├── agentkit/
| | └── scripts/generate-action-provider/ # use this to create new actions
│ │ └── src/
│ │ ├── action-providers/ # find 50+ actions in here
│ │ └── wallet-providers/
│ │ ├── cdp/
│ │ ├── privy/
│ │ └── viem/
│ ├── create-onchain-agent/
│ ├── framework-extensions/
│ │ ├── langchain/
│ │ ├── vercel-ai-sdk/
│ │ └── model-context-protocol/
│ └── examples/
│ ├── langchain-cdp-chatbot/
│ ├── langchain-cdp-smart-wallet-chatbot/
│ ├── langchain-farcaster-chatbot/
│ ├── langchain-legacy-cdp-chatbot/
│ ├── langchain-privy-chatbot/
│ ├── langchain-solana-chatbot/
│ ├── langchain-twitter-chatbot/
│ ├── langchain-xmtp-chatbot/
│ ├── langchain-zerodev-chatbot/
│ ├── model-context-protocol-smart-wallet-server/
│ └── vercel-ai-sdk-smart-wallet-chatbot/
├── python/
│ ├── coinbase-agentkit/
│ │ └── coinbase_agentkit/
│ │ ├── action_providers/ # find 30+ actions in here
│ │ └── wallet_providers/
│ │ ├── cdp/
│ │ ├── privy/
│ │ └── viem/
│ ├── create-onchain-agent/
│ ├── framework-extensions/
│ │ ├── autogen/
│ │ ├── langchain/
│ │ ├── openai-agents-sdk/
│ │ ├── pydantic-ai/
│ │ └── strands-agents/
│ └── examples/
│ ├── autogen-cdp-chatbot/
│ ├── langchain-cdp-chatbot/
│ ├── langchain-cdp-smart-wallet-chatbot/
│ ├── langchain-cdp-solana-chatbot/
│ ├── langchain-eth-account-chatbot/
│ ├── langchain-nillion-secretvault-chatbot/
│ ├── langchain-twitter-chatbot/
│ ├── openai-agents-sdk-cdp-chatbot/
│ ├── openai-agents-sdk-cdp-voice-chatbot/
│ ├── openai-agents-sdk-smart-wallet-chatbot/
│ ├── pydantic-ai-cdp-chatbot/
│ └── strands-agents-cdp-server-chatbot/

⚠️ Managing Risk

AgentKit gives an AI agent a wallet. LLMs do not reliably distinguish instructions from data, so text that reaches the model's context can influence which actions the agent takes, including transfers. This is inherent to the design and cannot be resolved within the SDK.

Every surface that feeds the model text increases the injection surface:

  • Direct — interfaces where a third party sends text to the agent, such as a public website, chat bot, or API.
  • Indirect — actions that pull external content into context. twitterActionProvider returns mentions and farcasterActionProvider returns profile data, both as tool output the model reads.

Either surface, combined with a funded wallet and a fund-moving action provider (walletActionProvider is registered by default), is sufficient for injected text to result in an onchain transfer. AgentKit does not gate transfers behind human approval, enforce spend caps, or allowlist destinations.

By using AgentKit you accept that managing these surfaces and keeping your funds safe is your responsibility as the developer.

Guardrails middleware is one common strategy. See the LangChain middleware docs and the guardrails chatbot example, which combines human-in-the-loop approval for transfers with prompt injection filtering.

🤝 Contributing

AgentKit is actively looking for community contributions!

  • To see a list of actions and frameworks we'd love to see open-source contributions for, see WISHLIST.md.
  • To understand the process for contributing to AgentKit, see CONTRIBUTING.md.

📜 Documentation

🌙 Nightly Builds

To access the bleeding edge version of AgentKit, you can install the nightly build for your language. This is a build of the latest code in the main branch, and is updated nightly.

Typescript

You can install the latest nightly build with the following command:

npm install @coinbase/agentkit@nightly @coinbase/agentkit-langchain@nightly

If you're using an AI framework other than Langchain, make sure to install the corresponding package instead of @coinbase/agentkit-langchain.

To install a specific version of the nightly build, you can specify the exact version. For example, if you want to install the nightly build from February 20th, 2025, you can run the following:

npm install @coinbase/agentkit@0.2.3-nightly.20250220.0 @coinbase/agentkit-langchain@0.2.3-nightly.20250220.0

Python

You can install the latest nightly build with the following command:

pip install --pre coinbase-agentkit coinbase-agentkit-langchain
# or, using poetry
poetry add coinbase-agentkit coinbase-agentkit-langchain --allow-prereleases

If you're using an AI framework other than Langchain, make sure to install the corresponding package instead of coinbase-agentkit-langchain.

To install a specific version of the nightly build, you can specify the exact version. For example, if you want to install the nightly build from February 20th, 2025, you can run the following:

pip install coinbase-agentkit==0.1.2.dev20250220 coinbase-agentkit-langchain==0.1.1.dev20250220
# or, using poetry
poetry add coinbase-agentkit==0.1.2.dev20250220 coinbase-agentkit-langchain==0.1.1.dev20250220 --allow-prereleases

🚨 Security and Bug Reports

The AgentKit team takes security seriously. See SECURITY.md for more information.

📧 Contact

For feature requests, feedback, or questions, please reach out to us via the Coinbase Developer Platform Discord.

🔗 Supported Wallets, Protocols, and Frameworks

AgentKit is proud to have support for the following protocols, frameworks, wallets and networks. For detailed documentation on supported providers, see:

Wallets

CoinbasePrivyViEM

Protocols

AlchemyCompoundDefiLlamaFarcasterJupiterHyperbolicMoonwellMorphoPythOpenSeaSuperfluidZoraAlloradTelecom

Frameworks

LangchainElizaVercel AI SDKModel Context ProtocolAgents SDKStrands Agents

Networks

BaseEthereumSolana

Note: We support all EVM and SVM networks, with deep protocol support for the above networks. Please don't hesitate to make contributions to add more support for your preferred networks.

📝 License

AgentKit is licensed under the Apache-2.0 license.

🔒 Legal and Privacy

The AgentKit software is novel and experimental, and is therefore provided on an AS-IS basis. The software is intended to be used only for the purposes of assisting with designing blockchain transactions and enabling other API integrations using natural language inputs, and is not intended to provide (i) an offer, or solicitation of an offer, to invest in, or to buy or sell, any interests or shares, or to participate in any investment or trading strategy, (ii) accounting, legal, tax advice, investment recommendations or other professional advice or (iii) an official statement of Coinbase. Acts proposed or performed by an agent through AgentKit software are NOT acts of Coinbase. You should consult with a professional advisor before making any decisions based on the information provided by the software. You are not permitted to use the proceeds of loans or credit to purchase digital assets on or through coinbase.com, Coinbase's APIs, the Coinbase mobile application, or any other Coinbase website or product, including AgentKit. No representation or warranty is made, expressed or implied, with respect to the accuracy, completeness, reliability, security, or suitability of the software or to any information provided in connection with the software. The risk of loss through use of the software can be substantial, and you assume any and all risks of loss and liability. The software may produce output that is inaccurate, incorrect, unpredictable or undesirable, and it is the user’s exclusive responsibility to evaluate the output and the use-case and determine whether it is appropriate. The right to use the software is contingent on your agreement to the CDP Terms of Service (except to the extent it conflicts with the Apache-2.0 license).

About

Every AI Agent deserves a wallet.

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

AgentKit

Every agent deserves a wallet.

pypi downloadsnpm downloadsGitHub star chartOpen Issues

Table of Contents

📖 Overview

AgentKit is Coinbase Developer Platform's toolkit for giving AI agents a crypto wallet and onchain interactions. It is designed to be framework-agnostic, so you can use it with any AI framework, and wallet-agnostic, so you can use it with any wallet. With AgentKit, you can enable fee-free stablecoin payments and monetize your AI agents seamlessly. AgentKit is actively being built out, and welcomes community contributions!

🚀 Quickstart

Node.js

Prerequisites:

  1. Get your agent running:
# Create a new fullstack agent project
npm create onchain-agent@latest
# Navigate to your project directorycd onchain-agent
# At this point, fill in your CDP API key id/secret, OpenAI API key, and any other environment variables in the .env.local file.# Then, rename the .env.local file to .env
mv .env.local .env
# Install dependencies
npm install
# Run the development server
npm run dev
  1. Visit http://localhost:3000 in your browser and start telling your Agent to do things onchain!
User: Fund my wallet with some testnet ETH.
Agent: Your wallet has been successfully funded with testnet ETH. You can view the transaction [here](https://sepolia.basescan.org/tx/0x03e82934cd04be5b725927729b517c606f6f744611f0f36e834f21ad742ad7ca)

Python

Prerequisites:

  1. Get your agent running:
# Create a new agent chatbot
pipx run create-onchain-agent
# Navigate to your project directorycd onchain-agent
# At this point, fill in your CDP API key id/secret, OpenAI API key, and any other environment variables in the .env.local file.# Then, rename the .env.local file to .env
mv .env.local .env
# Install dependencies
poetry install
# Run the chatbot
poetry run python chatbot.py
  1. Select "1. chat mode" and start telling your Agent to do things onchain!
Prompt: Fund my wallet with some testnet ETH.
-------------------
Wallet: ccaf1dbf-3a90-4e52-ad34-89a07aad9e8b on network: base-sepolia with default address: 0xD9b990c7b0079c1c3733D2918Ee50b68f29FCFD5
-------------------
-------------------
Received eth from the faucet. Transaction: https://sepolia.basescan.org/tx/0x03e82934cd04be5b725927729b517c606f6f744611f0f36e834f21ad742ad7ca
-------------------
Your wallet has been successfully funded with testnet ETH. You can view the transaction [here](https://sepolia.basescan.org/tx/0x03e82934cd04be5b725927729b517c606f6f744611f0f36e834f21ad742ad7ca).
-------------------

🗂 Repository Structure

AgentKit is organized as two monorepos, one for Python and one for Typescript, each containing multiple packages.

agentkit/
├── typescript/
│ ├── agentkit/
| | └── scripts/generate-action-provider/ # use this to create new actions
│ │ └── src/
│ │ ├── action-providers/ # find 50+ actions in here
│ │ └── wallet-providers/
│ │ ├── cdp/
│ │ ├── privy/
│ │ └── viem/
│ ├── create-onchain-agent/
│ ├── framework-extensions/
│ │ ├── langchain/
│ │ ├── vercel-ai-sdk/
│ │ └── model-context-protocol/
│ └── examples/
│ ├── langchain-cdp-chatbot/
│ ├── langchain-cdp-smart-wallet-chatbot/
│ ├── langchain-farcaster-chatbot/
│ ├── langchain-legacy-cdp-chatbot/
│ ├── langchain-privy-chatbot/
│ ├── langchain-solana-chatbot/
│ ├── langchain-twitter-chatbot/
│ ├── langchain-xmtp-chatbot/
│ ├── langchain-zerodev-chatbot/
│ ├── model-context-protocol-smart-wallet-server/
│ └── vercel-ai-sdk-smart-wallet-chatbot/
├── python/
│ ├── coinbase-agentkit/
│ │ └── coinbase_agentkit/
│ │ ├── action_providers/ # find 30+ actions in here
│ │ └── wallet_providers/
│ │ ├── cdp/
│ │ ├── privy/
│ │ └── viem/
│ ├── create-onchain-agent/
│ ├── framework-extensions/
│ │ ├── autogen/
│ │ ├── langchain/
│ │ ├── openai-agents-sdk/
│ │ ├── pydantic-ai/
│ │ └── strands-agents/
│ └── examples/
│ ├── autogen-cdp-chatbot/
│ ├── langchain-cdp-chatbot/
│ ├── langchain-cdp-smart-wallet-chatbot/
│ ├── langchain-cdp-solana-chatbot/
│ ├── langchain-eth-account-chatbot/
│ ├── langchain-nillion-secretvault-chatbot/
│ ├── langchain-twitter-chatbot/
│ ├── openai-agents-sdk-cdp-chatbot/
│ ├── openai-agents-sdk-cdp-voice-chatbot/
│ ├── openai-agents-sdk-smart-wallet-chatbot/
│ ├── pydantic-ai-cdp-chatbot/
│ └── strands-agents-cdp-server-chatbot/

⚠️ Managing Risk

AgentKit gives an AI agent a wallet. LLMs do not reliably distinguish instructions from data, so text that reaches the model's context can influence which actions the agent takes, including transfers. This is inherent to the design and cannot be resolved within the SDK.

Every surface that feeds the model text increases the injection surface:

  • Direct — interfaces where a third party sends text to the agent, such as a public website, chat bot, or API.
  • Indirect — actions that pull external content into context. twitterActionProvider returns mentions and farcasterActionProvider returns profile data, both as tool output the model reads.

Either surface, combined with a funded wallet and a fund-moving action provider (walletActionProvider is registered by default), is sufficient for injected text to result in an onchain transfer. AgentKit does not gate transfers behind human approval, enforce spend caps, or allowlist destinations.

By using AgentKit you accept that managing these surfaces and keeping your funds safe is your responsibility as the developer.

Guardrails middleware is one common strategy. See the LangChain middleware docs and the guardrails chatbot example, which combines human-in-the-loop approval for transfers with prompt injection filtering.

🤝 Contributing

AgentKit is actively looking for community contributions!

  • To see a list of actions and frameworks we'd love to see open-source contributions for, see WISHLIST.md.
  • To understand the process for contributing to AgentKit, see CONTRIBUTING.md.

📜 Documentation

🌙 Nightly Builds

To access the bleeding edge version of AgentKit, you can install the nightly build for your language. This is a build of the latest code in the main branch, and is updated nightly.

Typescript

You can install the latest nightly build with the following command:

npm install @coinbase/agentkit@nightly @coinbase/agentkit-langchain@nightly

If you're using an AI framework other than Langchain, make sure to install the corresponding package instead of @coinbase/agentkit-langchain.

To install a specific version of the nightly build, you can specify the exact version. For example, if you want to install the nightly build from February 20th, 2025, you can run the following:

npm install @coinbase/agentkit@0.2.3-nightly.20250220.0 @coinbase/agentkit-langchain@0.2.3-nightly.20250220.0

Python

You can install the latest nightly build with the following command:

pip install --pre coinbase-agentkit coinbase-agentkit-langchain
# or, using poetry
poetry add coinbase-agentkit coinbase-agentkit-langchain --allow-prereleases

If you're using an AI framework other than Langchain, make sure to install the corresponding package instead of coinbase-agentkit-langchain.

To install a specific version of the nightly build, you can specify the exact version. For example, if you want to install the nightly build from February 20th, 2025, you can run the following:

pip install coinbase-agentkit==0.1.2.dev20250220 coinbase-agentkit-langchain==0.1.1.dev20250220
# or, using poetry
poetry add coinbase-agentkit==0.1.2.dev20250220 coinbase-agentkit-langchain==0.1.1.dev20250220 --allow-prereleases

🚨 Security and Bug Reports

The AgentKit team takes security seriously. See SECURITY.md for more information.

📧 Contact

For feature requests, feedback, or questions, please reach out to us via the Coinbase Developer Platform Discord.

🔗 Supported Wallets, Protocols, and Frameworks

AgentKit is proud to have support for the following protocols, frameworks, wallets and networks. For detailed documentation on supported providers, see:

Wallets

CoinbasePrivyViEM

Protocols

AlchemyCompoundDefiLlamaFarcasterJupiterHyperbolicMoonwellMorphoPythOpenSeaSuperfluidZoraAlloradTelecom

Frameworks

LangchainElizaVercel AI SDKModel Context ProtocolAgents SDKStrands Agents

Networks

BaseEthereumSolana

Note: We support all EVM and SVM networks, with deep protocol support for the above networks. Please don't hesitate to make contributions to add more support for your preferred networks.

📝 License

AgentKit is licensed under the Apache-2.0 license.

🔒 Legal and Privacy

The AgentKit software is novel and experimental, and is therefore provided on an AS-IS basis. The software is intended to be used only for the purposes of assisting with designing blockchain transactions and enabling other API integrations using natural language inputs, and is not intended to provide (i) an offer, or solicitation of an offer, to invest in, or to buy or sell, any interests or shares, or to participate in any investment or trading strategy, (ii) accounting, legal, tax advice, investment recommendations or other professional advice or (iii) an official statement of Coinbase. Acts proposed or performed by an agent through AgentKit software are NOT acts of Coinbase. You should consult with a professional advisor before making any decisions based on the information provided by the software. You are not permitted to use the proceeds of loans or credit to purchase digital assets on or through coinbase.com, Coinbase's APIs, the Coinbase mobile application, or any other Coinbase website or product, including AgentKit. No representation or warranty is made, expressed or implied, with respect to the accuracy, completeness, reliability, security, or suitability of the software or to any information provided in connection with the software. The risk of loss through use of the software can be substantial, and you assume any and all risks of loss and liability. The software may produce output that is inaccurate, incorrect, unpredictable or undesirable, and it is the user’s exclusive responsibility to evaluate the output and the use-case and determine whether it is appropriate. The right to use the software is contingent on your agreement to the CDP Terms of Service (except to the extent it conflicts with the Apache-2.0 license).

About

Every AI Agent deserves a wallet.

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

AgentKit

Every agent deserves a wallet.

pypi downloadsnpm downloadsGitHub star chartOpen Issues

Table of Contents

📖 Overview

AgentKit is Coinbase Developer Platform's toolkit for giving AI agents a crypto wallet and onchain interactions. It is designed to be framework-agnostic, so you can use it with any AI framework, and wallet-agnostic, so you can use it with any wallet. With AgentKit, you can enable fee-free stablecoin payments and monetize your AI agents seamlessly. AgentKit is actively being built out, and welcomes community contributions!

🚀 Quickstart

Node.js

Prerequisites:

  1. Get your agent running:
# Create a new fullstack agent project
npm create onchain-agent@latest
# Navigate to your project directorycd onchain-agent
# At this point, fill in your CDP API key id/secret, OpenAI API key, and any other environment variables in the .env.local file.# Then, rename the .env.local file to .env
mv .env.local .env
# Install dependencies
npm install
# Run the development server
npm run dev
  1. Visit http://localhost:3000 in your browser and start telling your Agent to do things onchain!
User: Fund my wallet with some testnet ETH.
Agent: Your wallet has been successfully funded with testnet ETH. You can view the transaction [here](https://sepolia.basescan.org/tx/0x03e82934cd04be5b725927729b517c606f6f744611f0f36e834f21ad742ad7ca)

Python

Prerequisites:

  1. Get your agent running:
# Create a new agent chatbot
pipx run create-onchain-agent
# Navigate to your project directorycd onchain-agent
# At this point, fill in your CDP API key id/secret, OpenAI API key, and any other environment variables in the .env.local file.# Then, rename the .env.local file to .env
mv .env.local .env
# Install dependencies
poetry install
# Run the chatbot
poetry run python chatbot.py
  1. Select "1. chat mode" and start telling your Agent to do things onchain!
Prompt: Fund my wallet with some testnet ETH.
-------------------
Wallet: ccaf1dbf-3a90-4e52-ad34-89a07aad9e8b on network: base-sepolia with default address: 0xD9b990c7b0079c1c3733D2918Ee50b68f29FCFD5
-------------------
-------------------
Received eth from the faucet. Transaction: https://sepolia.basescan.org/tx/0x03e82934cd04be5b725927729b517c606f6f744611f0f36e834f21ad742ad7ca
-------------------
Your wallet has been successfully funded with testnet ETH. You can view the transaction [here](https://sepolia.basescan.org/tx/0x03e82934cd04be5b725927729b517c606f6f744611f0f36e834f21ad742ad7ca).
-------------------

🗂 Repository Structure

AgentKit is organized as two monorepos, one for Python and one for Typescript, each containing multiple packages.

agentkit/
├── typescript/
│ ├── agentkit/
| | └── scripts/generate-action-provider/ # use this to create new actions
│ │ └── src/
│ │ ├── action-providers/ # find 50+ actions in here
│ │ └── wallet-providers/
│ │ ├── cdp/
│ │ ├── privy/
│ │ └── viem/
│ ├── create-onchain-agent/
│ ├── framework-extensions/
│ │ ├── langchain/
│ │ ├── vercel-ai-sdk/
│ │ └── model-context-protocol/
│ └── examples/
│ ├── langchain-cdp-chatbot/
│ ├── langchain-cdp-smart-wallet-chatbot/
│ ├── langchain-farcaster-chatbot/
│ ├── langchain-legacy-cdp-chatbot/
│ ├── langchain-privy-chatbot/
│ ├── langchain-solana-chatbot/
│ ├── langchain-twitter-chatbot/
│ ├── langchain-xmtp-chatbot/
│ ├── langchain-zerodev-chatbot/
│ ├── model-context-protocol-smart-wallet-server/
│ └── vercel-ai-sdk-smart-wallet-chatbot/
├── python/
│ ├── coinbase-agentkit/
│ │ └── coinbase_agentkit/
│ │ ├── action_providers/ # find 30+ actions in here
│ │ └── wallet_providers/
│ │ ├── cdp/
│ │ ├── privy/
│ │ └── viem/
│ ├── create-onchain-agent/
│ ├── framework-extensions/
│ │ ├── autogen/
│ │ ├── langchain/
│ │ ├── openai-agents-sdk/
│ │ ├── pydantic-ai/
│ │ └── strands-agents/
│ └── examples/
│ ├── autogen-cdp-chatbot/
│ ├── langchain-cdp-chatbot/
│ ├── langchain-cdp-smart-wallet-chatbot/
│ ├── langchain-cdp-solana-chatbot/
│ ├── langchain-eth-account-chatbot/
│ ├── langchain-nillion-secretvault-chatbot/
│ ├── langchain-twitter-chatbot/
│ ├── openai-agents-sdk-cdp-chatbot/
│ ├── openai-agents-sdk-cdp-voice-chatbot/
│ ├── openai-agents-sdk-smart-wallet-chatbot/
│ ├── pydantic-ai-cdp-chatbot/
│ └── strands-agents-cdp-server-chatbot/

⚠️ Managing Risk

AgentKit gives an AI agent a wallet. LLMs do not reliably distinguish instructions from data, so text that reaches the model's context can influence which actions the agent takes, including transfers. This is inherent to the design and cannot be resolved within the SDK.

Every surface that feeds the model text increases the injection surface:

  • Direct — interfaces where a third party sends text to the agent, such as a public website, chat bot, or API.
  • Indirect — actions that pull external content into context. twitterActionProvider returns mentions and farcasterActionProvider returns profile data, both as tool output the model reads.

Either surface, combined with a funded wallet and a fund-moving action provider (walletActionProvider is registered by default), is sufficient for injected text to result in an onchain transfer. AgentKit does not gate transfers behind human approval, enforce spend caps, or allowlist destinations.

By using AgentKit you accept that managing these surfaces and keeping your funds safe is your responsibility as the developer.

Guardrails middleware is one common strategy. See the LangChain middleware docs and the guardrails chatbot example, which combines human-in-the-loop approval for transfers with prompt injection filtering.

🤝 Contributing

AgentKit is actively looking for community contributions!

  • To see a list of actions and frameworks we'd love to see open-source contributions for, see WISHLIST.md.
  • To understand the process for contributing to AgentKit, see CONTRIBUTING.md.

📜 Documentation

🌙 Nightly Builds

To access the bleeding edge version of AgentKit, you can install the nightly build for your language. This is a build of the latest code in the main branch, and is updated nightly.

Typescript

You can install the latest nightly build with the following command:

npm install @coinbase/agentkit@nightly @coinbase/agentkit-langchain@nightly

If you're using an AI framework other than Langchain, make sure to install the corresponding package instead of @coinbase/agentkit-langchain.

To install a specific version of the nightly build, you can specify the exact version. For example, if you want to install the nightly build from February 20th, 2025, you can run the following:

npm install @coinbase/agentkit@0.2.3-nightly.20250220.0 @coinbase/agentkit-langchain@0.2.3-nightly.20250220.0

Python

You can install the latest nightly build with the following command:

pip install --pre coinbase-agentkit coinbase-agentkit-langchain
# or, using poetry
poetry add coinbase-agentkit coinbase-agentkit-langchain --allow-prereleases

If you're using an AI framework other than Langchain, make sure to install the corresponding package instead of coinbase-agentkit-langchain.

To install a specific version of the nightly build, you can specify the exact version. For example, if you want to install the nightly build from February 20th, 2025, you can run the following:

pip install coinbase-agentkit==0.1.2.dev20250220 coinbase-agentkit-langchain==0.1.1.dev20250220
# or, using poetry
poetry add coinbase-agentkit==0.1.2.dev20250220 coinbase-agentkit-langchain==0.1.1.dev20250220 --allow-prereleases

🚨 Security and Bug Reports

The AgentKit team takes security seriously. See SECURITY.md for more information.

📧 Contact

For feature requests, feedback, or questions, please reach out to us via the Coinbase Developer Platform Discord.

🔗 Supported Wallets, Protocols, and Frameworks

AgentKit is proud to have support for the following protocols, frameworks, wallets and networks. For detailed documentation on supported providers, see:

Wallets

CoinbasePrivyViEM

Protocols

AlchemyCompoundDefiLlamaFarcasterJupiterHyperbolicMoonwellMorphoPythOpenSeaSuperfluidZoraAlloradTelecom

Frameworks

LangchainElizaVercel AI SDKModel Context ProtocolAgents SDKStrands Agents

Networks

BaseEthereumSolana

Note: We support all EVM and SVM networks, with deep protocol support for the above networks. Please don't hesitate to make contributions to add more support for your preferred networks.

📝 License

AgentKit is licensed under the Apache-2.0 license.

🔒 Legal and Privacy

The AgentKit software is novel and experimental, and is therefore provided on an AS-IS basis. The software is intended to be used only for the purposes of assisting with designing blockchain transactions and enabling other API integrations using natural language inputs, and is not intended to provide (i) an offer, or solicitation of an offer, to invest in, or to buy or sell, any interests or shares, or to participate in any investment or trading strategy, (ii) accounting, legal, tax advice, investment recommendations or other professional advice or (iii) an official statement of Coinbase. Acts proposed or performed by an agent through AgentKit software are NOT acts of Coinbase. You should consult with a professional advisor before making any decisions based on the information provided by the software. You are not permitted to use the proceeds of loans or credit to purchase digital assets on or through coinbase.com, Coinbase's APIs, the Coinbase mobile application, or any other Coinbase website or product, including AgentKit. No representation or warranty is made, expressed or implied, with respect to the accuracy, completeness, reliability, security, or suitability of the software or to any information provided in connection with the software. The risk of loss through use of the software can be substantial, and you assume any and all risks of loss and liability. The software may produce output that is inaccurate, incorrect, unpredictable or undesirable, and it is the user’s exclusive responsibility to evaluate the output and the use-case and determine whether it is appropriate. The right to use the software is contingent on your agreement to the CDP Terms of Service (except to the extent it conflicts with the Apache-2.0 license).

About

Every AI Agent deserves a wallet.

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

AgentKit

Every agent deserves a wallet.

pypi downloadsnpm downloadsGitHub star chartOpen Issues

Table of Contents

📖 Overview

AgentKit is Coinbase Developer Platform's toolkit for giving AI agents a crypto wallet and onchain interactions. It is designed to be framework-agnostic, so you can use it with any AI framework, and wallet-agnostic, so you can use it with any wallet. With AgentKit, you can enable fee-free stablecoin payments and monetize your AI agents seamlessly. AgentKit is actively being built out, and welcomes community contributions!

🚀 Quickstart

Node.js

Prerequisites:

  1. Get your agent running:
# Create a new fullstack agent project
npm create onchain-agent@latest
# Navigate to your project directorycd onchain-agent
# At this point, fill in your CDP API key id/secret, OpenAI API key, and any other environment variables in the .env.local file.# Then, rename the .env.local file to .env
mv .env.local .env
# Install dependencies
npm install
# Run the development server
npm run dev
  1. Visit http://localhost:3000 in your browser and start telling your Agent to do things onchain!
User: Fund my wallet with some testnet ETH.
Agent: Your wallet has been successfully funded with testnet ETH. You can view the transaction [here](https://sepolia.basescan.org/tx/0x03e82934cd04be5b725927729b517c606f6f744611f0f36e834f21ad742ad7ca)

Python

Prerequisites:

  1. Get your agent running:
# Create a new agent chatbot
pipx run create-onchain-agent
# Navigate to your project directorycd onchain-agent
# At this point, fill in your CDP API key id/secret, OpenAI API key, and any other environment variables in the .env.local file.# Then, rename the .env.local file to .env
mv .env.local .env
# Install dependencies
poetry install
# Run the chatbot
poetry run python chatbot.py
  1. Select "1. chat mode" and start telling your Agent to do things onchain!
Prompt: Fund my wallet with some testnet ETH.
-------------------
Wallet: ccaf1dbf-3a90-4e52-ad34-89a07aad9e8b on network: base-sepolia with default address: 0xD9b990c7b0079c1c3733D2918Ee50b68f29FCFD5
-------------------
-------------------
Received eth from the faucet. Transaction: https://sepolia.basescan.org/tx/0x03e82934cd04be5b725927729b517c606f6f744611f0f36e834f21ad742ad7ca
-------------------
Your wallet has been successfully funded with testnet ETH. You can view the transaction [here](https://sepolia.basescan.org/tx/0x03e82934cd04be5b725927729b517c606f6f744611f0f36e834f21ad742ad7ca).
-------------------

🗂 Repository Structure

AgentKit is organized as two monorepos, one for Python and one for Typescript, each containing multiple packages.

agentkit/
├── typescript/
│ ├── agentkit/
| | └── scripts/generate-action-provider/ # use this to create new actions
│ │ └── src/
│ │ ├── action-providers/ # find 50+ actions in here
│ │ └── wallet-providers/
│ │ ├── cdp/
│ │ ├── privy/
│ │ └── viem/
│ ├── create-onchain-agent/
│ ├── framework-extensions/
│ │ ├── langchain/
│ │ ├── vercel-ai-sdk/
│ │ └── model-context-protocol/
│ └── examples/
│ ├── langchain-cdp-chatbot/
│ ├── langchain-cdp-smart-wallet-chatbot/
│ ├── langchain-farcaster-chatbot/
│ ├── langchain-legacy-cdp-chatbot/
│ ├── langchain-privy-chatbot/
│ ├── langchain-solana-chatbot/
│ ├── langchain-twitter-chatbot/
│ ├── langchain-xmtp-chatbot/
│ ├── langchain-zerodev-chatbot/
│ ├── model-context-protocol-smart-wallet-server/
│ └── vercel-ai-sdk-smart-wallet-chatbot/
├── python/
│ ├── coinbase-agentkit/
│ │ └── coinbase_agentkit/
│ │ ├── action_providers/ # find 30+ actions in here
│ │ └── wallet_providers/
│ │ ├── cdp/
│ │ ├── privy/
│ │ └── viem/
│ ├── create-onchain-agent/
│ ├── framework-extensions/
│ │ ├── autogen/
│ │ ├── langchain/
│ │ ├── openai-agents-sdk/
│ │ ├── pydantic-ai/
│ │ └── strands-agents/
│ └── examples/
│ ├── autogen-cdp-chatbot/
│ ├── langchain-cdp-chatbot/
│ ├── langchain-cdp-smart-wallet-chatbot/
│ ├── langchain-cdp-solana-chatbot/
│ ├── langchain-eth-account-chatbot/
│ ├── langchain-nillion-secretvault-chatbot/
│ ├── langchain-twitter-chatbot/
│ ├── openai-agents-sdk-cdp-chatbot/
│ ├── openai-agents-sdk-cdp-voice-chatbot/
│ ├── openai-agents-sdk-smart-wallet-chatbot/
│ ├── pydantic-ai-cdp-chatbot/
│ └── strands-agents-cdp-server-chatbot/

⚠️ Managing Risk

AgentKit gives an AI agent a wallet. LLMs do not reliably distinguish instructions from data, so text that reaches the model's context can influence which actions the agent takes, including transfers. This is inherent to the design and cannot be resolved within the SDK.

Every surface that feeds the model text increases the injection surface:

  • Direct — interfaces where a third party sends text to the agent, such as a public website, chat bot, or API.
  • Indirect — actions that pull external content into context. twitterActionProvider returns mentions and farcasterActionProvider returns profile data, both as tool output the model reads.

Either surface, combined with a funded wallet and a fund-moving action provider (walletActionProvider is registered by default), is sufficient for injected text to result in an onchain transfer. AgentKit does not gate transfers behind human approval, enforce spend caps, or allowlist destinations.

By using AgentKit you accept that managing these surfaces and keeping your funds safe is your responsibility as the developer.

Guardrails middleware is one common strategy. See the LangChain middleware docs and the guardrails chatbot example, which combines human-in-the-loop approval for transfers with prompt injection filtering.

🤝 Contributing

AgentKit is actively looking for community contributions!

  • To see a list of actions and frameworks we'd love to see open-source contributions for, see WISHLIST.md.
  • To understand the process for contributing to AgentKit, see CONTRIBUTING.md.

📜 Documentation

🌙 Nightly Builds

To access the bleeding edge version of AgentKit, you can install the nightly build for your language. This is a build of the latest code in the main branch, and is updated nightly.

Typescript

You can install the latest nightly build with the following command:

npm install @coinbase/agentkit@nightly @coinbase/agentkit-langchain@nightly

If you're using an AI framework other than Langchain, make sure to install the corresponding package instead of @coinbase/agentkit-langchain.

To install a specific version of the nightly build, you can specify the exact version. For example, if you want to install the nightly build from February 20th, 2025, you can run the following:

npm install @coinbase/agentkit@0.2.3-nightly.20250220.0 @coinbase/agentkit-langchain@0.2.3-nightly.20250220.0

Python

You can install the latest nightly build with the following command:

pip install --pre coinbase-agentkit coinbase-agentkit-langchain
# or, using poetry
poetry add coinbase-agentkit coinbase-agentkit-langchain --allow-prereleases

If you're using an AI framework other than Langchain, make sure to install the corresponding package instead of coinbase-agentkit-langchain.

To install a specific version of the nightly build, you can specify the exact version. For example, if you want to install the nightly build from February 20th, 2025, you can run the following:

pip install coinbase-agentkit==0.1.2.dev20250220 coinbase-agentkit-langchain==0.1.1.dev20250220
# or, using poetry
poetry add coinbase-agentkit==0.1.2.dev20250220 coinbase-agentkit-langchain==0.1.1.dev20250220 --allow-prereleases

🚨 Security and Bug Reports

The AgentKit team takes security seriously. See SECURITY.md for more information.

📧 Contact

For feature requests, feedback, or questions, please reach out to us via the Coinbase Developer Platform Discord.

🔗 Supported Wallets, Protocols, and Frameworks

AgentKit is proud to have support for the following protocols, frameworks, wallets and networks. For detailed documentation on supported providers, see:

Wallets

CoinbasePrivyViEM

Protocols

AlchemyCompoundDefiLlamaFarcasterJupiterHyperbolicMoonwellMorphoPythOpenSeaSuperfluidZoraAlloradTelecom

Frameworks

LangchainElizaVercel AI SDKModel Context ProtocolAgents SDKStrands Agents

Networks

BaseEthereumSolana

Note: We support all EVM and SVM networks, with deep protocol support for the above networks. Please don't hesitate to make contributions to add more support for your preferred networks.

📝 License

AgentKit is licensed under the Apache-2.0 license.

🔒 Legal and Privacy

The AgentKit software is novel and experimental, and is therefore provided on an AS-IS basis. The software is intended to be used only for the purposes of assisting with designing blockchain transactions and enabling other API integrations using natural language inputs, and is not intended to provide (i) an offer, or solicitation of an offer, to invest in, or to buy or sell, any interests or shares, or to participate in any investment or trading strategy, (ii) accounting, legal, tax advice, investment recommendations or other professional advice or (iii) an official statement of Coinbase. Acts proposed or performed by an agent through AgentKit software are NOT acts of Coinbase. You should consult with a professional advisor before making any decisions based on the information provided by the software. You are not permitted to use the proceeds of loans or credit to purchase digital assets on or through coinbase.com, Coinbase's APIs, the Coinbase mobile application, or any other Coinbase website or product, including AgentKit. No representation or warranty is made, expressed or implied, with respect to the accuracy, completeness, reliability, security, or suitability of the software or to any information provided in connection with the software. The risk of loss through use of the software can be substantial, and you assume any and all risks of loss and liability. The software may produce output that is inaccurate, incorrect, unpredictable or undesirable, and it is the user’s exclusive responsibility to evaluate the output and the use-case and determine whether it is appropriate. The right to use the software is contingent on your agreement to the CDP Terms of Service (except to the extent it conflicts with the Apache-2.0 license).

About

Every AI Agent deserves a wallet.

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

AgentKit

Every agent deserves a wallet.

pypi downloadsnpm downloadsGitHub star chartOpen Issues

Table of Contents

📖 Overview

AgentKit is Coinbase Developer Platform's toolkit for giving AI agents a crypto wallet and onchain interactions. It is designed to be framework-agnostic, so you can use it with any AI framework, and wallet-agnostic, so you can use it with any wallet. With AgentKit, you can enable fee-free stablecoin payments and monetize your AI agents seamlessly. AgentKit is actively being built out, and welcomes community contributions!

🚀 Quickstart

Node.js

Prerequisites:

  1. Get your agent running:
# Create a new fullstack agent project
npm create onchain-agent@latest
# Navigate to your project directorycd onchain-agent
# At this point, fill in your CDP API key id/secret, OpenAI API key, and any other environment variables in the .env.local file.# Then, rename the .env.local file to .env
mv .env.local .env
# Install dependencies
npm install
# Run the development server
npm run dev
  1. Visit http://localhost:3000 in your browser and start telling your Agent to do things onchain!
User: Fund my wallet with some testnet ETH.
Agent: Your wallet has been successfully funded with testnet ETH. You can view the transaction [here](https://sepolia.basescan.org/tx/0x03e82934cd04be5b725927729b517c606f6f744611f0f36e834f21ad742ad7ca)

Python

Prerequisites:

  1. Get your agent running:
# Create a new agent chatbot
pipx run create-onchain-agent
# Navigate to your project directorycd onchain-agent
# At this point, fill in your CDP API key id/secret, OpenAI API key, and any other environment variables in the .env.local file.# Then, rename the .env.local file to .env
mv .env.local .env
# Install dependencies
poetry install
# Run the chatbot
poetry run python chatbot.py
  1. Select "1. chat mode" and start telling your Agent to do things onchain!
Prompt: Fund my wallet with some testnet ETH.
-------------------
Wallet: ccaf1dbf-3a90-4e52-ad34-89a07aad9e8b on network: base-sepolia with default address: 0xD9b990c7b0079c1c3733D2918Ee50b68f29FCFD5
-------------------
-------------------
Received eth from the faucet. Transaction: https://sepolia.basescan.org/tx/0x03e82934cd04be5b725927729b517c606f6f744611f0f36e834f21ad742ad7ca
-------------------
Your wallet has been successfully funded with testnet ETH. You can view the transaction [here](https://sepolia.basescan.org/tx/0x03e82934cd04be5b725927729b517c606f6f744611f0f36e834f21ad742ad7ca).
-------------------

🗂 Repository Structure

AgentKit is organized as two monorepos, one for Python and one for Typescript, each containing multiple packages.

agentkit/
├── typescript/
│ ├── agentkit/
| | └── scripts/generate-action-provider/ # use this to create new actions
│ │ └── src/
│ │ ├── action-providers/ # find 50+ actions in here
│ │ └── wallet-providers/
│ │ ├── cdp/
│ │ ├── privy/
│ │ └── viem/
│ ├── create-onchain-agent/
│ ├── framework-extensions/
│ │ ├── langchain/
│ │ ├── vercel-ai-sdk/
│ │ └── model-context-protocol/
│ └── examples/
│ ├── langchain-cdp-chatbot/
│ ├── langchain-cdp-smart-wallet-chatbot/
│ ├── langchain-farcaster-chatbot/
│ ├── langchain-legacy-cdp-chatbot/
│ ├── langchain-privy-chatbot/
│ ├── langchain-solana-chatbot/
│ ├── langchain-twitter-chatbot/
│ ├── langchain-xmtp-chatbot/
│ ├── langchain-zerodev-chatbot/
│ ├── model-context-protocol-smart-wallet-server/
│ └── vercel-ai-sdk-smart-wallet-chatbot/
├── python/
│ ├── coinbase-agentkit/
│ │ └── coinbase_agentkit/
│ │ ├── action_providers/ # find 30+ actions in here
│ │ └── wallet_providers/
│ │ ├── cdp/
│ │ ├── privy/
│ │ └── viem/
│ ├── create-onchain-agent/
│ ├── framework-extensions/
│ │ ├── autogen/
│ │ ├── langchain/
│ │ ├── openai-agents-sdk/
│ │ ├── pydantic-ai/
│ │ └── strands-agents/
│ └── examples/
│ ├── autogen-cdp-chatbot/
│ ├── langchain-cdp-chatbot/
│ ├── langchain-cdp-smart-wallet-chatbot/
│ ├── langchain-cdp-solana-chatbot/
│ ├── langchain-eth-account-chatbot/
│ ├── langchain-nillion-secretvault-chatbot/
│ ├── langchain-twitter-chatbot/
│ ├── openai-agents-sdk-cdp-chatbot/
│ ├── openai-agents-sdk-cdp-voice-chatbot/
│ ├── openai-agents-sdk-smart-wallet-chatbot/
│ ├── pydantic-ai-cdp-chatbot/
│ └── strands-agents-cdp-server-chatbot/

⚠️ Managing Risk

AgentKit gives an AI agent a wallet. LLMs do not reliably distinguish instructions from data, so text that reaches the model's context can influence which actions the agent takes, including transfers. This is inherent to the design and cannot be resolved within the SDK.

Every surface that feeds the model text increases the injection surface:

  • Direct — interfaces where a third party sends text to the agent, such as a public website, chat bot, or API.
  • Indirect — actions that pull external content into context. twitterActionProvider returns mentions and farcasterActionProvider returns profile data, both as tool output the model reads.

Either surface, combined with a funded wallet and a fund-moving action provider (walletActionProvider is registered by default), is sufficient for injected text to result in an onchain transfer. AgentKit does not gate transfers behind human approval, enforce spend caps, or allowlist destinations.

By using AgentKit you accept that managing these surfaces and keeping your funds safe is your responsibility as the developer.

Guardrails middleware is one common strategy. See the LangChain middleware docs and the guardrails chatbot example, which combines human-in-the-loop approval for transfers with prompt injection filtering.

🤝 Contributing

AgentKit is actively looking for community contributions!

  • To see a list of actions and frameworks we'd love to see open-source contributions for, see WISHLIST.md.
  • To understand the process for contributing to AgentKit, see CONTRIBUTING.md.

📜 Documentation

🌙 Nightly Builds

To access the bleeding edge version of AgentKit, you can install the nightly build for your language. This is a build of the latest code in the main branch, and is updated nightly.

Typescript

You can install the latest nightly build with the following command:

npm install @coinbase/agentkit@nightly @coinbase/agentkit-langchain@nightly

If you're using an AI framework other than Langchain, make sure to install the corresponding package instead of @coinbase/agentkit-langchain.

To install a specific version of the nightly build, you can specify the exact version. For example, if you want to install the nightly build from February 20th, 2025, you can run the following:

npm install @coinbase/agentkit@0.2.3-nightly.20250220.0 @coinbase/agentkit-langchain@0.2.3-nightly.20250220.0

Python

You can install the latest nightly build with the following command:

pip install --pre coinbase-agentkit coinbase-agentkit-langchain
# or, using poetry
poetry add coinbase-agentkit coinbase-agentkit-langchain --allow-prereleases

If you're using an AI framework other than Langchain, make sure to install the corresponding package instead of coinbase-agentkit-langchain.

To install a specific version of the nightly build, you can specify the exact version. For example, if you want to install the nightly build from February 20th, 2025, you can run the following:

pip install coinbase-agentkit==0.1.2.dev20250220 coinbase-agentkit-langchain==0.1.1.dev20250220
# or, using poetry
poetry add coinbase-agentkit==0.1.2.dev20250220 coinbase-agentkit-langchain==0.1.1.dev20250220 --allow-prereleases

🚨 Security and Bug Reports

The AgentKit team takes security seriously. See SECURITY.md for more information.

📧 Contact

For feature requests, feedback, or questions, please reach out to us via the Coinbase Developer Platform Discord.

🔗 Supported Wallets, Protocols, and Frameworks

AgentKit is proud to have support for the following protocols, frameworks, wallets and networks. For detailed documentation on supported providers, see:

Wallets

CoinbasePrivyViEM

Protocols

AlchemyCompoundDefiLlamaFarcasterJupiterHyperbolicMoonwellMorphoPythOpenSeaSuperfluidZoraAlloradTelecom

Frameworks

LangchainElizaVercel AI SDKModel Context ProtocolAgents SDKStrands Agents

Networks

BaseEthereumSolana

Note: We support all EVM and SVM networks, with deep protocol support for the above networks. Please don't hesitate to make contributions to add more support for your preferred networks.

📝 License

AgentKit is licensed under the Apache-2.0 license.

🔒 Legal and Privacy

The AgentKit software is novel and experimental, and is therefore provided on an AS-IS basis. The software is intended to be used only for the purposes of assisting with designing blockchain transactions and enabling other API integrations using natural language inputs, and is not intended to provide (i) an offer, or solicitation of an offer, to invest in, or to buy or sell, any interests or shares, or to participate in any investment or trading strategy, (ii) accounting, legal, tax advice, investment recommendations or other professional advice or (iii) an official statement of Coinbase. Acts proposed or performed by an agent through AgentKit software are NOT acts of Coinbase. You should consult with a professional advisor before making any decisions based on the information provided by the software. You are not permitted to use the proceeds of loans or credit to purchase digital assets on or through coinbase.com, Coinbase's APIs, the Coinbase mobile application, or any other Coinbase website or product, including AgentKit. No representation or warranty is made, expressed or implied, with respect to the accuracy, completeness, reliability, security, or suitability of the software or to any information provided in connection with the software. The risk of loss through use of the software can be substantial, and you assume any and all risks of loss and liability. The software may produce output that is inaccurate, incorrect, unpredictable or undesirable, and it is the user’s exclusive responsibility to evaluate the output and the use-case and determine whether it is appropriate. The right to use the software is contingent on your agreement to the CDP Terms of Service (except to the extent it conflicts with the Apache-2.0 license).

About

Every AI Agent deserves a wallet.

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

AgentKit

Every agent deserves a wallet.

pypi downloadsnpm downloadsGitHub star chartOpen Issues

Table of Contents

📖 Overview

AgentKit is Coinbase Developer Platform's toolkit for giving AI agents a crypto wallet and onchain interactions. It is designed to be framework-agnostic, so you can use it with any AI framework, and wallet-agnostic, so you can use it with any wallet. With AgentKit, you can enable fee-free stablecoin payments and monetize your AI agents seamlessly. AgentKit is actively being built out, and welcomes community contributions!

🚀 Quickstart

Node.js

Prerequisites:

  1. Get your agent running:
# Create a new fullstack agent project
npm create onchain-agent@latest
# Navigate to your project directorycd onchain-agent
# At this point, fill in your CDP API key id/secret, OpenAI API key, and any other environment variables in the .env.local file.# Then, rename the .env.local file to .env
mv .env.local .env
# Install dependencies
npm install
# Run the development server
npm run dev
  1. Visit http://localhost:3000 in your browser and start telling your Agent to do things onchain!
User: Fund my wallet with some testnet ETH.
Agent: Your wallet has been successfully funded with testnet ETH. You can view the transaction [here](https://sepolia.basescan.org/tx/0x03e82934cd04be5b725927729b517c606f6f744611f0f36e834f21ad742ad7ca)

Python

Prerequisites:

  1. Get your agent running:
# Create a new agent chatbot
pipx run create-onchain-agent
# Navigate to your project directorycd onchain-agent
# At this point, fill in your CDP API key id/secret, OpenAI API key, and any other environment variables in the .env.local file.# Then, rename the .env.local file to .env
mv .env.local .env
# Install dependencies
poetry install
# Run the chatbot
poetry run python chatbot.py
  1. Select "1. chat mode" and start telling your Agent to do things onchain!
Prompt: Fund my wallet with some testnet ETH.
-------------------
Wallet: ccaf1dbf-3a90-4e52-ad34-89a07aad9e8b on network: base-sepolia with default address: 0xD9b990c7b0079c1c3733D2918Ee50b68f29FCFD5
-------------------
-------------------
Received eth from the faucet. Transaction: https://sepolia.basescan.org/tx/0x03e82934cd04be5b725927729b517c606f6f744611f0f36e834f21ad742ad7ca
-------------------
Your wallet has been successfully funded with testnet ETH. You can view the transaction [here](https://sepolia.basescan.org/tx/0x03e82934cd04be5b725927729b517c606f6f744611f0f36e834f21ad742ad7ca).
-------------------

🗂 Repository Structure

AgentKit is organized as two monorepos, one for Python and one for Typescript, each containing multiple packages.

agentkit/
├── typescript/
│ ├── agentkit/
| | └── scripts/generate-action-provider/ # use this to create new actions
│ │ └── src/
│ │ ├── action-providers/ # find 50+ actions in here
│ │ └── wallet-providers/
│ │ ├── cdp/
│ │ ├── privy/
│ │ └── viem/
│ ├── create-onchain-agent/
│ ├── framework-extensions/
│ │ ├── langchain/
│ │ ├── vercel-ai-sdk/
│ │ └── model-context-protocol/
│ └── examples/
│ ├── langchain-cdp-chatbot/
│ ├── langchain-cdp-smart-wallet-chatbot/
│ ├── langchain-farcaster-chatbot/
│ ├── langchain-legacy-cdp-chatbot/
│ ├── langchain-privy-chatbot/
│ ├── langchain-solana-chatbot/
│ ├── langchain-twitter-chatbot/
│ ├── langchain-xmtp-chatbot/
│ ├── langchain-zerodev-chatbot/
│ ├── model-context-protocol-smart-wallet-server/
│ └── vercel-ai-sdk-smart-wallet-chatbot/
├── python/
│ ├── coinbase-agentkit/
│ │ └── coinbase_agentkit/
│ │ ├── action_providers/ # find 30+ actions in here
│ │ └── wallet_providers/
│ │ ├── cdp/
│ │ ├── privy/
│ │ └── viem/
│ ├── create-onchain-agent/
│ ├── framework-extensions/
│ │ ├── autogen/
│ │ ├── langchain/
│ │ ├── openai-agents-sdk/
│ │ ├── pydantic-ai/
│ │ └── strands-agents/
│ └── examples/
│ ├── autogen-cdp-chatbot/
│ ├── langchain-cdp-chatbot/
│ ├── langchain-cdp-smart-wallet-chatbot/
│ ├── langchain-cdp-solana-chatbot/
│ ├── langchain-eth-account-chatbot/
│ ├── langchain-nillion-secretvault-chatbot/
│ ├── langchain-twitter-chatbot/
│ ├── openai-agents-sdk-cdp-chatbot/
│ ├── openai-agents-sdk-cdp-voice-chatbot/
│ ├── openai-agents-sdk-smart-wallet-chatbot/
│ ├── pydantic-ai-cdp-chatbot/
│ └── strands-agents-cdp-server-chatbot/

⚠️ Managing Risk

AgentKit gives an AI agent a wallet. LLMs do not reliably distinguish instructions from data, so text that reaches the model's context can influence which actions the agent takes, including transfers. This is inherent to the design and cannot be resolved within the SDK.

Every surface that feeds the model text increases the injection surface:

  • Direct — interfaces where a third party sends text to the agent, such as a public website, chat bot, or API.
  • Indirect — actions that pull external content into context. twitterActionProvider returns mentions and farcasterActionProvider returns profile data, both as tool output the model reads.

Either surface, combined with a funded wallet and a fund-moving action provider (walletActionProvider is registered by default), is sufficient for injected text to result in an onchain transfer. AgentKit does not gate transfers behind human approval, enforce spend caps, or allowlist destinations.

By using AgentKit you accept that managing these surfaces and keeping your funds safe is your responsibility as the developer.

Guardrails middleware is one common strategy. See the LangChain middleware docs and the guardrails chatbot example, which combines human-in-the-loop approval for transfers with prompt injection filtering.

🤝 Contributing

AgentKit is actively looking for community contributions!

  • To see a list of actions and frameworks we'd love to see open-source contributions for, see WISHLIST.md.
  • To understand the process for contributing to AgentKit, see CONTRIBUTING.md.

📜 Documentation

🌙 Nightly Builds

To access the bleeding edge version of AgentKit, you can install the nightly build for your language. This is a build of the latest code in the main branch, and is updated nightly.

Typescript

You can install the latest nightly build with the following command:

npm install @coinbase/agentkit@nightly @coinbase/agentkit-langchain@nightly

If you're using an AI framework other than Langchain, make sure to install the corresponding package instead of @coinbase/agentkit-langchain.

To install a specific version of the nightly build, you can specify the exact version. For example, if you want to install the nightly build from February 20th, 2025, you can run the following:

npm install @coinbase/agentkit@0.2.3-nightly.20250220.0 @coinbase/agentkit-langchain@0.2.3-nightly.20250220.0

Python

You can install the latest nightly build with the following command:

pip install --pre coinbase-agentkit coinbase-agentkit-langchain
# or, using poetry
poetry add coinbase-agentkit coinbase-agentkit-langchain --allow-prereleases

If you're using an AI framework other than Langchain, make sure to install the corresponding package instead of coinbase-agentkit-langchain.

To install a specific version of the nightly build, you can specify the exact version. For example, if you want to install the nightly build from February 20th, 2025, you can run the following:

pip install coinbase-agentkit==0.1.2.dev20250220 coinbase-agentkit-langchain==0.1.1.dev20250220
# or, using poetry
poetry add coinbase-agentkit==0.1.2.dev20250220 coinbase-agentkit-langchain==0.1.1.dev20250220 --allow-prereleases

🚨 Security and Bug Reports

The AgentKit team takes security seriously. See SECURITY.md for more information.

📧 Contact

For feature requests, feedback, or questions, please reach out to us via the Coinbase Developer Platform Discord.

🔗 Supported Wallets, Protocols, and Frameworks

AgentKit is proud to have support for the following protocols, frameworks, wallets and networks. For detailed documentation on supported providers, see:

Wallets

CoinbasePrivyViEM

Protocols

AlchemyCompoundDefiLlamaFarcasterJupiterHyperbolicMoonwellMorphoPythOpenSeaSuperfluidZoraAlloradTelecom

Frameworks

LangchainElizaVercel AI SDKModel Context ProtocolAgents SDKStrands Agents

Networks

BaseEthereumSolana

Note: We support all EVM and SVM networks, with deep protocol support for the above networks. Please don't hesitate to make contributions to add more support for your preferred networks.

📝 License

AgentKit is licensed under the Apache-2.0 license.

🔒 Legal and Privacy

The AgentKit software is novel and experimental, and is therefore provided on an AS-IS basis. The software is intended to be used only for the purposes of assisting with designing blockchain transactions and enabling other API integrations using natural language inputs, and is not intended to provide (i) an offer, or solicitation of an offer, to invest in, or to buy or sell, any interests or shares, or to participate in any investment or trading strategy, (ii) accounting, legal, tax advice, investment recommendations or other professional advice or (iii) an official statement of Coinbase. Acts proposed or performed by an agent through AgentKit software are NOT acts of Coinbase. You should consult with a professional advisor before making any decisions based on the information provided by the software. You are not permitted to use the proceeds of loans or credit to purchase digital assets on or through coinbase.com, Coinbase's APIs, the Coinbase mobile application, or any other Coinbase website or product, including AgentKit. No representation or warranty is made, expressed or implied, with respect to the accuracy, completeness, reliability, security, or suitability of the software or to any information provided in connection with the software. The risk of loss through use of the software can be substantial, and you assume any and all risks of loss and liability. The software may produce output that is inaccurate, incorrect, unpredictable or undesirable, and it is the user’s exclusive responsibility to evaluate the output and the use-case and determine whether it is appropriate. The right to use the software is contingent on your agreement to the CDP Terms of Service (except to the extent it conflicts with the Apache-2.0 license).

About

Every AI Agent deserves a wallet.

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages