F FORGE
FORGE AGENT

Launch

FORGE Launch CLI Specification

Purpose

Give operators and coding agents a single CLI surface to:

  1. Generate Agent identity (optional, Grok)
  2. Simulate ECAs (vault / token / curve)
  3. Launch vault + token in one transaction via ForgeLaunchRouter
  4. Wait for indexer confirmation and import into FORGE

The official $FORGE platform launch uses the same path with a platform-registration step afterward.

Cursor agents must follow .cursor/skills/forge-launch-token/SKILL.md (mirrored in Launch a token).

Commands

bash
# Agent / creator token
pnpm cli launch-token --config launch/agents/<slug>.json --simulate
pnpm cli launch-token --config launch/agents/<slug>.json --dry-run
pnpm cli launch-token --config launch/agents/<slug>.json

# Platform $FORGE
pnpm cli launch-forge --config launch/forge.json --simulate
pnpm cli launch-forge --config launch/forge.json --dry-run
pnpm cli launch-forge --config launch/forge.json

# Identity
pnpm cli identity-generate --template trading --seed "..." --out launch/agents/<slug>.json

# Post-launch
pnpm cli wait-indexed --tx 0x...
pnpm cli import-token --tx 0x... --agent-config launch/agents/<slug>.json
pnpm cli import-platform-token --tx 0x...
pnpm cli indexer-backfill --from <block> --to latest

--simulate / --dry-run print vault ECA, token ECA, curve ECA, salt, and pinned economics without sending a transaction. Production launch sends one tx through ForgeLaunchRouter (vault create + PONS launch), not two.

--json on simulate/launch prints a machine-readable summary for agents.

launch/forge.json / launch/agents/<slug>.json

json
{
  "name": "FORGE",
  "symbol": "FORGE",
  "logo": "ipfs-or-public-url",
  "description": "FORGE is the ecosystem asset for the FORGE AI agent launchpad.",
  "personality": "optional for agent tokens",
  "template": "utility",
  "agentId": "bytes32-or-mapped-uuid",
  "beneficiary": "0x...",
  "socials": {
    "twitter": "",
    "telegram": "",
    "discord": "",
    "website": ""
  },
  "launchConfigId": "LIVE_LOOKUP_OR_EXPLICIT",
  "pairToken": "0x0000000000000000000000000000000000000000",
  "creatorTaxBps": 0,
  "buybackEnabled": false,
  "initialBuy": "0"
}

Do not rely on the sample structure as the exact deployed PONS ABI forever; map it through the PONS adapter. See .cursor/skills/forge-launch-token/config.example.json.

Dry-run / simulate output must include

  • connected chain ID
  • signer address
  • signer ETH balance
  • canLaunch(signer)
  • factory + ForgeLaunchRouter addresses
  • enabled launch config
  • current PONS launch fee
  • pair token
  • vault ECA (predictVault)
  • token ECA + curve ECA (predictLaunchAddresses)
  • creator fee recipient (= vault ECA)
  • confirmation that launch path is single-tx ForgeLaunchRouter
  • optional initial buy
  • exact total native value
  • economics hash/pinned config if required

Never print the private key.

Confirmation

Production mode must require typing a phrase such as:

text
LAUNCH FORGE ON CHAIN 4663

or for agent tokens:

text
LAUNCH <SYMBOL> ON CHAIN 4663

CI/noninteractive launch is disabled by default (ALLOW_NONINTERACTIVE_LAUNCH required for --yes).

Post-launch

Save a JSON receipt under ./artifacts/launches/:

json
{
  "chainId": 4663,
  "txHash": "0x...",
  "token": "0x...",
  "curve": "0x...",
  "vault": "0x...",
  "blockNumber": 0,
  "factory": "0x...",
  "router": "0x...",
  "timestamp": "..."
}

Then wait until the indexer exposes the token. Import links the indexed token to the Agent (or marks the platform token); it does not fabricate a token row before chain confirmation.

Agent skill requirement

MVP must ship:

  • .cursor/skills/forge-launch-token/ (SKILL.md + reference + example config)
  • .cursor/skills/forge-build-mvp/
  • Root AGENTS.md
  • docs/agents/* playbooks rendered in the in-app docs site (DOCS_SITE.md)