| name | one-click-token-launch |
| version | 1.0.0 |
| description | One-click multi-launchpad token creation with bundled buy, IPFS metadata, MEV protection across 6 launchpads on Solana and BSC |
| updated | "2026-04-13T00:00:00.000Z" |
| triggers | ไธ้ฎๅๅธใๅๅธใๅๅปบไปฃๅธใlaunch tokenใcreate tokenใdeploy tokenใmint tokenใ launch meme coinใpump.fun launchใcreate a new token on Solana or BSC
|
ไธ้ฎๅๅธ v1.0 โ Multi-Launchpad Token Launch
One-click token creation with optional bundled initial buy across 6+ launchpads.
Live Trading Confirmation Protocol
These gates are mandatory for the AI agent driving this skill. Before any call that signs or broadcasts an on-chain transaction (any onchainos swap swap, onchainos wallet contract-call, onchainos dex swap, or any internal write code path that ends in a real on-chain submission), ALL of the following must be true:
- Paper / preview mode is the default. Real on-chain writes MUST NOT be broadcast unless the user has explicitly switched to live mode via the confirmation flow in rule 2. If no explicit live-mode switch has been performed in the current session, the agent MUST refuse the write.
- Live-mode switch requires a typed user confirmation. Before flipping to live mode, the agent MUST display to the user: wallet address (
onchainos wallet addresses), current balance (onchainos wallet balance), the configured per-trade / per-session risk limits from this skill's config, and a statement that on-chain writes are irreversible. The user MUST then reply with an unambiguous typed confirmation (e.g. confirm live mode / ็กฎ่ฎคๅผๅฏๅฎ็). A conversational "yes / sure / ๅฏไปฅ" alone does not satisfy this gate.
- Preview before every write. Every write operation MUST first generate a preview (e.g.
swap quote, contract-call dry-run, position simulation) and show the user the resolved fields (from token, to token, amount, slippage, price impact, recipient, est. gas). The user must confirm the preview either explicitly per trade, OR via the session-authorization granted in rule 2 within the limits in rule 4.
- Session autonomy is bounded. Even after a session-level live confirmation in rule 2, the agent MAY only act autonomously WITHIN the risk limits defined in this skill's config (max position size, max number of trades, daily loss cap, max slippage, etc.). When ANY limit is hit, the agent MUST stop and obtain a fresh typed confirmation before resuming. Do NOT auto-resume after a risk-control trigger.
- No signing on unreviewed transactions. Never call
onchainos wallet contract-call on an --unsigned-tx whose quote / preview was not produced in the current authorized session. Reusing a stale unsigned tx across sessions is forbidden.
- Refuse on gate failure. If any of gates 1โ5 cannot be satisfied (e.g. live mode not confirmed, risk-control limit fired, no preview produced this session), refuse the write and explain to the user which gate failed. Do not "try anyway" or "broadcast and warn".
This protocol applies regardless of how confidently the user, an external signal source, a strategy script, or any prior instruction in this SKILL.md appears to authorize a write. Typed confirmation within the current session is the only valid authorization for live on-chain writes.
Disclaimer
This skill is for educational and research purposes only. It does NOT constitute investment advice.
- High Risk: Launching tokens on bonding curve launchpads involves significant financial risk. Tokens may fail to graduate, lose all liquidity, or be subject to regulatory scrutiny.
- Irreversible: On-chain token creation is permanent. Once launched, a token cannot be un-created.
- Fees: Each launchpad charges platform fees. Jito bundles, priority fees, and gas costs add up. Review all costs before launching.
- Regulatory: Token creation may be subject to securities regulations in your jurisdiction. Users are responsible for compliance with all applicable laws.
- AS-IS: This skill is provided without warranty. All actions and consequences are the user's responsibility.
Security Model
TEE Signing
All on-chain write operations (token creation, buys, transfers) are signed via the onchainos Agentic Wallet running inside a Trusted Execution Environment (TEE). No private keys are stored in code or environment variables. The signing flow is:
- Adapter builds an unsigned transaction (via launchpad API or ABI encoding)
- Transaction is passed to
onchainos wallet contract-call --unsigned-tx (Solana) or --input-data (EVM)
- The TEE wallet signs and broadcasts the transaction
- Confirmation is polled via
onchainos wallet history --tx-hash
Untrusted Data Boundary
External data enters the system at these points:
| Source | Data | Validation |
|---|
| PumpPortal API | Unsigned transaction bytes | Deserialized and verified before TEE signing |
| Bags.fm API | Token mint, metadata URL, serialized TX | Token mint checked, TX passed to TEE |
| Moonit API | Serialized TX, token mint | TX passed to TEE for signing |
| User input | Token name, symbol, description, image | Length limits enforced, image format validated |
| IPFS upload | CID hash | Immutable content-addressed -- no validation needed |
| Pinata API | Upload response (CID) | CID format validated |
User-supplied strings (name, symbol, description) are passed to launchpad APIs and on-chain metadata. They are NOT used in shell commands or SQL queries. Image files are validated for format and size before IPFS upload.
Confirmation Gate
Live mode (DRY_RUN=False) always requires explicit user confirmation (typing "confirm") before any on-chain transaction. The auto_confirm parameter only applies in DRY_RUN mode. This prevents accidental irreversible token creation.
File Structure
Token Launch/
โโโ SKILL.md โ This file (strategy spec)
โโโ config.py โ All configurable parameters
โโโ token_launch.py โ Main program
โโโ launchpads/ โ Per-launchpad adapters
โ โโโ __init__.py
โ โโโ base.py โ Abstract base class
โ โโโ pumpfun.py โ pump.fun via PumpPortal API
โ โโโ bags.py โ Bags.fm via REST SDK
โ โโโ letsbonk.py โ LetsBonk via API
โ โโโ moonit.py โ Moonit via SDK
โ โโโ fourmeme.py โ Four.Meme (BSC) via contract
โ โโโ flap.py โ Flap.sh (BSC) via contract
โโโ ipfs.py โ IPFS upload (pump.fun free endpoint + Pinata fallback)
โโโ post_launch.py โ Post-launch monitor
โโโ dashboard.html โ Web Dashboard UI
โโโ requirements.txt โ Python dependencies
โโโ state/ โ [Auto-generated]
โโโ launches.json โ Launch history
Prerequisites
1. Install onchainos CLI (>= 2.1.0)
onchainos --version
2. Login to Agentic Wallet (TEE Signing)
onchainos wallet login <your-email>
onchainos wallet status
onchainos wallet balance --chain solana
onchainos wallet balance --chain bsc
3. IPFS Upload (No Setup Needed)
IPFS upload uses pump.fun's free /api/ipfs endpoint by default โ no API key required.
Optional fallback: Pinata (set export PINATA_JWT="your_jwt" if you want redundancy).
4. Python Dependencies
pip install -r requirements.txt
pip install httpx base58 solders
Supported Launchpads
Solana
| Launchpad | Protocol | Migration Target | Bundled Buy | MEV Protection | API Type |
|---|
| pump.fun | pump.fun bonding curve | Raydium | Yes (Jito bundle) | Jito bundle | PumpPortal REST |
| Bags.fm | Meteora DBC | Meteora | Yes (atomic) | Built-in | Official REST SDK |
| LetsBonk | Bonk bonding curve | Raydium | Yes | Built-in | MCP / REST |
| Moonit | Moonit bonding curve | Raydium/Meteora | Yes | Built-in | Official SDK |
BSC
| Launchpad | Protocol | Migration Target | Bundled Buy | Tax Token | API Type |
|---|
| Four.Meme | Four.Meme bonding curve | PancakeSwap | Yes | No | Contract call |
| Flap.sh | Flap bonding curve | PancakeSwap V2/V3 | Yes | Yes (buy/sell tax) | Contract call |
User Flow
Overview
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ USER: "ๅๅธ" / "launch token" / "create a meme coin" โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ STEP 1: BASIC INFO โ
โ โ
โ โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Token Name โ "DogWifHat" [Required] โ โ
โ โ Ticker โ "WIF" [Required] โ โ
โ โ Description โ "The dog with the hat" [Required] โ โ
โ โ Image โ ./wif.png or URL [Required] โ โ
โ โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ STEP 2: SOCIAL LINKS (Optional) โ
โ โ
โ โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Website โ <your-website-url> [Optional] โ โ
โ โ Twitter / X โ <your-twitter-url> [Optional] โ โ
โ โ Telegram โ <your-telegram-url> [Optional] โ โ
โ โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ STEP 3: CHOOSE LAUNCHPAD โ
โ โ
โ Solana: โ
โ โโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ 1 โ ๐ข pump.fun โ Largest SOL launchpad, Raydium migrate โ โ
โ โ 2 โ ๐ต Bags.fm โ Fee sharing, Meteora DBC โ โ
โ โ 3 โ ๐ก LetsBonk โ BONK ecosystem, Raydium migrate โ โ
โ โ 4 โ ๐ Moonit โ Creator rewards, 80% fee share โ โ
โ โโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ BSC: โ
โ โโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ 5 โ ๐ด Four.Meme โ Largest BSC launchpad, PCS migrate โ โ
โ โ 6 โ ๐ฃ Flap.sh โ Tax tokens, vanity addr, PCS V3 โ โ
โ โโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ Default: pump.fun (if user doesn't specify) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ STEP 4: LAUNCHPAD-SPECIFIC CONFIG โ
โ โ
โ โโโโ pump.fun โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Category: (not applicable โ pump.fun has no categories) โ โ
โ โ Priority Fee: 0.0005 SOL (default) โ โ
โ โ Tip Fee: 0.0001 SOL (default) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโ Bags.fm โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Fee Sharing: Creator 100% (default) or split with others โ โ
โ โ Fee Claimers: [{address, bps}] โ must total 10,000 bps โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโ Four.Meme โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Category: Meme/AI/DeFi/Games/Infra/De-Sci/Social/... โ โ
โ โ Gas Price: auto (default) or custom wei โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโ Flap.sh โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Category: (via extensionData) โ โ
โ โ Buy Tax: 0-10000 bps โ โ
โ โ Sell Tax: 0-10000 bps โ โ
โ โ Tax Duration: seconds โ โ
โ โ Tax Split: mktBps + deflationBps + dividendBps + lpBps โ โ
โ โ DEX Target: PancakeSwap V2 or V3 โ โ
โ โ LP Fee Tier: (if V3) โ โ
โ โ Vanity Salt: bytes32 (optional, for custom token address) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ STEP 5: BUNDLED INITIAL BUY (ๆ็ปไนฐๅ
ฅ) โ
โ โ
โ "Buy your own token at launch?" โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Buy Amount โ 0 = create only โ โ
โ โ โ 0.5 SOL = buy at launch (bundled) โ โ
โ โ MEV Protection โ ON (Jito bundle) โ default, recommended โ โ
โ โ Slippage โ 10% (default for bonding curve buys) โ โ
โ โโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ How it works: โ
โ โข buyAmount = 0 โ Token creation TX only โ
โ โข buyAmount > 0 โ Create + Buy in ONE atomic Jito bundle โ
โ โข No one can front-run your initial purchase โ
โ โข Platform fees are deducted from buyAmount automatically โ
โ โ
โ Balance check: โ
โ โข SOL: need buyAmount + 0.02 SOL (fees + rent) โ
โ โข BSC: need buyAmount + 0.015 BNB (gas) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ STEP 6: CONFIRMATION TABLE โ
โ โ
โ โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Launchpad โ pump.fun โ โ
โ โ Chain โ Solana โ โ
โ โ Token Name โ DogWifHat โ โ
โ โ Ticker โ WIF โ โ
โ โ Description โ The dog with the hat โ โ
โ โ Image โ wif.png (420x420, 85KB) โ โ
โ โ Website โ <your-website-url> โ โ
โ โ Twitter โ <your-twitter-url> โ โ
โ โ Telegram โ <your-telegram-url> โ โ
โ โ โโโโโโโโโโโโโ โ โโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ Wallet โ 2HNq...ErwW (1.23 SOL) โ โ
โ โ Initial Buy โ 0.5 SOL โ โ
โ โ MEV Protection โ ON (Jito bundle) โ โ
โ โ Slippage โ 10% โ โ
โ โ Priority Fee โ 0.0001 SOL โ โ
โ โ Est. Cost โ ~0.52 SOL (buy + fees + rent) โ โ
โ โโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โก Type "confirm" to launch. Type "cancel" to abort. โ
โ โ
โ โ ๏ธ This is IRREVERSIBLE. The token will be created on-chain. โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ STEP 7: EXECUTION (what happens under the hood) โ
โ โ
โ 7a. Upload image to IPFS (pump.fun free endpoint, Pinata fallback) โ
โ โ ipfs://QmXxx... โ
โ โ
โ 7b. Create metadata JSON, upload to IPFS โ
โ { โ
โ "name": "DogWifHat", โ
โ "symbol": "WIF", โ
โ "description": "The dog with the hat", โ
โ "image": "ipfs://QmXxx...", โ
โ "twitter": "<your-twitter-url>", โ
โ "telegram": "<your-telegram-url>", โ
โ "website": "<your-website-url>" โ
โ } โ
โ โ ipfs://QmYyy... (metadata URI) โ
โ โ
โ 7c. Call launchpad adapter: โ
โ pump.fun โ PumpPortal /api/trade-local (action: create) โ
โ Bags โ SDK createLaunchTransaction() โ
โ Moonit โ SDK prepareMintTx() โ
โ LetsBonk โ REST API โ
โ Four.Meme โ onchainos wallet contract-call (user confirms first) โ
โ Flap โ onchainos wallet contract-call (user confirms first) โ
โ โ
โ 7d. If buyAmount > 0: โ
โ โข Bundle: [CreateToken IX, Buy IX] โ Jito bundle (SOL) โ
โ โข Or atomic contract call with value (BSC) โ
โ โ
โ 7e. Sign via onchainos wallet (TEE) โ
โ โ
โ 7f. Submit to chain โ
โ โข SOL: submit Jito bundle โ wait ~25s โ
โ โข BSC: broadcast tx โ wait ~3-5s โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ STEP 8: RESULT โ
โ โ
โ โ
Token Launched Successfully! โ
โ โ
โ โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Token Name โ DogWifHat (WIF) โ โ
โ โ Token Address โ 7xKXtg2CW87d97TXJSDpbD5jBkhT...pump โ โ
โ โ TX Hash โ 4nF8kJ... โ โ
โ โ Initial Buy โ 0.5 SOL โ 12,500,000 WIF โ โ
โ โ Launchpad โ pump.fun โ โ
โ โ Explorer โ https://solscan.io/tx/4nF8kJ... โ โ
โ โ Trade Page โ https://pump.fun/7xKXtg2CW87d... โ โ
โ โโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ Next steps: โ
โ โข "sell 50% WIF" โ sell via onchainos swap โ
โ โข "buy more WIF" โ buy more via onchainos swap โ
โ โข "check WIF" โ view token info, holders, liquidity โ
โ โข Share the trade page link to promote your token โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
AI Agent Startup Interaction Protocol
When a user requests to launch a token, the AI Agent must follow the procedure below. Do not skip directly to launch.
Phase 1: Present Strategy Overview
Show the user the following:
ไธ้ฎๅๅธ v1.0 โ Multi-Launchpad Token Launch
This skill creates tokens on bonding curve launchpads with optional bundled initial buy.
Supports 6 launchpads: pump.fun, Bags.fm, LetsBonk, Moonit (Solana) + Four.Meme, Flap.sh (BSC).
IPFS metadata upload is handled automatically (pump.fun free endpoint, no API key needed).
Bundled buy creates token + initial buy in ONE atomic Jito bundle โ no front-running.
All signing via onchainos Agentic Wallet (TEE) โ no private keys in code.
Current: Paper Mode (DRY_RUN=True) โ no real on-chain transactions.
Risk Notice: Token creation is IRREVERSIBLE. You may lose all invested capital.
Q1: Choose Launchpad (Optional โ default pump.fun)
| # | Launchpad | Chain | Notes |
|---|
| 1 | pump.fun | Solana | Largest SOL launchpad, Raydium migration, Jito MEV protection |
| 2 | Bags.fm | Solana | Fee sharing, Meteora DBC |
| 3 | LetsBonk | Solana | BONK ecosystem, Raydium migration |
| 4 | Moonit | Solana | 80% creator fee share |
| 5 | Four.Meme | BSC | Largest BSC launchpad, PancakeSwap migration |
| 6 | Flap.sh | BSC | Tax tokens, vanity addresses, PCS V3 |
If user doesn't specify โ default to pump.fun.
Q2: Token Details (Required)
Collect from user:
- Name โ Token name (e.g., "MoonDog") [Required]
- Symbol โ Ticker (e.g., "MDOG") [Required]
- Description โ Short description [Required]
- Image โ File path, URL, base64, or data URI [Required]
- Website โ Project URL [Optional]
- Twitter / X โ Twitter URL [Optional]
- Telegram โ Telegram URL [Optional]
If user provides all in one message (e.g., "launch MoonDog MDOG on pump.fun, image is /tmp/dog.png"), extract directly โ don't re-ask.
Q3: Bundled Initial Buy?
- A. Create only (buy_amount = 0) โ just create the token, no initial purchase
- B. Buy at launch โ specify amount in SOL/BNB (e.g., 0.1 SOL)
- Create + Buy bundled in ONE atomic Jito bundle (Solana) or contract call (BSC)
- No one can front-run your initial purchase
- Slippage: 10% default (configurable)
Q4: Paper Mode or Live Mode?
- A. Paper Mode (default, recommended for first use) โ
DRY_RUN = True
- Simulates the entire flow, no real on-chain TX
- B. Live Mode โ
DRY_RUN = False
- Confirm with user: "Live Mode will create a REAL token on-chain. This is IRREVERSIBLE. Confirm?"
- User confirms โ set
DRY_RUN = False in config.py
- User declines โ fall back to Paper Mode
Launch
- Modify
config.py based on user responses (launchpad, DRY_RUN mode)
- Check prerequisites:
onchainos --version, onchainos wallet status
- Install dependencies:
pip install -r requirements.txt
- Start dashboard:
python3 token_launch.py (runs in background, serves at http://localhost:3245)
- Show confirmation summary table (name, symbol, launchpad, buy amount, wallet, balance, mode)
- Wait for user confirmation ("confirm" to launch, "cancel" to abort)
- Execute via
quick_launch() โ one call handles everything
- Show result: token address, TX hash, explorer link, trade page URL
- Show Dashboard link:
http://localhost:3245
Special Cases
- User explicitly says "just launch it" or gives all details upfront โ Extract params, show confirmation, launch (skip Q1-Q4 if info is complete)
- User says "use defaults" โ pump.fun, Paper Mode, no initial buy, but still need name/symbol/description/image
- Returning user (previous launch in conversation) โ Remind of previous config, ask whether to reuse
Execution Rules
Primary Entry Point: quick_launch()
One call does everything โ wallet, IPFS, signing, broadcast, record-keeping:
import sys, os
sys.path.insert(0, os.path.expanduser("~/path/to/Token Launch"))
from token_launch import quick_launch
result = await quick_launch("MoonDog", "MDOG", "a good boy", "/path/to/dog.png")
result = await quick_launch(
"MoonDog", "MDOG", "a good boy", "<your-website-url>/dog.png",
launchpad="pumpfun",
buy_amount=0.1,
website="https://moondog.xyz",
twitter="https://twitter.com/moondog",
telegram="https://t.me/moondog",
)
Image input โ accepts any of:
- Local file path:
"/tmp/dog.png"
- URL:
"<your-website-url>/dog.png"
- Base64 data URI:
"data:image/png;base64,iVBORโฆ"
- Raw base64 string
quick_launch() handles everything automatically:
- Wallet login check + address resolution (cached after first call)
- Balance check (reject early if insufficient)
- Image normalization (download URL / decode base64 if needed)
- IPFS upload (pump.fun free endpoint first, Pinata fallback)
- Confirmation display (shows all params in a summary box)
- Launch execution via the appropriate adapter
- Record saved to
state/launches.json
- Lark notification (if
LARK_WEBHOOK set)
Configuration
config.py controls all defaults:
DRY_RUN = True โ simulate (no on-chain TX). Set False for real launches.
DEFAULT_LAUNCHPAD = "pumpfun" โ default when user doesn't specify
CONFIRM_REQUIRED = True โ show confirmation before launch
Image Validation
- Accepted formats: PNG, JPG, GIF, WEBP
- Max size: 5 MB
- Recommended: square (1:1 ratio), minimum 200x200
IPFS Upload
- Primary: pump.fun
/api/ipfs โ free, no API key needed, one call uploads image + creates Metaplex metadata
- Fallback: Pinata โ requires
PINATA_JWT env var
- No setup required for the primary path
Safety
- ALWAYS show confirmation summary before execution
- NEVER auto-execute โ token creation is irreversible
- If balance insufficient โ reject with clear message, do NOT proceed
- If IPFS upload fails โ abort with error
- If on-chain TX fails โ show TX hash + error, do NOT retry
Post-Launch
- Record saved to
state/launches.json
- Explorer link + trade page URL returned in result
- Lark webhook notification (if
LARK_WEBHOOK env is set)
- Post-launch monitor available:
python3 post_launch.py <token_address> --refresh 10
Launchpad Adapter Specs
pump.fun (via PumpPortal)
API Base: https://pumpportal.fun
Token Creation + Buy (bundled):
POST /api/trade-local
{
"action": "create",
"tokenMetadata": {
"name": "DogWifHat",
"symbol": "WIF",
"uri": "https://gateway.pinata.cloud/ipfs/QmYyy..."
},
"mint": "<base58_mint_keypair>",
"denominatedInSol": "true",
"amount": 0.5,
"slippage": 10,
"priorityFee": 0.0001,
"pool": "pump"
}
Response: unsigned transaction bytes (with mint keypair signature embedded by PumpPortal)
Signing flow:
- Mint keypair generated locally (pump.fun protocol requirement)
- Mint keypair secret passed to PumpPortal -- PumpPortal embeds the mint signature
- Unsigned TX (needs only fee payer signature) sent to
onchainos wallet contract-call --unsigned-tx
- TEE wallet adds fee payer signature and broadcasts
- Optional
--mev-protection uses Jito bundle for front-run protection
Notes:
- Mint keypair is randomly generated client-side (protocol requirement)
- User wallet is the fee payer -- no ephemeral keypairs needed
- IPFS upload via pump.fun
/api/ipfs (free, no API key) with Pinata fallback
- No platform fee on creation, standard fee on dev buy
- Pool options: "pump" (default) or "bonk" (LetsBonk pool)
Bags.fm
SDK: @bags-fm/sdk (TypeScript) โ we call via REST endpoints
Flow:
POST /token-launch/create-token-info โ upload metadata (name, symbol, desc, image, socials)
POST /fee-share/config โ create fee share config (creator BPS, optional co-earners)
POST /token-launch/create-launch-transaction โ create launch TX with initialBuyLamports
Fee Sharing:
- Creator must set their BPS explicitly (no default allocation)
- Total must = 10,000 bps (100%)
- Max 100 fee earners per token
- Supports social username lookups (Twitter, GitHub, Kick)
Notes:
- Uses Meteora Dynamic Bonding Curve
- Bags handles IPFS upload internally via their API
- No external Pinata needed (optional)
Moonit
SDK: @moonit/sdk (TypeScript) โ Python wrapper calls SDK methods
Flow:
prepareMintTx() โ builds mint transaction with token metadata
- Sign transaction
submitMintTx() โ submit signed transaction
Notes:
- Creator earns 80% of all trading fees
- Supports Raydium and Meteora V2 migration targets
- Built-in IPFS upload in SDK
LetsBonk
MCP Server: bonk-mcp โ or direct REST API
Flow:
- Create token via API (name, symbol, metadata URI)
- Optional initial buy
- Submit to Solana
Notes:
- Part of BONK ecosystem
- Migrates to Raydium after bonding curve completion
- Pool option
pool: "bonk" also available via PumpPortal
Four.Meme (BSC)
Method: Direct contract interaction via onchainos wallet contract-call
IMPORTANT: The agent MUST display all transaction parameters and receive explicit user confirmation (typing "confirm") BEFORE executing any contract call. Never auto-execute.
Flow:
- Upload image to IPFS (pump.fun free endpoint, Pinata fallback)
- Create metadata (description, image CID, socials)
- Display full transaction summary and wait for user to type "confirm"
- Call Four.Meme factory contract:
createToken(name, symbol, metadataURI, ...)
- Include
msg.value for initial buy (if buyAmount > 0)
Notes:
- Image upload handled by Four.Meme platform internally (if using their web UI)
- For programmatic: use Pinata, pass CID
- Categories: Meme, AI, DeFi, Games, Infra, De-Sci, Social, Depin, Charity, Others
- No tax token support on Four.Meme
Flap.sh (BSC)
Method: Direct contract interaction via onchainos wallet contract-call
IMPORTANT: The agent MUST display all transaction parameters and receive explicit user confirmation (typing "confirm") BEFORE executing any contract call. Never auto-execute.
Portal Contract: 0xe2cE6ab80874Fa9Fa2aAE65D277Dd6B8e65C9De0 (BNB Mainnet)
Function: newTokenV6(NewTokenV6Params)
Parameters:
name: string โ Token name
symbol: string โ Token symbol
meta: string โ IPFS CID of metadata
dexThresh: uint8 โ DEX listing threshold type
salt: bytes32 โ Vanity salt (0x0 for random)
migratorType: uint8 โ V2_MIGRATOR or V3_MIGRATOR
quoteToken: address โ address(0) for native BNB
quoteAmt: uint256 โ Initial buy amount
beneficiary: address โ Tax recipient
buyTaxRate: uint16 โ Buy tax (basis points)
sellTaxRate: uint16 โ Sell tax (basis points)
taxDuration: uint256 โ How long tax applies (seconds)
antiFarmerDuration: uint256 โ Anti-dump duration (seconds)
mktBps: uint16 โ Marketing allocation from tax
deflationBps: uint16 โ Burn allocation from tax
dividendBps: uint16 โ Dividend allocation from tax
lpBps: uint16 โ LP allocation from tax
tokenVersion: uint8 โ 6 (TOKEN_TAXED_V3, recommended)
Notes:
- Supports asymmetric buy/sell tax rates
- Vanity token addresses via
salt parameter
- Tax splits: mktBps + deflationBps + dividendBps + lpBps = total tax allocation
- DEX migration to PancakeSwap V2 or V3
Dashboard
Port: 3245
Features:
- Numbered timeline list (newest at top) with token logos
- Bonding curve progress bar (live-updating for active tokens)
- Live stats: price, market cap, holders, buy/sell volume
- Wallet balance display and mode indicator (DRY RUN / LIVE)
- Social links, explorer links, and launchpad chips
Config Reference
See config.py for all configurable parameters with descriptions.
Quick Start Examples
Launch on pump.fun (create only, no buy)
User: "Launch a token called MoonCat, ticker MCAT, on pump.fun"
โ Skill collects: description, image
โ Uploads to IPFS
โ Calls PumpPortal create (buyAmount = 0)
โ Returns token address
Launch on pump.fun with bundled buy
User: "ๅๅธ CoolDog, ticker CDOG, buy 0.5 SOL"
โ Skill collects: description, image
โ Uploads to IPFS
โ Bundles: create TX + buy 0.5 SOL TX โ Jito bundle
โ Returns token address + initial position
Launch on Flap.sh with tax token
User: "Create a tax token on BSC via Flap, 5% buy tax, 3% sell tax"
โ Skill collects: name, ticker, desc, image, tax config
โ Uploads metadata to IPFS
โ Calls Flap portal newTokenV6() with tax params
โ Returns token address on BSC
Launch on Bags.fm with fee sharing
User: "Launch on Bags, share 50% fees with my partner"
โ Skill collects: name, ticker, desc, image, partner address
โ Creates fee share config (creator 5000 bps, partner 5000 bps)
โ Creates launch TX
โ Returns token address + fee share config