npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

hexel-chain

v1.4.10

Published

connect any ai agents to solana protocols

Readme

Hexel Chain

Hexel-Chain Banner

NPM Downloads GitHub License

A open-source framework empowers AI agents to seamlessly interact with Solana’s ecosystem, regardless of the underlying model. These agents can autonomously handle a wide range of tasks—more than 60 different blockchain operations—including:

  • Buying, selling, and launching tokens
  • Facilitating asset lending and borrowing
  • Distributing compressed airdrops
  • Deploying tokens on automated market makers (AMMs)
  • Executing blinks and other transactions
  • And much more...

Whether you’re a blockchain developer or an AI researcher exploring decentralized finance, this toolkit simplifies the integration of AI-driven automation into Solana, making advanced on-chain interactions more efficient than ever.

Run on Repl.it

Replit template created by Hexel Chain

🔧 Core Blockchain Features

  • Token Transactions

    • Deploy SPL tokens using Metaplex
    • Facilitate asset transfers
    • Verify balances
    • Stake SOL
    • Zk-compressed airdrops powered by Light Protocol and Helius
  • NFTs on 3.Land

    • Design and launch your own collection
    • Automatically create and list NFTs on 3.land
    • Sell NFTs in any SPL token
  • NFT Management with Metaplex

    • Deploy collections
    • Mint NFTs
    • Manage metadata
    • Configure royalty settings
  • DeFi Integration

    • Swap assets via Jupiter Exchange
    • Launch on Pump through PumpPortal
    • Create Raydium pools (CPMM, CLMM, AMMv4)
    • Integrate with Orca Whirlpool
    • Set up Manifest markets and limit orders
    • Utilize Meteora Dynamic AMM, DLMM Pool, and Alpha Vault
    • Establish Openbook markets
    • Register and resolve SNS domains
    • Execute Jito Bundles
    • Fetch asset prices using Pyth Price feeds
    • Register and resolve Alldomains
    • Trade perpetuals with Adrena Protocol
    • Access Drift Vaults, Perps, Lending, and Borrowing
    • Enable cross-chain bridging via deBridge DLN
  • Solana Blinks

    • Access lending services via Lulo (offering the best APR for USDC)
    • Send Arcade Games
    • Stake with JupSOL
    • Stake SOL via Solayer (sSOL)
  • Non-Financial Actions

    • Register bounties using Gib Work
  • Market Data Integration

    • Integrate with CoinGecko Pro API
    • Access real-time token pricing
    • Track trending tokens and liquidity pools
    • Analyze top gainers
    • Retrieve detailed token information
    • Monitor the latest pool updates

🤖 AI Integration Features

  • LangChain Integration

    • Pre-built LangChain tools for blockchain tasks
    • Autonomous agent compatibility using the React framework
    • Persistent memory management for continuous interactions
    • Streaming responses for instant real-time feedback
  • Vercel AI SDK Integration

    • AI agent integration with Vercel AI SDK
    • Support for multiple frameworks
    • Fast and simple toolkit deployment
  • Autonomous Modes

    • Interactive chat mode for guided workflows
    • Fully autonomous mode for independent agent execution
    • Customizable action intervals
    • Integrated error handling and recovery system
  • AI-Powered Tools

    • DALL-E integration for NFT artwork creation
    • Natural language processing for blockchain commands
    • Price feed integration for real-time market analysis
    • Automated decision-making for enhanced efficiency

📃 Documentation

You can view the full documentation of the kit at docs.hexelchain.com

📦 Installation

npm install hexel-chain

Quick Start

import { HexelChain, createSolanaTools } from "hexel-chain";

// Initialize with private key and optional RPC URL
const agent = new HexelChain(
  "your-wallet-private-key-as-base58",
  "https://api.mainnet-beta.solana.com",
  "your-openai-api-key"
);

// Create LangChain tools
const tools = createSolanaTools(agent);

Usage Examples

Deploy a New Token

const result = await agent.deployToken(
  "my ai token", // name
  "uri", // uri
  "token", // symbol
  9, // decimals
  1000000 // initial supply
);

console.log("Token Mint Address:", result.mint.toString());

Create NFT Collection on 3Land

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.create3LandCollection(
      collectionOpts,
      isDevnet, // (Optional) if not present TX takes place in Mainnet
      priorityFeeParam, //(Optional)
    );

Create NFT on 3Land

When you create an NFT using 3Land's tool, it is automatically listed for sale on the 3.land website.

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.create3LandNft(
  collectionAccount,
  createItemOptions,
  isDevnet, // (Optional) if not present TX takes place in Mainnet
  withPool
  priorityFeeParam, //(Optional)
);

Create NFT Collection

const collection = await agent.deployCollection({
  name: "My NFT Collection",
  uri: "https://arweave.net/metadata.json",
  royaltyBasisPoints: 500, // 5%
  creators: [
    {
      address: "creator-wallet-address",
      percentage: 100,
    },
  ],
});

Swap Tokens

import { PublicKey } from "@solana/web3.js";

const signature = await agent.trade(
  new PublicKey("target-token-mint"),
  100, // amount
  new PublicKey("source-token-mint"),
  300 // 3% slippage
);

Lend Tokens

import { PublicKey } from "@solana/web3.js";

const signature = await agent.lendAssets(
  100 // amount of USDC to lend
);

Stake SOL

const signature = await agent.stake(
  1 // amount in SOL to stake
);

Stake SOL on Solayer

const signature = await agent.restake(
  1 // amount in SOL to stake
);

Send an SPL Token Airdrop via ZK Compression

import { PublicKey } from "@solana/web3.js";

(async () => {
  console.log(
    "~Airdrop cost estimate:",
    getAirdropCostEstimate(
      1000, // recipients
      30_000 // priority fee in lamports
    )
  );

  const signature = await agent.sendCompressedAirdrop(
    new PublicKey("JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"), // mint
    42, // amount per recipient
    [
      new PublicKey("1nc1nerator11111111111111111111111111111111"),
      // ... add more recipients
    ],
    30_000 // priority fee in lamports
  );
})();

Fetch Price Data from Pyth


const priceFeedID = await agent.getPythPriceFeedID("SOL");

const price = await agent.getPythPrice(priceFeedID);

console.log("Price of SOL/USD:", price);

Open PERP Trade

import { PublicKey } from "@solana/web3.js";

const signature = await agent.openPerpTradeLong({
  price: 300, // $300 SOL Max price
  collateralAmount: 10, // 10 jitoSOL in
  collateralMint: new PublicKey("J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn"), // jitoSOL
  leverage: 50000, // x5
  tradeMint: new PublicKey("J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn"), // jitoSOL
  slippage: 0.3, // 0.3%
});

Close PERP Trade

import { PublicKey } from "@solana/web3.js";

const signature = await agent.closePerpTradeLong({
  price: 200, // $200 SOL price
  tradeMint: new PublicKey("J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn"), // jitoSOL
});

Close Empty Token Accounts


const { signature } = await agent.closeEmptyTokenAccounts();

Create a Drift account

Create a drift account with an initial token deposit.

const result = await agent.createDriftUserAccount()

Create a Drift Vault

Create a drift vault.

const signature = await agent.createDriftVault({
  name: "my-drift-vault",
  marketName: "USDC-SPOT",
  redeemPeriod: 1, // in days
  maxTokens: 100000, // in token units e.g 100000 USDC
  minDepositAmount: 5, // in token units e.g 5 USDC
  managementFee: 1, // 1%
  profitShare: 10, // 10%
  hurdleRate: 5, // 5%
  permissioned: false, // public vault or whitelist
})

Deposit into a Drift Vault

Deposit tokens into a drift vault.

const signature = await agent.depositIntoDriftVault(100, "41Y8C4oxk4zgJT1KXyQr35UhZcfsp5mP86Z2G7UUzojU")

Deposit into your Drift account

Deposit tokens into your drift account.

const {txSig} = await agent.depositToDriftUserAccount(100, "USDC")

Derive a Drift Vault address

Derive a drift vault address.

const vaultPublicKey = await agent.deriveDriftVaultAddress("my-drift-vault")

Do you have a Drift account

Check if agent has a drift account.

const {hasAccount, account} = await agent.doesUserHaveDriftAccount()

Get Drift account information

Get drift account information.

const accountInfo = await agent.driftUserAccountInfo()

Request withdrawal from Drift vault

Request withdrawal from drift vault.

const signature = await agent.requestWithdrawalFromDriftVault(100, "41Y8C4oxk4zgJT1KXyQr35UhZcfsp5mP86Z2G7UUzojU")

Carry out a perpetual trade using a Drift vault

Open a perpetual trade using a drift vault that is delegated to you.

const signature = await agent.tradeUsingDelegatedDriftVault({
  vault: "41Y8C4oxk4zgJT1KXyQr35UhZcfsp5mP86Z2G7UUzojU",
  amount: 500,
  symbol: "SOL",
  action: "long",
  type: "limit",
  price: 180 // Please long limit order at $180/SOL
})

Carry out a perpetual trade using your Drift account

Open a perpetual trade using your drift account.

const signature = await agent.tradeUsingDriftPerpAccount({
  amount: 500,
  symbol: "SOL",
  action: "long",
  type: "limit",
  price: 180 // Please long limit order at $180/SOL
})

Update Drift vault parameters

Update drift vault parameters.

const signature = await agent.updateDriftVault({
  name: "my-drift-vault",
  marketName: "USDC-SPOT",
  redeemPeriod: 1, // in days
  maxTokens: 100000, // in token units e.g 100000 USDC
  minDepositAmount: 5, // in token units e.g 5 USDC
  managementFee: 1, // 1%
  profitShare: 10, // 10%
  hurdleRate: 5, // 5%
  permissioned: false, // public vault or whitelist
})

Withdraw from Drift account

Withdraw tokens from your drift account.

const {txSig} = await agent.withdrawFromDriftAccount(100, "USDC")

Borrow from Drift

Borrow tokens from drift.

const {txSig} = await agent.withdrawFromDriftAccount(1, "SOL", true)

Repay Drift loan

Repay a loan from drift.

const {txSig} = await agent.depositToDriftUserAccount(1, "SOL", true)

Withdraw from Drift vault

Withdraw tokens from a drift vault after the redemption period has elapsed.

const signature = await agent.withdrawFromDriftVault( "41Y8C4oxk4zgJT1KXyQr35UhZcfsp5mP86Z2G7UUzojU")

Update the address a Drift vault is delegated to

Update the address a drift vault is delegated to.

const signature = await agent.updateDriftVaultDelegate("41Y8C4oxk4zgJT1KXyQr35UhZcfsp5mP86Z2G7UUzojU", "new-address")

Get Voltr Vault Position Values

Get the current position values and total value of assets in a Voltr vault.

const values = await agent.voltrGetPositionValues("7opUkqYtxmQRriZvwZkPcg6LqmGjAh1RSEsVrdsGDx5K")

Deposit into Voltr Strategy

Deposit assets into a specific strategy within a Voltr vault.

const signature = await agent.voltrDepositStrategy(
  new BN("1000000000"), // amount in base units (e.g., 1 USDC = 1000000)
  "7opUkqYtxmQRriZvwZkPcg6LqmGjAh1RSEsVrdsGDx5K", // vault
  "9ZQQYvr4x7AMqd6abVa1f5duGjti5wk1MHsX6hogPsLk"  // strategy
)

Withdraw from Voltr Strategy

Withdraw assets from a specific strategy within a Voltr vault.

const signature = await agent.voltrWithdrawStrategy(
  new BN("1000000000"), // amount in base units (e.g., 1 USDC = 1000000)
  "7opUkqYtxmQRriZvwZkPcg6LqmGjAh1RSEsVrdsGDx5K", // vault
  "9ZQQYvr4x7AMqd6abVa1f5duGjti5wk1MHsX6hogPsLk"  // strategy
)

Get a Solana asset by its ID

const asset = await agent.getAsset("41Y8C4oxk4zgJT1KXyQr35UhZcfsp5mP86Z2G7UUzojU")

Get a price inference from Allora

Get the price for a given token and timeframe from Allora's API

const sol5mPrice = await agent.getPriceInference("SOL", "5m");
console.log("5m price inference of SOL/USD:", sol5mPrice);

List all topics from Allora

const topics = await agent.getAllTopics();
console.log("Allora topics:", topics);

Get an inference for an specific topic from Allora

const inference = await agent.getInferenceByTopicId(42);
console.log("Allora inference for topic 42:", inference);

Simulate a Switchboard feed

Simulate a given Switchboard feed. Find or create feeds here.

const value = await agent.simulateSwitchboardFeed(
      "9wcBMATS8bGLQ2UcRuYjsRAD7TPqB1CMhqfueBx78Uj2", // TRUMP/USD
      "http://crossbar.switchboard.xyz");;
console.log("Simulation resulted in the following value:", value);

### Cross-Chain Swap

```typescript
import { PublicKey } from "@solana/web3.js";

const signature = await agent.swap(
  amount: "10",
  fromChain: "bsc",
  fromToken: "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359",
  toChain: "solana",
  toToken: "0x0000000000000000000000000000000000000000",
  dstAddr: "0xc2d3024d64f27d85e05c40056674Fd18772dd922",
);

Cross-Chain Bridge via deBridge

The Hexel Chain supports cross-chain token transfers using deBridge's DLN protocol. Here's how to use it:

  1. Check supported chains:
const chains = await agent.getDebridgeSupportedChains();
console.log("Available chains:", chains);
// Example output: { chains: [{ chainId: "1", chainName: "Ethereum" }, { chainId: "7565164", chainName: "Solana" }] }
  1. Get available tokens (optional):
const tokens = await agent.getDebridgeTokensInfo("1", "USDC"); // Search for USDC on Ethereum
console.log("Available tokens:", tokens);
// Shows tokens matching 'USDC' on the specified chain
  1. Create bridge order (SOL -> ETH):
const orderInput = {
  srcChainId: "7565164", // Solana
  srcChainTokenIn: "11111111111111111111111111111111", // Native SOL
  srcChainTokenInAmount: "1000000000", // 1 SOL (9 decimals)
  dstChainId: "1", // Ethereum
  dstChainTokenOut: "0x0000000000000000000000000000000000000000", // ETH
  dstChainTokenOutRecipient: "0x23C279e58ddF1018C3B9D0C224534fA2a83fb1d2" // ETH recipient
};

const order = await agent.createDebridgeOrder(orderInput);
console.log("Order created:", order);
// Contains transaction data and estimated amounts
  1. Execute the bridge order:
const signature = await agent.executeDebridgeOrder(order.tx.data);
console.log("Bridge transaction sent:", signature);
  1. Check bridge status:
const status = await agent.checkDebridgeTransactionStatus(signature);
console.log("Bridge status:", status);
// Shows current status: Created, Fulfilled, etc.

Note: When bridging between chains:

  • To Solana: Use base58 addresses for recipients and token mints
  • From Solana: Use EVM addresses for recipients and ERC-20 format for tokens
  • Always verify addresses and amounts before executing bridge transactions

Get Token Price Data from CoinGecko

const priceData = await agent.getTokenPriceData([
  "So11111111111111111111111111111111111111112", // SOL
  "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"  // USDC
]);
console.log("Token prices:", priceData);

Get Trending Tokens

const trendingTokens = await agent.getTrendingTokens();
console.log("Trending tokens:", trendingTokens);

Get Latest Pools

const latestPools = await agent.getLatestPools();
console.log("Latest pools:", latestPools);

Get Token Information

const tokenInfo = await agent.getTokenInfo("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
console.log("Token info:", tokenInfo);

Get Top Gainers

const topGainers = await agent.getTopGainers("24h", "all");
console.log("Top gainers:", topGainers);

Get Trending Pools

const trendingPools = await agent.getTrendingPools("24h");
console.log("Trending pools:", trendingPools);

Examples

LangGraph Multi-Agent System

The repository includes an advanced example of building a multi-agent system using LangGraph and Hexel Chain. Located in examples/agent-kit-langgraph, this example demonstrates:

  • Multi-agent architecture using LangGraph's StateGraph
  • Specialized agents for different tasks:
    • General purpose agent for basic queries
    • Transfer/Swap agent for transaction operations
    • Read agent for blockchain data queries
    • Manager agent for routing and orchestration
  • Fully typed TypeScript implementation
  • Environment-based configuration

Check out the LangGraph example for a complete implementation of an advanced Solana agent system.

Dependencies

The toolkit relies on several key Solana and Metaplex libraries:

  • @solana/web3.js
  • @solana/spl-token
  • @metaplex-foundation/digital-asset-standard-api
  • @metaplex-foundation/mpl-token-metadata
  • @metaplex-foundation/mpl-core
  • @metaplex-foundation/umi
  • @lightprotocol/compressed-token
  • @lightprotocol/stateless.js
  • @coingecko/sdk

Contributing

Contributions are welcome! Please feel free to submit a Pull Request. Refer to CONTRIBUTING.md for detailed guidelines on how to contribute to this project.

Contributors

License

Apache-2 License

Security

This toolkit handles private keys and transactions. Always ensure you're using it in a secure environment and never share your private keys.