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 🙏

© 2026 – Pkg Stats / Ryan Hefner

soltinel

v0.1.1

Published

Multi-agent Solana trading bot — Analyst → Sentiment → RiskGuard → Executor

Downloads

267

Readme

SolTinel

Multi-agent AI that analyses, guards, and executes Solana trades.
Sentiment. Rug risk. On-chain data. All before the swap.

SolTinel is an open-source trading bot for Solana that runs four specialised AI agents in sequence before touching your wallet. It reads X posts, checks rug risk, analyses on-chain signals, and only executes a trade when every check passes.

Analyst ──▶ Sentiment ──▶ Risk Guard ──approve──▶ Executor
                                      └──reject──▶ (stops, explains why)

New here? Read the Beginner Guide — no prior Solana or AI experience needed.


Why SolTinel?

Most bots execute first and ask questions never. SolTinel flips that:

| What it checks | How | |---|---| | Is the token a rug? | RugCheck.xyz risk score + flagged issues | | What is the market saying? | X posts → LLM sentiment score 0–1 | | Are the on-chain numbers real? | DexScreener: price, liquidity, volume, buy/sell ratio | | Does everything pass? | Hard rules first, then LLM arbitration for edge cases |

If any check fails, the trade is rejected with a plain-English reason. No black box.


Agents

| Agent | Does | |---|---| | Analyst | Fetches price, liquidity, 24h volume, buy/sell ratio via DexScreener (free, no key needed) | | Sentiment | Pulls recent X posts → LLM scores bullish/bearish/neutral with reasoning | | Risk Guard | Combines all signals, applies hard thresholds, asks LLM for grey-zone decisions | | Executor | Jupiter v6 swap — only runs if Risk Guard approves, respects DRY_RUN |


CLI And API

SolTinel now supports both:

  • src/cli.ts / soltinel for interactive terminal use
  • src/api.ts / package main for embedding in host runtimes like openclaw or hermes

The embeddable API exposes analyzeToken(), runSoltinelSession(), and executeApprovedTrade(), plus host hooks for approval gates and structured progress events.


Quickstart

git clone https://github.com/saadzimat430/soltinel
cd soltinel
cp .env.example .env   # fill in your API keys (see GUIDE.md for help)
npm install
npm run dev            # runs in dry-run mode on BONK by default

To analyse a specific token:

npm run dev -- <SOLANA_TOKEN_MINT_ADDRESS>

No wallet needed to start — DRY_RUN=true by default. You'll see the full agent pipeline run and a detailed rejection or approval reason without any funds at risk.


Configuration (.env)

| Variable | Required | What it does | |---|---|---| | ANTHROPIC_API_KEY | Yes (one of three) | Claude as the LLM brain | | OPENAI_API_KEY | Yes (one of three) | GPT-4o as the LLM brain | | OPENROUTER_API_KEY | Yes (one of three) | Any model via OpenRouter | | SOLANA_RPC_URL | No | Defaults to mainnet-beta public RPC | | SOLANA_PRIVATE_KEY | Only for live trades | Base58 key of your trading wallet | | BIRDEYE_API_KEY | No | Adds holder count to analysis | | X_BEARER_TOKEN | No | Enables real X sentiment (falls back to neutral) | | MAX_SLIPPAGE_BPS | No | Jupiter swap slippage tolerance in basis points (default 100 = 1%) | | RUG_SCORE_MAX | No | Reject if rug risk score exceeds this (0–100, default 40) | | SENTIMENT_MIN | No | Reject if sentiment score is below this (0–1, default 0.35) | | MIN_LIQUIDITY_USD | No | Reject if pool liquidity is below this in USD (default 5000) | | MIN_VOLUME_24H_USD | No | Reject if 24h volume is below this in USD (default 1000) | | MIN_VOL_LIQ_RATIO | No | Reject if volume/liquidity turnover ratio is below this (default 0.01 = 1%) | | MAX_PRICE_CHANGE_24H | No | Reject if 24h price drop exceeds this % (default -25, i.e. reject drops > 25%) | | DRY_RUN | No | true by default — set to false for live trades | | REQUIRE_CONFIRMATION | No | true by default — prompts "y/n" before every real trade; set to false for headless/autonomous mode | | ALLOW_OVERRIDE | No | false by default — when true, shows an override prompt after any rejection so you can proceed at your own risk | | MAX_TRADE_AMOUNT | No | Max input-token amount per trade, defaults to 25 |


Risk policy

Hard rules applied before any LLM call (fail-closed):

  • Rug score > RUG_SCORE_MAXreject
  • RugCheck unreachable → reject (never trade blind)
  • Sentiment score < SENTIMENT_MINreject
  • Liquidity < $5k → reject

Borderline cases go to the LLM with full context. Decisions are always typed and logged with a confidence score and plain-English reason.


Extending

Human-in-the-loop — add interruptBefore: ["executorAgent"] to graph.compile({...}) to pause before every trade for manual approval.

Watchlist / cron mode — wrap graph.invoke(...) in a setInterval or BullMQ worker over a list of mints for continuous monitoring.

Persistent state — swap MemorySaver for PostgresSaver from @langchain/langgraph-checkpoint-postgres to survive restarts.

More data sources — add a node for Pump.fun trending, whale wallet tracking, or on-chain order book depth.


Integration API

For agent runtimes and services, import the package instead of shelling out to the CLI:

import { analyzeToken, runSoltinelSession } from "soltinel";

const analysis = await analyzeToken({
  tokenAddress: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263",
  hooks: {
    onEvent(event) {
      console.log(event.type, event.agent, event.data);
    },
  },
});

const session = await runSoltinelSession({
  tokenAddress: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263",
  interactionMode: "headless",
  hooks: {
    onEvent(event) {
      console.log(event.type, event.data);
    },
    confirmTrade() {
      return { approved: true, amountUsd: 10 };
    },
    confirmOverride() {
      return false;
    },
    confirmHighPriceImpact() {
      return false;
    },
  },
});

runSoltinelSession() returns machine-readable output including decision, confidence, blockingReasons, recommendedAction, executionStatus, finalAction, and the full typed graph state.


Security

  • Never commit .env. Use a dedicated hot wallet funded only to your risk tolerance.
  • Keep DRY_RUN=true for at least 10 runs before going live.
  • The Risk Guard fails closed — if RugCheck is down, it rejects. Do not remove this.
  • Consider running the Executor in a separate process so analysis agents never touch the private key.

Tech stack

TypeScript · LangGraph · LangChain · DexScreener API · RugCheck API · Jupiter v6 API · X API v2 · @solana/web3.js


Contributing

PRs welcome. See CONTRIBUTING.md for guidelines.
Questions? Open an issue or find us on Twitter: @soltinel


License

MIT — free to use, fork, and build on.