# Solana Agent Kit

[](https://www.npmjs.com/package/solana-agent-kit)
[](https://github.com/sendaifun/solana-agent-kit/network/members)
[](https://github.com/sendaifun/solana-agent-kit/blob/v2/LICENSE)
An open-source toolkit for connecting AI agents to Solana protocols. Now, any agent, using any model can autonomously perform 60+ Solana actions:
- Trade tokens
- Launch new tokens
- Lend assets
- Send compressed airdrops
- Execute blinks
- Launch tokens on AMMs
- Bridge tokens across chains
- And more...
Anyone - whether an SF-based AI researcher or a crypto-native builder - can bring their AI agents trained with any model and seamlessly integrate with Solana.
[](https://replit.com/@sendaifun/Solana-Agent-Kit)
> Replit template created by [Arpit Singh](https://github.com/The-x-35)
## 🔧 Core Blockchain Features
- **Token Operations**
- Deploy SPL tokens by Metaplex
- Transfer assets
- Balance checks
- Stake SOL
- Zk compressed Airdrop by Light Protocol and Helius
- Bridge tokens across chains using Wormhole
- **NFTs on 3.Land**
- Create your own collection
- NFT creation and automatic listing on 3.land
- List your NFT for sale in any SPL token
- **NFT Management via Metaplex**
- Collection deployment
- NFT minting
- Metadata management
- Royalty configuration
- **DeFi Integration**
- Jupiter Exchange swaps
- Launch on Pump via PumpPortal
- Raydium pool creation (CPMM, CLMM, AMMv4)
- Orca Whirlpool integration
- Manifest market creation, and limit orders
- Meteora Dynamic AMM, DLMM Pool, and Alpha Vault
- Openbook market creation
- Register and Resolve SNS
- Jito Bundles
- Pyth Price feeds for fetching Asset Prices
- Register/resolve Alldomains
- Perpetuals Trading with Adrena Protocol
- Drift Vaults, Perps, Lending and Borrowing
- Cross-chain bridging via deBridge DLN
- Cross chain bridging via Wormhole
- **Solana Blinks**
- Lending by Lulo (Best APR for USDC)
- Send Arcade Games
- JupSOL staking
- Solayer SOL (sSOL)staking
- **Non-Financial Actions**
- Gib Work for registering bounties
- **Market Data Integration**
- CoinGecko Pro API integration
- Real-time token price data
- Trending tokens and pools
- Top gainers analysis
- Token information lookup
- Latest pool tracking
## 🤖 AI Integration Features
- **LangChain Integration**
- Ready-to-use LangChain tools for blockchain operations
- Autonomous agent support with React framework
- Memory management for persistent interactions
- Streaming responses for real-time feedback
- **Vercel AI SDK Integration**
- Vercel AI SDK for AI agent integration
- Framework agnostic support
- Quick and easy toolkit setup
- **Autonomous Modes**
- Interactive chat mode for guided operations
- Autonomous mode for independent agent actions
- Configurable action intervals
- Built-in error handling and recovery
- **AI Tools**
- DALL-E integration for NFT artwork generation
- Natural language processing for blockchain commands
- Price feed integration for market analysis
- Automated decision-making capabilities
## 📃 Documentation
You can view the full documentation of the kit at [docs.sendai.fun](https://docs.sendai.fun/v0/introduction)
## Why We Built V2 and Why Upgrade?
The Solana Agent Kit V2 is a major upgrade from V1, to learn why check out our [migration guide](./MIGRATING.md)
## 📦 Core Installation
```bash
npm install solana-agent-kit
```
## 📦 Plugin Installation
You can choose to install any of the plugins listed below or you could choose to install all of them to experience the full power of the Solana Agent Kit.
1. Token plugin (`@solana-agent-kit/plugin-token`): Token operations for SPL tokens such as transferring assets, swapping, bridging, and rug checking.
2. NFT plugin (`@solana-agent-kit/plugin-nft`): NFT operations for Metaplex NFTs such as minting, listing, and metadata management.
3. DeFi plugin (`@solana-agent-kit/plugin-defi`): DeFi operations for Solana protocols such as staking, lending, borrowing, and spot and perpetual trading.
4. Misc plugin (`@solana-agent-kit/plugin-misc`): Miscellaneous operations such as airdrops, price feeds, coingecko token information, and domain registration.
5. Blinks plugin (`@solana-agent-kit/plugin-blinks`): Blinks operations for Solana protocols such as arcade games and more soon to come.
```bash
npm install @solana-agent-kit/plugin-token @solana-agent-kit/plugin-nft @solana-agent-kit/plugin-defi @solana-agent-kit/plugin-misc @solana-agent-kit/plugin-blinks
```
## Quick Start
Initializing the wallet interface and agent with plugins:
```typescript
import { SolanaAgentKit, createVercelAITools, KeypairWallet } from "solana-agent-kit"; // or import createLangchainTools if using langchain or createOpenAITools for OpenAI agents
import TokenPlugin from "@solana-agent-kit/plugin-token";
import NFTPlugin from "@solana-agent-kit/plugin-nft";
import DefiPlugin from "@solana-agent-kit/plugin-defi";
import MiscPlugin from "@solana-agent-kit/plugin-misc";
import BlinksPlugin from "@solana-agent-kit/plugin-blinks";
const keyPair = Keypair.fromSecretKey(bs58.decode("YOUR_SECRET_KEY"))
const wallet = new KeypairWallet(keyPair)
// Initialize with private key and optional RPC URL
const agent = new SolanaAgentKit(
wallet,
"YOUR_RPC_URL",
{
OPENAI_API_KEY: "YOUR_OPENAI_API_KEY",
}
) // Add the plugins you would like to use
.use(TokenPlugin)
.use(NFTPlugin)
.use(DefiPlugin)
.use(MiscPlugin)
.use(BlinksPlugin);
// Create LangChain tools
const tools = createVercelAITools(agent, agent.actions);
```
You can also make use of the wallet interface provided by the Solana wallet adapter for embedded wallets.
## Usage Examples Using Tools From The Token, Defi, and Other Plugins
### Deploy a New Token
```typescript
const result = await agent.methods.deployToken(
agent,
"my ai token", // name
"uri", // uri
"token", // symbol
9, // decimals
{
mintAuthority: null, // by default, deployer account
freezeAuthority: null, // by default, deployer account
updateAuthority: undefined, // by default, deployer account
isMutable: false // by default, true
},
1000000 // initial supply
);
console.log("Token Mint Address:", result.mint.toString());
```
### Deploy a New Token2022
```typescript
const result = await agent.methods.deployToken2022(
"my ai token 2022", // name
"uri", // uri
"token2022", // symbol
9, // decimals
{
mintAuthority: null, // by default, deployer account
freezeAuthority: null, // by default, deployer account
updateAuthority: undefined, // by default, deployer account
isMutable: false // by default, true
},
1000000 // initial supply
);
console.log("Token2022 Mint Address:", result.mint.toString());
```
### Create NFT Collection on 3Land
```typescript
const isDevnet = false; // (Optional) if not present TX takes place in Mainnet
const priorityFeeParam = 1000000; // (Optional) if not present the default priority fee will be 50000
const collectionOpts: CreateCollectionOptions = {
collectionName: "",
collectionSymbol: "",
collectionDescription: "",
mainImageUrl: ""
};
const result = await agent.methods.create3LandCollection(
collectionOpts,
isDevnet, // (Optional) if not present TX takes place in Mainnet
priorityFeeParam, //(Optional)
);
```
### Create NFT on 3Land
When creating an NFT using 3Land's tool, it automatically goes for sale on 3.land website
```typescript
const isDevnet = true; // (Optional) if not present TX takes place in Mainnet
const withPool = true; // (Optional) only present if NFT will be created with a Liquidity Pool for a specific SPL token
const priorityFeeParam = 1000000; // (Optional) if not present the default priority fee will be 50000
const collectionAccount = ""; //hash for the collection
const createItemOptions: CreateSingleOptions = {
itemName: "",
sellerFee: 500, //5%
itemAmount: 100, //total items to be created
itemSymbol: "",
itemDescription: "",
traits: [
{ trait_type: "", value: "" },
],
price: 0, //100000000 == 0.1 sol, can be set to 0 for a free mint
splHash: "", //present if listing is on a specific SPL token, if not present sale will be on $SOL, must be present if "withPool" is true
poolName: "", // Only present if "withPool" is true
mainImageUrl: "",
};
const result = await agent.methods.create3LandSingle(
{},
collectionAccount,
createItemOptions,
isDevnet, // (Optional) if not present TX takes place in Mainnet
withPool
priorityFeeParam, //(Optional)
);
```
### Create NFT Collection
```typescript
const collection = await agent.methods.deployCollection(agent, {
name: "My NFT Collection",
uri: "https://arweave.net/metadata.json",
royaltyBasisPoints: 500, // 5%
creators: [
{
address: "creator-wallet-address",
percentage: 100,
},
],
});
```
### Swap Tokens
```typescript
import { PublicKey } from "@solana/web3.js";
const signature = await agent.methods.trade(
agent,
new PublicKey("target-token-mint"),
100, // amount
new PublicKey("source-token-mint"),
300 // 3% slippage
);
```
### Lend Tokens
```typescript
import { PublicKey } from "@solana/web3.js";
const signature = await agent.methods.lendAssets(
agent,
100 // amount of USDC to lend
);
```
### Stake SOL
```typescript
const signature = await agent.methods.stakeWithJup(
agent,
1 // amount in SOL to stake
);
```
### Stake
---