原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。使用 Google 登录即可撰写评价。原型 · 每 30 分钟更新
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

Agent Sniper

作者:nirholas版本 0.1.7i★ 278 (整个仓库的星标)i在你的电脑上运行
注册名称io.github.nirholas/agent-sniper

安装方法

What it does

Self-custodial pump.fun sniper: arm strategies, snipe, manage positions. Simulate by default.

  • Connects 在你的电脑上运行
  • Account or key Needs SOLANA_SECRET_KEY
  • Category 其他

安装

选择你使用的 AI 应用,然后复制设置。

通过 3/3 项检查 · 在你的电脑上运行 · ✓ 命令已检查 2026年11月14日

第一步:你用哪个 AI?

选择你用的应用,步骤会显示在下方。

可连接 Claude,但需要先准备

需要 Agent Sniper 的密钥(在开发者网站创建) · 需要先在电脑上安装 Node.js(只需一次) · 仅限电脑上的 Claude 应用(Windows 或 Mac),网页和手机不可用

  1. 安装 Node.js

    只需一次,所有需要 Node.js 的服务器都能用

    打开 Node.js 下载页 ↗

  2. 注册并创建 Agent Sniper 的密钥

    打开开发者网站,注册账户并创建 API 密钥,下一步要用。价格和免费方案请看开发者网站。

    打开 Agent Sniper 网站 ↗

  3. 打开电脑版 Claude 应用的设置文件

    SettingsDeveloperEdit Config

  4. 粘贴这些设置并保存文件

    {
      "mcpServers": {
        "agent-sniper": {
          "command": "npx",
          "args": [
            "-y",
            "@three-ws/agent-sniper",
            "mcp"
          ],
          "env": {
            "SOLANA_SECRET_KEY": "your-value"
          }
        }
      }
    }

    只把密钥粘贴到应用的输入框里,不要粘贴到聊天中或发给任何人

  5. 退出 Claude 再重新打开

  6. 试一试

    用 Agent Sniper 告诉我你能帮我做什么,然后做一件给我看

    ✓ 如果 Claude 说正在使用 Agent Sniper,或回答中出现 Agent Sniper 的工具名称,就表示连接成功

3 项可选设置(不填也能用)

上面的命令不填这些也能用。想调整时再按开发者的说明添加。

  • SNIPER_MODE Trade mode: simulate | live. simulate scores, guards, and logs every decision but NEVER broadcasts. live signs and broadcasts real transactions with real funds. Defaults to simulate — keep it there u… · 默认值 simulate
  • SNIPER_NETWORK Solana cluster to trade on: mainnet | devnet. Defaults to mainnet. · 默认值 mainnet
  • SOLANA_RPC_URL Solana RPC endpoint. A public RPC rate-limits under the new-mint firehose, so live mode refuses to start without this set. Optional in simulate mode.

说明仍为英文原文。

菜单名称已于 2026年11月11日 对照 Anthropic 帮助页面核实 · 你的界面可能因版本略有不同

ChatGPT 暂时无法连接 Agent Sniper

Agent Sniper 需要安装在你的电脑上,而 ChatGPT 只能连接在网上运行的服务器

你可以改用这些方式

A · 使用能连接 Agent Sniper 的应用

  • 需要 Agent Sniper 的密钥(在开发者网站创建) · 需要先在电脑上安装 Node.js(只需一次) · 仅限电脑上的 Claude 应用(Windows 或 Mac),网页和手机不可用
  • 需要 Agent Sniper 的密钥(在开发者网站创建) · 需要先在电脑上安装 Node.js(只需一次)
  • 需要 Agent Sniper 的密钥(在开发者网站创建) · 需要先在电脑上安装 Node.js(只需一次)
  • 需要 Agent Sniper 的密钥(在开发者网站创建) · 需要先在电脑上安装 Node.js(只需一次)

B · 其他 类中能连接 ChatGPT 的其他服务器

从同类中使用较多的里挑选,仅限用地址即可连接、无需密钥的

可连接 Claude Code,但需要先准备

需要 Agent Sniper 的密钥(在开发者网站创建) · 需要先在电脑上安装 Node.js(只需一次)

  1. 安装 Node.js

    只需一次,所有需要 Node.js 的服务器都能用

    打开 Node.js 下载页 ↗

  2. 注册并创建 Agent Sniper 的密钥

    打开开发者网站,注册账户并创建 API 密钥,下一步要用。价格和免费方案请看开发者网站。

    打开 Agent Sniper 网站 ↗

  3. 打开终端

    Mac:按 Command+空格,输入 Terminal · Windows:打开 PowerShell

  4. 粘贴这条命令并按 Enter

    claude mcp add --scope user agent-sniper --env SOLANA_SECRET_KEY=your-value -- npx -y @three-ws/agent-sniper mcp

    按 Enter 前,把“your-value”改成你的密钥

    只把密钥粘贴到应用的输入框里,不要粘贴到聊天中或发给任何人

  5. 在 Claude Code 中输入 /mcp

    应能看到 Agent Sniper 在列表中并显示已连接

  6. 试一试

    用 Agent Sniper 告诉我你能帮我做什么,然后做一件给我看

    ✓ 如果 Claude Code 说正在使用 Agent Sniper,或回答中出现 Agent Sniper 的工具名称,就表示连接成功

3 项可选设置(不填也能用)

上面的命令不填这些也能用。想调整时再按开发者的说明添加。

  • SNIPER_MODE Trade mode: simulate | live. simulate scores, guards, and logs every decision but NEVER broadcasts. live signs and broadcasts real transactions with real funds. Defaults to simulate — keep it there u… · 默认值 simulate
  • SNIPER_NETWORK Solana cluster to trade on: mainnet | devnet. Defaults to mainnet. · 默认值 mainnet
  • SOLANA_RPC_URL Solana RPC endpoint. A public RPC rate-limits under the new-mint firehose, so live mode refuses to start without this set. Optional in simulate mode.

说明仍为英文原文。

菜单名称已于 2026年11月11日 对照 Anthropic 帮助页面核实 · 你的界面可能因版本略有不同

可连接 Cursor,但需要先准备

需要 Agent Sniper 的密钥(在开发者网站创建) · 需要先在电脑上安装 Node.js(只需一次)

  1. 安装 Node.js

    只需一次,所有需要 Node.js 的服务器都能用

    打开 Node.js 下载页 ↗

  2. 注册并创建 Agent Sniper 的密钥

    打开开发者网站,注册账户并创建 API 密钥,下一步要用。价格和免费方案请看开发者网站。

    打开 Agent Sniper 网站 ↗

  3. 点击这个按钮打开 Cursor

    在 Cursor 中打开

    Cursor 会请你确认安装,点击 Install

  4. 填写你的密钥

    在 Agent Sniper 的设置中,SOLANA_SECRET_KEY 还是空的,填入你的密钥并保存

    只把密钥粘贴到应用的输入框里,不要粘贴到聊天中或发给任何人

  5. 在 Cursor 中以 Agent 模式打开 AI 聊天

  6. 试一试

    用 Agent Sniper 告诉我你能帮我做什么,然后做一件给我看

    ✓ 如果 Cursor 说正在使用 Agent Sniper,或回答中出现 Agent Sniper 的工具名称,就表示连接成功

3 项可选设置(不填也能用)

上面的命令不填这些也能用。想调整时再按开发者的说明添加。

  • SNIPER_MODE Trade mode: simulate | live. simulate scores, guards, and logs every decision but NEVER broadcasts. live signs and broadcasts real transactions with real funds. Defaults to simulate — keep it there u… · 默认值 simulate
  • SNIPER_NETWORK Solana cluster to trade on: mainnet | devnet. Defaults to mainnet. · 默认值 mainnet
  • SOLANA_RPC_URL Solana RPC endpoint. A public RPC rate-limits under the new-mint firehose, so live mode refuses to start without this set. Optional in simulate mode.

说明仍为英文原文。

菜单名称已于 2026年11月11日 对照 Cursor 帮助页面核实 · 你的界面可能因版本略有不同

可连接 VS Code,但需要先准备

需要 Agent Sniper 的密钥(在开发者网站创建) · 需要先在电脑上安装 Node.js(只需一次)

  1. 安装 Node.js

    只需一次,所有需要 Node.js 的服务器都能用

    打开 Node.js 下载页 ↗

  2. 注册并创建 Agent Sniper 的密钥

    打开开发者网站,注册账户并创建 API 密钥,下一步要用。价格和免费方案请看开发者网站。

    打开 Agent Sniper 网站 ↗

  3. 点击这个按钮打开 VS Code

    在 VS Code 中打开

    VS Code 会请你确认安装,点击 Install

  4. 填写你的密钥

    在 Agent Sniper 的设置中,SOLANA_SECRET_KEY 还是空的,填入你的密钥并保存

    只把密钥粘贴到应用的输入框里,不要粘贴到聊天中或发给任何人

  5. 在 VS Code 中以 Agent 模式打开 AI 聊天

  6. 试一试

    用 Agent Sniper 告诉我你能帮我做什么,然后做一件给我看

    ✓ 如果 VS Code 说正在使用 Agent Sniper,或回答中出现 Agent Sniper 的工具名称,就表示连接成功

3 项可选设置(不填也能用)

上面的命令不填这些也能用。想调整时再按开发者的说明添加。

  • SNIPER_MODE Trade mode: simulate | live. simulate scores, guards, and logs every decision but NEVER broadcasts. live signs and broadcasts real transactions with real funds. Defaults to simulate — keep it there u… · 默认值 simulate
  • SNIPER_NETWORK Solana cluster to trade on: mainnet | devnet. Defaults to mainnet. · 默认值 mainnet
  • SOLANA_RPC_URL Solana RPC endpoint. A public RPC rate-limits under the new-mint firehose, so live mode refuses to start without this set. Optional in simulate mode.

说明仍为英文原文。

菜单名称已于 2026年11月11日 对照 VS Code 帮助页面核实 · 你的界面可能因版本略有不同

其他支持 MCP 的应用(如 Windsurf、Zed、Gemini CLI)添加方式各不相同,请在应用列表中查看

查看所有支持 MCP 的应用 →

JSON 设置在下方“开发者专用”中

卡住了?问问正在用 Agent Sniper 的人💬 讨论 →
开发者专用:终端命令和 JSON 设置

安装在电脑上

Claude Code

claude mcp add --scope user agent-sniper --env SOLANA_SECRET_KEY=your-value -- npx -y @three-ws/agent-sniper mcp

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "agent-sniper": {
      "command": "npx",
      "args": [
        "-y",
        "@three-ws/agent-sniper",
        "mcp"
      ],
      "env": {
        "SOLANA_SECRET_KEY": "your-value"
      }
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "agent-sniper": {
      "command": "npx",
      "args": [
        "-y",
        "@three-ws/agent-sniper",
        "mcp"
      ],
      "env": {
        "SOLANA_SECRET_KEY": "your-value"
      }
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "agent-sniper": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@three-ws/agent-sniper",
        "mcp"
      ],
      "env": {
        "SOLANA_SECRET_KEY": "your-value"
      }
    }
  }
}

需要你填写的值

  • SNIPER_MODE env
    Trade mode: simulate | live. simulate scores, guards, and logs every decision but NEVER broadcasts. live signs and broadcasts real transactions with real funds. Defaults to simulate — keep it there u…
  • SNIPER_NETWORK env
    Solana cluster to trade on: mainnet | devnet. Defaults to mainnet.
  • SOLANA_RPC_URL env
    Solana RPC endpoint. A public RPC rate-limits under the new-mint firehose, so live mode refuses to start without this set. Optional in simulate mode.
  • SOLANA_SECRET_KEY 机密 必填 env
    Default self-custody wallet secret for single-agent runs — base58, a JSON byte array, or 0x-hex. Stays on your machine; the engine signs locally. Required only for live trading. Treat it like a passw…

说明仍为英文原文。

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

一览

GitHub 星标i
278 (整个仓库的星标)
该仓库包含多个 MCP 条目,星标在排名中只计算一次
每周下载量i
439/周
许可证i
Apache-2.0
连接方式
在你的电脑上运行
最新版本i
0.1.7
分类i
其他
发布到注册中心i
2026年9月30日
代码最后更新i
2026年11月13日
作者
nirholas
软件包
npm: @three-ws/agent-sniper
网站
three.ws
注册状态
活跃

哪些应用可以使用它

依据这个服务器的连接方式和各应用自己的文档,检查于 2026年11月10日。

在你的电脑上运行,适用于

ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast

全部应用及其优缺点 →

它能做什么

它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月14日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过 GitHub 账户 nirholas 验证,该账户拥有此仓库

  • ✓ 通过

    仍在维护

    代码最后更新于昨天

  • ✓ 通过

    有许可证

    使用 Apache-2.0

  • – 不适用

    端点有响应

    它在你的电脑上运行,没有互联网端点

  • – 不适用

    使用 OAuth 登录

    在你的电脑上运行,改用本地设置

  • … 尚未检查

    工具描述中没有隐藏指令

    它在你的电脑上运行;我们只能读取互联网端点的工具列表

讨论

提问、分享技巧或报告无法使用。按“有帮助”数量排序。

还没有帖子,欢迎第一个提问或分享。

此处内容由用户撰写,不代表 PopNx 团队。

使用 Google 登录后发帖

用户评价

还没有评价

用 Google 登录后写评价

与“其他”中的其他服务器比较i

  • 星标数多于此分类中其他 19733 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 19733 个服务器的 49% 更新
  • 基础检查结果等于或优于此分类中其他 19733 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

Agent Sniper 安全吗?

它在 3 项适用的基础检查中通过了 3 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

你需要填写:SOLANA_SECRET_KEY

它在我的电脑上运行还是在云端?

它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。

它还在维护吗?

GitHub 仓库最后更新于昨天,最新版本(0.1.7)于上个月进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。

有什么可以替代它?

同一分类中有:World Monitor, Claude Flow, Windmill

同类别的其他选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

World Monitor

Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 97 tools.

作者:koala73广泛使用★ 9.1万昨天更新

在云端运行✓ 服务方 · worldmonitor.app

Claude Flow

AI orchestration with hive-mind swarms, neural networks, and 87 MCP tools for enterprise dev.

作者:ruvnet广泛使用↓ 1.4万/周★ 8.2万14个月前更新

在你的电脑上运行

Windmill

Run Windmill scripts and flows and manage jobs, schedules, resources and variables.

作者:windmill-labs广泛使用★ 1.9万前天更新

在云端运行

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

@three-ws/agent-sniper

A lightweight, embeddable pump.fun sniper engine for 3D AI agents. One trade loop — feed a stream of new launches, score each against a per-agent strategy, run the pre-trade guards, buy, then sweep open positions on an interval and exit on stop-loss / take-profit / trailing-stop / timeout / sentiment-flip. It is multi-agent and multi-user by construction (one wallet per agentId), and every external dependency — wallet custody, persistence, RPC/venue, launch feed — is a pluggable adapter, so the same engine runs locally with in-memory state or hosted across thousands of tenants. The package ships with four faces over that one engine: a library, a CLI, an MCP server, and an x402 paid HTTP API.


Why — the adapter architecture

The engine is pure orchestration. It owns the decision pipeline; it owns nothing about *where* the money, the data, or the chain live. Five adapter interfaces (src/types.js) are the seams, and a default implementation ships for each:

                            ┌──────────────────────────── engine ────────────────────────────┐

Feed ──{mint|intel|claim}─▶ score ──▶ guards ──▶ executeBuy ──▶ claimPosition │ (PumpPortal) (scorer) (concurrency, (quote + (atomic slot) │ budget, SOL build + sign │ headroom, + broadcast) │ price impact) │ position sweep (every pollMs) │ ──▶ decideExit ──▶ executeSell │ └────────────────────────────────────────────────────────────────────┘ adapters: Feed Solana Wallet Executor Store (launch (quote/build (resolve a (sign + (strategies, stream) pump.fun ix) Keypair per broadcast) positions, agentId) spend ledger)

Swap any one without touching the loop: a custodial KMS wallet instead of local keys, a Postgres store instead of memory, a different launch feed, a different venue. Implement the shape, pass it to createSniper(), done.

AdapterResponsibility
FeedPush `{ kind: 'mint'\'intel'\'claim', data: Candidate }` events into the engine.
SolanaQuote + build pump.fun buy/sell instructions; expose a web3 Connection.
WalletResolve a signing Keypair for an agentId (or null if unprovisioned).
ExecutorThe one place that signs and broadcasts; returns landing telemetry.
StorePersist strategies, positions, and the daily spend ledger; atomic claimPosition.

Optional Hooks (firewall assessSafety, oracleGate, onScreen, onBuy, onSell, recordDecision) are best-effort cross-cutting callbacks — a throw is swallowed and never aborts a trade, except onTip, which is a deliberate veto.


Install

npm i @three-ws/agent-sniper

Optional peers, installed only if you use the face that needs them:

npm i better-sqlite3   # durable Store (src/adapters/store/sqlite.js)

npm i express # the x402 HTTP API face

Requires Node >= 22.


Quickstart (library)

The presets.local wiring is the zero-to-running path: in-memory store + self-custody wallet + pump.fun client + web3 executor + PumpPortal feed. Run it in simulate mode on devnet first — the engine scores, guards, and logs every decision but never broadcasts.

A strategy must carry a stop_loss_pct — the engine refuses to arm a strategy without one. SOL amounts on a strategy are expressed in lamports (1 SOL = 1,000,000,000 lamports), as a string, number, or bigint.

import { createSniper, createMemoryStore, presets } from '@three-ws/agent-sniper';

// 1 SOL = 1e9 lamports. const SOL = 1_000_000_000n;

const strategy = { id: 'strat_scout_1', agent_id: 'scout', // one wallet per agentId enabled: true, trigger: 'new_mint', // fire on the create event network: 'devnet', per_trade_lamports: (SOL / 100n).toString(), // 0.01 SOL per snipe daily_budget_lamports: (SOL / 2n).toString(), // 0.5 SOL/day ceiling max_concurrent_positions: 3, slippage_bps: 500, // 5% max_price_impact_pct: 10, // entry circuit breaker stop_loss_pct: 30, // REQUIRED — exit when down 30% take_profit_pct: 80, // exit when up 80% trailing_stop_pct: 20, // exit when down 20% from peak (after profit) max_hold_seconds: 1800, // hard time-stop require_socials: true, // skip launches with no twitter/telegram/website max_creator_launches: 10, // skip serial launchers };

const sniper = await presets.local({ network: 'devnet', mode: 'simulate', // no funds move strategies: [strategy], // secrets: { scout: ' ' }, // for live mode });

await sniper.start();

console.log(sniper.stats()); // { events, candidates, buys, sells, errors, strategies, queued, lastEventAt } console.log(sniper.strategies()); // the live armed-strategy cache

// Fire a manual buy by hand (drives the same path as MCP snipe_now): sniper.submitCandidate( { mint: 'THREEsynthetic1111111111111111111111111111111', entry_trigger: 'manual' }, { force: true }, );

// later… await sniper.stop();

createSniper(deps) is the lower-level constructor when you want to bring your own adapters — pass { config, store, wallet, solana, executor, feed, hooks }. presets.local is just one wiring of it.


CLI usage

The package installs an agent-sniper binary. Default mode is simulate — it will not move funds until you pass --mode live (or set SNIPER_MODE=live), which trades real funds.

# Run the engine. Mode defaults to simulate; live trades real funds.

npx agent-sniper run --network devnet --strategy ./strategy.json

Serve the engine over MCP (stdio) for Claude / Cursor / any MCP client.

agent-sniper mcp

Serve the x402-gated HTTP API + web console (open http://localhost:8787).

agent-sniper serve

Help.

agent-sniper help

Safety. run/serve/mcp all start in simulate mode unless you opt into

live explicitly. In live mode every armed strategy can spend up to its

daily_budget_lamports per UTC day. Read Safety & guardrails below before

you flip the switch.

--strategy ./strategy.json loads a strategy (or array of strategies) as JSON. A minimal file mirrors the object in the Quickstart — note stop_loss_pct is required.


MCP server

agent-sniper mcp exposes the engine as an MCP stdio server. Every tool maps 1:1 onto a public engine/store method — no internals are reached around. The server is unauthenticated and meant to run locally against your own wallet/RPC.

ToolKindPurpose
arm_strategywriteRegister/update a strategy. SOL → lamports for you; stop_loss_pct mandatory.
disarm_strategywriteDisable a strategy (enabled=false); open positions still exit on their rules.
list_strategiesreadList the armed strategy set the engine is evaluating.
snipe_nowwriteForce a manual buy of a mint across all armed agents (bypasses the scorer).
list_positionsreadList positions, filter by agentId and/or status.
close_positionwriteSchedule an exit — flips the position's kill switch; the next sweep sells it.
sniper_statusreadEngine health: event/candidate/buy/sell counts, armed count, queue depth, network/mode.

Wire it into an MCP client (Claude Desktop, Cursor, etc.):

{

"mcpServers": { "agent-sniper": { "command": "npx", "args": ["-y", "@three-ws/agent-sniper", "mcp"], "env": { "SNIPER_NETWORK": "devnet", "SNIPER_MODE": "simulate" } } } }

createSniperMcpServer(deps) builds the fully-registered server without connecting a transport, so you can construct it in a test and drive it over an in-memory transport.


x402 paid HTTP API

agent-sniper serve (or import { serve } from '@three-ws/agent-sniper/api') mounts the engine over HTTP. Reads are free; the four mutating endpoints are gated behind x402 USDC micropayments via @three-ws/x402-server — the middleware verifies the X-PAYMENT header against the facilitator, runs the work, settles on-chain, and emits the receipt.

MethodEndpointPriceNotes
GET/healthfreeLiveness + network/mode/stats.
GET/statusfreeFull stats + immutable runtime config.
GET/strategiesfreeThe armed strategy set.
GET/positions?agentId=&status=freePositions from the store.
GET/activityfreeThe recent engine screen events (what the console feed renders).
GET/ and /consolefreeThe built-in operator console (see below).
POST/strategies$0.01 USDCArm a strategy (SOL → lamports; stop-loss required).
POST/snipe$0.05 USDCForce a snipe on { mint, symbol?, agentId? }.
POST/strategies/:id/disarm$0.005 USDCDisable a strategy.
POST/positions/:id/close$0.005 USDCSchedule an exit; the next sweep sells it.

Prices are the defaults (USDC atomic units, 6 decimals); override via deps.prices = { arm, snipe, disarm, close }.

Gating turns on when a merchant wallet is configured — deps.payTo.solana or the X402_PAY_TO_SOLANA env (a Base lane is available via X402_PAY_TO_BASE). When no payTo is set, the mutating routes still mount but answer 503, so the server boots cleanly for local/dev without payment config.

The Solana lane also needs a facilitator sponsor fee-payer — set X402_FEE_PAYER_SOLANA (or deps.feePayer). Without it the Solana lane self-disables (falling back to the Base lane, or the 503 guard if that's the only lane) rather than failing requests, and logs a one-time warning at boot.

import { serve } from '@three-ws/agent-sniper/api';

await serve( { payTo: { solana: process.env.X402_PAY_TO_SOLANA } }, { port: 8787 }, );


Web console

serve also ships a built-in operator dashboard — a single, dependency-free HTML file served from the same origin as the API, at / and /console. Open http://localhost:8787 and you get a live control room:

  • Live stats — buys, sells, candidates, armed strategies, in-flight queue and signal count, animated as they change, with time-since-last-signal.
  • Positions table — every position with entry, current value, and colored P&L (unrealized total in the header), plus a one-click Close that schedules an exit through the normal sell path.
  • Armed strategies — each policy with its stop-loss / take-profit / trailing tags, and a Disarm button.
  • Arm a strategy and Manual snipe forms with inline validation.
  • Live activity feed — the same engine screen events the CLI prints, streamed in with relative timestamps.
  • Designed loading / empty / error states, toasts, keyboard shortcuts (s snipe, n new strategy, r refresh, , settings, ? help), a disconnected banner, and full mobile responsiveness.

Reads are free. The mutating controls (arm, snipe, disarm, close) are x402-paid for external callers — so to drive them from your own console without paying yourself, set an operator token:

export SNIPER_ADMIN_TOKEN="$(opens

只显示了开头部分;其余内容请在仓库中阅读