pump-fun-compose
SkillWeb & browsingAgent-level loops that compose pump-fun (read) and pump-fun-trade (sign).
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the pump-fun-compose skill
About this capability
Open-source 3D AI agent framework — GLB/glTF avatars with LLM brains, memory, emotions, and autonomous payments. MCP server · x402 · Solana/EVM · Three.js. Embed anywhere as a web component. Character studio, animation gallery, OAuth 2.1. Browser-native.
What this skill tells your AI
The instructions your AI receives, as published by nirholas/three.ws in examples/skills/pump-fun-compose/SKILL.md and read by ahel’s review.
Agent-level loops that compose pump-fun (read) and pump-fun-trade (sign).
| Tool | Loop |
|---|---|
researchAndBuy | search → vet (curve, holders, creator) → quote → buy |
autoSnipe | poll new tokens → vet → buy until session cap |
copyTrade | watch a wallet's recent buys → mirror with size scaling |
rugExitWatch | watch held mints → sell on concentration or dev-sell triggers |
Filters (manifest.config)
minHoldersForBuy— reject thin booksmaxTopHolderPct— reject whale-controlled suppliesrejectIfCreatorRugCount— reject repeat ruggersexitOnConcentrationPct/exitOnDevSellPct— exit triggerssessionSpendCapSol/perTradeSol— hard spend caps
Args supported by every loop
dryRun: true— vet/quote runs,buyToken/sellTokenare skipped andsig: nullis returned. Spend cap still ticks so a dry-run terminates the same way a live one would. Use it to validate filters before going live.sessionId: "<stable-string>"— persistsseen/mirrored/spent/exitedtoctx.memory(in-processMapfallback). Reusing the same id resumes a prior session — preventing a crash mid-loop from re-spending up to the cap.signal: AbortSignal— every poll, sleep, inner-loop, and outer-loop checkssignal.aborted. Stop is responsive (≤ ~1 RPC call) regardless ofpollMs.onProgress(evt)— called on every state change with{ type, mint?, sig?, spent?, reason? }. Drive a live UI off it.
The result data.reason indicates why the loop exited: 'aborted' | 'duration' | 'cap' | 'all-exited'.
Wiring
The host runtime injects:
ctx.skills.invoke('skill.tool', args)— sibling-skill callsctx.wallet— used by the trade skill (this one never touches keys directly)ctx.memory.note— every action is auditable
Composition example
await ctx.skills.invoke('pump-fun-compose.autoSnipe', { durationSec: 600 });
// then babysit positions
await ctx.skills.invoke('pump-fun-compose.rugExitWatch', {
mints: heldMints,
durationSec: 3600,
});
Signals
- GitHub stars
- 114
- Forks
- 29
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
pump-fun-compose- Source
- github.com/nirholas/three.ws