AILEENA MACHINA

Tools · 2026.05.20

The CLI Was Always the Trading Floor

Two CLIs share a prompt and almost nothing else. The dev CLI moves files. The trader CLI moves money. The first tolerates a few hundred milliseconds; the second loses on them.

CLI · OpenClaw · Hermes · OKX

▸ Narrated reading · 2026.05.20

The CLI Was Always the Trading Floor

Press play for a narrated reading — English-accent female where available.

0:00
0:00

The Two CLIs

A CLI — command-line interface, the text prompt you type commands into — looks the same in both worlds: a blinking cursor over a black background, the muscle memory of for the last command, | to chain one tool into the next. But the physics underneath are different. A developer running git push can wait two seconds and lose nothing. A trader running cancel on a stale quote can wait two hundred milliseconds and lose everything. The interface is identical. The deadline isn't.

That one difference shapes the whole tooling stack. The dev CLI is built for ergonomics — readable output, helpful errors, sensible defaults, retries that recover gracefully. The trader CLI is built for the opposite — silent when things go right, terse on errors, predictable latency, and retries that fail loud, because a retry on an already-filled order means you're now holding double the position. Both are CLIs. They are not the same tool.

Normal-Case CLI: The Universal Joint

The normal-case CLI is the one most developers know intimately. git, npm, kubectl, aws, gh, ssh, jq, curl. Each does one thing, exposes it through flags and stdin (the input you pipe in), and prints text on stdout (its output) that another tool can read. The shell is the universal joint between them. The script is the unit of repeatability.

When you trace what the dev CLI is actually doing, it's file manipulation: read a config, transform a tree, write a file, call an API, log the result. The latency budget is generous. git status on a large repo can take half a second and nobody notices. kubectl apply can take five seconds and the deploy still ships on time. The CLI's job here is to be the surface for automation — not to be fast in absolute terms, but to be scriptable, composable, and observable. The terminal is the surface on which knowledge work compiles.

The dev CLI in one line

# Normal-case: pipe stages are forgiving
gh pr list --json title,number | jq '.[] | select(.title | test("WIP"))' | head -5

Trading-Case CLI: Why Traders Refuse to Leave the Terminal

Walk into any prop shop, or any one-person Solana-bot operation, and you'll find a terminal multiplexer — tmux, zellij, kitty (tools that split one terminal into many panes) — with eight panes spread across two monitors. One pane runs a price stream. One runs the strategy log. One has an open shell on the exchange's API, ready to flatten the book if something goes wrong. Usually there's no chart at all. The chart is a downstream artifact. The CLI is the floor.

The reason isn't romance. It's five concrete things the terminal gives you that a GUI almost never matches.

Latency. A GUI adds a render frame — 16ms at 60Hz, often 30–80ms in practice once event loops, state diffs, and animations get involved. A direct HTTP call from the shell costs you whatever the network costs, and nothing more. In a market-making cancel race, that difference is the spread.

Composability. A trader doesn't want one app that does everything. They want a price feed (Pyth Hermes), a strategy script (anything from awk to a Rust binary), an exchange client (OKX, Drift, Hyperliquid), and a logger (stdout to a file). Pipes wire them all together in one line.

Headlessness. The real workload runs on a colocated VPS or a bare-metal box near the exchange. No display, no mouse, often no display server installed at all. A CLI is the only interface that survives the move from laptop to remote.

Audit. Every command leaves a line in shell history. Every script run leaves a log file. When the P&L moves and you have to explain why, a CLI session is the cleanest forensic trace you can ask for. A GUI session is a memory.

Automation. A trader's real edge — outside the handful of firms with genuine alpha — is automation: the strategy that wakes up at 03:14 and hedges a position no human should be awake to think about. Cron, systemd timers, agent runtimes. None of that lives in a GUI.

The Trader's Toolbox in 2026

The set of CLIs a working crypto trader actually has installed has narrowed and deepened over the last two years. The list of categories is short. The list of implementations is long.

CategoryWhat it doesRepresentative CLIs
Price feedPull or stream live prices off a chain-agnostic oraclePyth Hermes (HTTP/SSE), Switchboard, Chainlink Data Streams
Exchange client (CEX)Place, cancel, query orders against a centralised venueOKX V5 API, Binance, Bybit, Hyperliquid CLI
On-chain clientSign and submit transactions against a chainsolana CLI, foundry/cast, viem, anchor
AggregatorRoute a swap or order across multiple venuesJupiter, 1inch, Kamino router, DFlow, Titan (meta-aggregator)
Bot frameworkStrategy harness, paper trading, exchange adaptersHummingbot, Freqtrade, Jesse, Drift Vaults SDK
Agent runtimeLong-running, scheduled, multi-channel automation glueOpenClaw, Claude Agent SDK, OKX AI Agent, Hummingbot AI
ObservabilityRead positions, P&L, fills, drawdown from the shelljq + curl, custom dashboards, DefiLlama API

Three of these — Pyth Hermes for the price feed, OpenClaw as the agent runtime, OKX for execution — are the backbone of a workable single-trader stack. Wired through a thin CLI, they go from a list of services to a single command line.

Hermes: The Pull Oracle as a Curl Target

Hermes is the Pyth Network price service — the thing you ask for a current price. It speaks HTTP, SSE, and WebSocket. It serves two things: an off-chain JSON view of the latest aggregated price, and a binary VAA (a signed price-update blob you can post on-chain) to push that price into a Pyth oracle contract. Two interfaces, one service. For a CLI-first trader, the one that matters is the JSON.

Hermes from the shell

# Latest SOL/USD — Pyth feed ID e62df...d6
curl -s 'https://hermes.pyth.network/v2/updates/price/latest?ids%5B%5D=ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d' \
  | jq '.parsed[0].price | {price: (.price | tonumber * pow(10; .expo)), conf, ts: .publish_time}'

# Streaming the same feed (SSE) — pipe straight into a strategy
curl -sN 'https://hermes.pyth.network/v2/updates/price/stream?ids%5B%5D=ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d' \
  | grep --line-buffered '^data:' \
  | sed 's/^data: //' \
  | jq -c '.parsed[0].price'

The streaming endpoint is the one that changes the shape of the strategy. Instead of polling every 100ms and burning through your request budget, the strategy script reads stdin one line at a time and reacts to each new tick. The price feed becomes a generator. The strategy becomes a transformer. The exchange call becomes a sink. Three Unix processes, one pipe.

What Hermes gives you in return is honesty about freshness. Each price object carries a publish_time and a conf (a confidence band — how sure Pyth is about the number). A strategy that ignores either is making an assumption the API flatly refuses to make. For a market-making loop, the conf band is part of the decision: widen your quote when conf widens, pull the quote when publish_time drifts past a threshold.

OpenClaw: An Agent Runtime That Lives in the Terminal

OpenClaw is an agent runtime (a host process that lets an LLM reason and call tools) that runs locally, holds long-lived workspaces and identities, schedules tasks on cron, and routes messages across channels (Telegram, web, shell). For trading, four primitives matter: workspaces (a per-strategy directory with its own state), skills (small scripts the agent can invoke), cron (timed triggers), and subagents (parallel reasoning workers under a coordinator).

What makes it a fit for trading specifically is that it isn't a chat product first. It's a long-running process with a CLI entrypoint. You can openclaw run a skill, register a heartbeat, and walk away. The agent reasons about what to do; the skill it ends up calling is just a script. That separation — an LLM reasoning over a fixed set of tools — is the actual agent pattern, and it maps onto the trader's stack cleanly: the LLM picks the order shape, the skill places the order through OKX or Solana.

An OpenClaw skill is a script the agent can call

~/.openclaw/skills/
├── pyth-quote/
│   ├── skill.json        # name, args schema, when to use
│   └── run.sh            # the actual executable
├── okx-place-order/
│   ├── skill.json
│   └── run.ts
└── solana-cancel-all/
    ├── skill.json
    └── run.rs

The skill manifest tells the agent when to reach for the tool. The agent fills in the arguments. The executable runs in a sandboxed subprocess and returns JSON on stdout. From the agent's side, it looks like any other tool call. From the trader's side, it's a script they can run by hand with the same arguments — which is exactly what an audit trail needs.

OKX as the Execution Sink

OKX exposes a V5 REST API and a parallel WebSocket. For agent-driven trading, REST is the simpler surface: every order is one HTTP call with an HMAC signature (a cryptographic stamp proving the request is yours) derived from the timestamp, method, path, and body. The same shape works for spot, perpetuals, options, and margin — only the instId and tdMode change. OKX is also one of the first majors to publish an explicit AI Agent SDK that wraps order placement, balance queries, and position management in a typed interface meant to be called by an LLM.

OKX V5 — sign-and-send in 15 lines

import crypto from 'node:crypto';

const ts = new Date().toISOString();
const body = JSON.stringify({
  instId: 'SOL-USDT-SWAP',
  tdMode: 'cross',
  side: 'buy',
  ordType: 'limit',
  px: '142.50',
  sz: '10',
});
const prehash = ts + 'POST' + '/api/v5/trade/order' + body;
const sign = crypto.createHmac('sha256', process.env.OKX_SECRET!)
  .update(prehash).digest('base64');

await fetch('https://www.okx.com/api/v5/trade/order', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'OK-ACCESS-KEY': process.env.OKX_KEY!,
    'OK-ACCESS-SIGN': sign,
    'OK-ACCESS-TIMESTAMP': ts,
    'OK-ACCESS-PASSPHRASE': process.env.OKX_PASSPHRASE!,
  },
  body,
});

The reason this is fifteen lines and not five hundred is that the protocol is small. Signing is HMAC-SHA256. There's no order-state machine hidden in the SDK that the API doesn't also expose. Once you've wrapped this snippet as an OpenClaw skill, an agent can place orders just by emitting a JSON argument object — no exchange-adapter framework required.

The Thin Wrapper: Wiring It Together

The whole architecture fits in one diagram: a price feed (Hermes) on the left, an execution sink (OKX or a Solana RPC) on the right, an agent runtime (OpenClaw) in the middle as the coordinator, and a thin TypeScript CLI as the glue. The CLI does almost nothing — it parses one command, hands the work to a skill, prints the result. The agent does the reasoning. The exchange and the oracle do the work.

tradectl — the thin CLI

#!/usr/bin/env node
// tradectl: a 60-line broker between price, agent, and exchange.

import { spawnSync } from 'node:child_process';

const [, , cmd, ...rest] = process.argv;

const skills = {
  // 1. Read a Pyth feed via Hermes.
  quote: async (feedId: string) => {
    const r = await fetch(
      `https://hermes.pyth.network/v2/updates/price/latest?ids%5B%5D=${feedId}`
    );
    const j = await r.json();
    const p = j.parsed[0].price;
    return { px: Number(p.price) * 10 ** p.expo, conf: Number(p.conf), ts: p.publish_time };
  },

  // 2. Ask OpenClaw for a decision.
  decide: (ctx: object) => {
    const r = spawnSync('openclaw', ['ask', '--skill', 'sol-momentum'], {
      input: JSON.stringify(ctx), encoding: 'utf8',
    });
    return JSON.parse(r.stdout);
  },

  // 3. Hand the decision to OKX (or Solana — same shape).
  fill: async (order: { side: string; px: string; sz: string }) => {
    const okx = await import('./okx-skill.js');
    return okx.placeOrder({ instId: 'SOL-USDT-SWAP', tdMode: 'cross', ...order });
  },
};

(async () => {
  if (cmd === 'tick') {
    const q = await skills.quote(rest[0]);
    const d = skills.decide({ symbol: 'SOL', ...q });
    if (d.action === 'noop') return console.log('noop', q);
    const f = await skills.fill(d.order);
    console.log(JSON.stringify({ q, d, f }));
  }
})();

The script is boring on purpose. Every line is a function call into a service that already exists; there's no strategy logic, no exchange adapter, no order-state machine. Three external systems do the work. The CLI is just the interview between them.

Composing it as a pipe

# Stream live SOL ticks → run a decision per tick → log JSON
curl -sN 'https://hermes.pyth.network/v2/updates/price/stream?ids%5B%5D=ef0d...56d' \
  | grep --line-buffered '^data:' \
  | sed 's/^data: //' \
  | xargs -I{} tradectl tick {}
The agent doesn't replace the CLI. It becomes another stage in the pipe — one that happens to reason.

Why Thin Wins Over Monolithic

The temptation in trading-bot design is to cram the whole universe into one process: strategy, risk, exchange adapter, paper-trading sandbox, dashboard. Hummingbot does this. Freqtrade does this. They're good products with a real audience. They're also enormous and opinionated, and swapping out their orderbook reader, their exchange client, or their notification layer is real work.

The thin-CLI argument is the opposite: write almost nothing yourself, and leave the seams visible. The price feed is a separate process you can replace. The agent runtime is a separate process you can replace. The exchange client is a separate file. When the OKX V5 API changes — and it does — you edit one skill and nothing else. When Pyth ships a new endpoint, you point at it. When OpenClaw releases v2, the rest of the pipe doesn't notice. The cost of all this looseness is that there's no graphical dashboard out of the box. The payoff is that the entire system fits in your head.

AxisMonolithic frameworkThin CLI + agent
Setup timeMinutes (a Docker image)Hours (gluing services)
Swap a price sourceFork the adapterEdit one line of curl
Swap an exchangeAdapter rewrite + test harnessSwap one skill file
Add an LLM in the loopPlugin system, often retrofittedAlready there — it is the agent
Audit a failed tradeLogs, dashboards, tracesReplay the pipe with the same input
Strategy library sizeLarge (curated)Small (your own)
Best forRetail / paper-trading explorationProduction single-trader or small team

The Other Two Patterns: MCP Servers and Codegen Skills

The thin-CLI / monolithic-framework split isn't the only axis. A third tradition took shape in 2026 around structured agent-tool protocols — and it solves real problems the thin CLI ignores. Two flavours are worth naming on their own: MCP servers, and codegen skills. Neither competes with the CLI pattern. They sit at different points in the stack.

MCP — Model Context Protocol. An Anthropic-authored open protocol for handing tools to LLMs in a standardized way. The shape is client/server over stdio (or HTTP): an MCP server declares a list of tools, each with a name, a JSON schema for its arguments, and a callback. The LLM client — Claude Desktop, Cursor, Zed — discovers the tools, picks one, asks the user for permission, and runs it. The server returns a structured result. The QuickNode Solana MCP server is the canonical demo: register getBalance, getTokenAccounts, simulateTransaction as MCP tools backed by Solana Kit, and Claude can call them in chat with no shell glue at all.

The Solana ecosystem has settled on a small set of MCP-shaped toolkits. Solana Agent Kit (SendAI) ships 60+ pre-built actions covering tokens, NFTs, and DeFi. GOAT (Crossmint) ships 200+ plugins across Solana and EVM. ElizaOS bundles MCP into a persistent-agent runtime with Twitter, Discord, and Telegram channels baked in. Rig (a Rust framework) goes after the opposite case — the lowest-latency path from LLM decision to on-chain execution, for trading loops that can't afford the Node round-trip.

Codegen skills — the Titan pattern. @titanexchange/titan-api-skill is a different shape entirely. It isn't a runtime. It's a Claude Code skill — a documented bundle that ships with the protocol's quirks already encoded, so an LLM can write correct integration code on the first try. The quirks are specific and ugly: WebSocket + MessagePack (a compact binary alternative to JSON) instead of JSON-REST, BigInt for amounts, Uint8Array for token mints via bs58.decode(), deeply nested parameter objects where slippageBps lives in swap and intervalMs lives in update. Skip a nesting level and the LLM writes plausible-looking code that fails at runtime.

What the Titan skill protects against

// The LLM, unaided, writes this — and it fails silently:
client.newSwapQuoteStream({
  inputMint: "So111...",       // ✗ string, should be Uint8Array
  outputMint: "EPjF...",
  amount: 100_000_000,          // ✗ number, should be BigInt
  slippageBps: 50,              // ✗ at root, should be nested in .swap
});

// With the skill loaded, it writes this — and it works:
client.newSwapQuoteStream({
  swap: {
    inputMint:  bs58.decode("So111..."),
    outputMint: bs58.decode("EPjF..."),
    amount:     BigInt(100_000_000),
    slippageBps: 50,
  },
  transaction: { userPublicKey: bs58.decode(pubkey) },
});

Why Titan needed a codegen skill is a clue to the broader pattern. Titan is a meta-aggregator — its Argos router sits on top of Jupiter, OKX's router, and DFlow, scoring all of them on the same simulated block and routing through whichever wins. Public benchmarks have Argos beating competing engines on 87% of swap comparisons since it launched in September 2025. That sophistication earned it a wire format that isn't REST — and the moment a protocol leaves the well-trodden REST path, LLMs start writing broken integration code. The skill exists so the model doesn't have to guess.

Titan also ships llms.txt and llms-full.txt at their docs root — a 2025 convention for serving LLM-optimized documentation that GitBook now auto-generates. The fact that this is now a default tells you something specific: in 2026, the main reader of API docs is increasingly an agent, not a human scanning a sidebar.

Three Patterns, Three Deadlines

The clean way to read the field is that each pattern wins on a different deadline.

The thin CLI wins on runtime. When the price feed ticks and a decision has to land in milliseconds, a Unix pipe beats a permission dialog. There's no model call in the hot path; the LLM, if it's there at all, sits in a slower outer loop tuning parameters.

MCP wins on operator ergonomics. Natural-language tool use from a chat client, with a permission gate on every action and an audit trail of every approval. The fit is the off-hours operator — "close half the SOL perp" typed into Claude Desktop, with the model picking the OKX-place-order tool and waiting for a yes before it fires.

Codegen skills win on integration time. Getting a tricky protocol — Titan's MessagePack, a non-REST exchange, a Solana program with byte-packed account layouts — wired up correctly without spending a week debugging the wire format. The skill pays for itself in saved engineering hours, not runtime latency.

A serious stack uses all three. The thin CLI runs production. MCP runs the operator console. The codegen skill helps you write the thin CLI in the first place. The mistake is forcing one pattern to do all three jobs.

AxisThin CLI + agentMCP serverCodegen skill (Titan)
What it isPipe of processesStdio/HTTP tool registryDoc bundle + examples
Where it runsVPS, headless, 24/7Local, beside Claude/CursorInside the IDE, design-time
Latency floorNetwork + subprocess (10ms)LLM call + permission (1s+)N/A — not in the hot path
LLM roleSlow outer brainInteractive operatorCode author
PermissioningFilesystem perms, env varsPer-tool approval promptNot applicable
Best forProduction trading loopOperator console, ad-hocNon-REST or quirky wire format
Representativetradectl + OpenClawSolana Agent Kit, GOAT, ElizaOS@titanexchange/titan-api-skill
Failure modePipe dies silentlyUser clicks-through dialogSkill goes stale on API change

The Titan column is the most architecturally interesting, because it tells you what the API design itself has been up to. Argos needed MessagePack for the byte savings on streaming quotes. MessagePack forced BigInt and Uint8Array into the client. Those two requirements put the integration out of reach for an LLM writing TypeScript from memory. The skill is the protocol author admitting that the wire format is now an LLM-ergonomics problem — and shipping the fix in the same repo. That admission is the genuinely new thing in 2026, more than MCP or any specific agent kit. The protocol layer and the agent layer have noticed each other.

The Three Operating Postures

Watch how this style of stack gets used in the wild and three postures keep recurring. They're not exclusive — a trader will switch between them inside the same week — but they shape which tools get reached for.

Interactive. Manual order entry from the shell. tradectl quote ef0d... | tradectl fill --sz 10. No agent involved. The trader is the strategy. The CLI is just faster than a UI.

Scheduled. Cron triggers a skill. Every five minutes, check the funding rate; every day at 16:00 UTC, rebalance to neutral. OpenClaw's heartbeat is a clean fit here. The agent does light reasoning — "is the funding rate above 0.03%, and if so, what size?" — and the CLI executes.

Streaming. The Hermes SSE stream feeds tradectl directly. The strategy is a real-time reaction to ticks. Here the agent usually isn't in the hot path — an LLM call costs hundreds of milliseconds — but it sits in a slower outer loop, deciding the regime: trend, range, dislocation, halt. The inner loop is plain code.

A common setup is two loops running at different speeds. The inner loop — deterministic, scoped to milliseconds — fires on every tick. The outer loop — LLM-driven, scoped to seconds — looks at the state once a minute and writes parameters into a file the inner loop reads. The agent is the slow brain; the script is the fast hand. The CLI is the table they share.

What the Agent Layer Actually Buys You

A fair objection: if the inner loop is plain code, what does the agent layer actually earn? Three answers, ordered by how often they pay off.

Operator interface. The most underrated win. Instead of editing config files at 03:00 while a position is bleeding, you message the agent — "close half the SOL perp" — and it calls the skill. Telegram, terminal, web; OpenClaw routes them all into the same workspace. This is the part that survives once the novelty wears off.

Regime classification. An LLM reading a thirty-minute window of ticks plus the latest funding rate, open interest, and news headlines is, in practice, better than most heuristics at calling whether the market is trendable or stuck in a stop-hunt range. It isn't better than a human at this. It's much better than a human who's asleep.

Failure narration. When a skill errors, the agent can read the stack trace and the last hundred lines of state and write a plain-English post-mortem in the same channel where you were chatting with it. The gap between "ERR 50061" and "OKX rejected the order because tdMode was cross but the account is set to isolated" is the gap between a trader who recovers in three minutes and one who's offline for an hour.

What This Doesn't Solve

The thin-CLI pattern isn't magic. It doesn't give you alpha. It doesn't give you a colocated server in NY4 (a major financial-colocation datacenter near New York) or AWS Tokyo. It doesn't protect you from a flash crash, a custodial outage, or your own conviction. Three specific things it openly punts on:

Latency at the absolute edge. Wrapping every step in a subprocess call costs microseconds you won't notice and milliseconds you might. For a sniper bot reaching for a Jito bundle, the inner loop should be a single Rust binary holding open gRPC sockets, not a Node script. The CLI pattern wins for systematic / market-making style work, not for race-to-block sniping.

Risk management. A position-size check, a max-drawdown circuit breaker, a kill switch — those have to live in a process that cannot be interrupted by an LLM hallucination. The pattern: risk is a separate watcher script the agent has no permission to override. The agent can ask. The watcher answers.

Cross-venue settlement. Moving collateral between OKX and a Solana DEX is a multi-step, multi-chain dance that no current agent runtime handles well end to end. The honest answer is to script it explicitly and have the agent call the script when the strategy needs it — not to expect the agent to plan the bridge route on its own.

Where This Goes

The terminal didn't lose to the GUI in trading; it absorbed it. Every chart on a Bloomberg or a TradingView panel is a sidecar to a CLI session somewhere. The new layer — agent runtimes that hold context, MCP servers that gate tool use behind permissions, codegen skills that translate quirky wire formats — is doing the same thing the shell did: becoming the surface on which automation compiles. OpenClaw, Hermes, OKX's AI Agent SDK, Solana Agent Kit, GOAT, Titan's skill, and the dozen similar runtimes shipping in 2026 aren't competing with the CLI. They're extending it at different points in the stack — runtime, console, design-time.

The honest version of the "will AI replace traders" question is sharper than the question itself. It has already replaced the manual-clicks layer for anyone willing to write a script — and that was already most serious traders. What it adds, when it's wired right, is a slow brain that doesn't sleep, an operator interface that doesn't need a dashboard, and the ability to narrate its own failures. That isn't a new product category. It's another stage in the pipe.

Hermes is the generator. OKX is the sink. OpenClaw is the slow brain.
The CLI is the table they all sit at.

— AILEENA MACHINA / 2026

References

  1. Pyth Network — Hermes API documentation
  2. Pyth Network — Price Feed IDs (cross-chain catalog)
  3. Pyth Hermes — REST + SSE reference (hermes.pyth.network)
  4. OKX V5 API — Trading endpoints (place order)
  5. OKX V5 API — Authentication (HMAC-SHA256 signing)
  6. OKX AI Agent SDK — overview
  7. Anthropic — Claude Agent SDK (general agent runtime patterns)
  8. Solana CLI — getting started (docs.solana.com)
  9. Foundry — cast (the CLI for Ethereum RPC and signing)
  10. Jupiter API — Swap endpoint (the aggregator behind most Solana CLIs)
  11. Hyperliquid CLI — official client
  12. Hummingbot — open-source market-making framework
  13. Freqtrade — open-source crypto trading bot
  14. Drift Protocol — Vaults SDK (Solana perp DEX)
  15. Jito — Low-latency transaction send and bundles
  16. Pyth — Sponsored feeds and the pull-oracle model (whitepaper)
  17. Titan Developer Docs — AI / LLM Integration overview
  18. @titanexchange/titan-api-skill — Claude Code skill for Titan’s WebSocket + MessagePack protocol (npm)
  19. What Is Titan? The Meta DEX Aggregator (Backpack Learn)
  20. Titan Exchange — DefiLlama protocol stats
  21. llms.txt — the LLM-optimized documentation convention (spec)
  22. Model Context Protocol — official specification (modelcontextprotocol.io)
  23. How to Build a Solana MCP Server for LLM Integration (QuickNode)
  24. How to Build Solana AI Agents in 2026 — layered architecture guide (Alchemy)
  25. Solana Agent Kit (SendAI) — 60+ pre-built actions (GitHub)
  26. GOAT SDK (Crossmint) — 200+ plugins across Solana and EVM (GitHub)
  27. ElizaOS — persistent agent runtime with multi-channel routing (GitHub)
  28. Rig — Rust framework for low-latency LLM-to-on-chain execution
  29. awesome-solana-ai — Solana Foundation curated AI tooling list
← Back to Archive
← dispatch