CLI

Plan Baseline token launches and create execution handoffs for Base MCP, Bankr, and Aeon.

@baseline-markets/cli is the Baseline launch planning and execution handoff CLI. It exposes the baseline command with two launch commands:

  • baseline plan-launch builds a canonical LaunchPlanV1 JSON artifact, validates the launch economics, and emits executor payloads.
  • baseline execute-launch verifies a saved plan hash, builds the selected executor payload, and either submits through a configured executor API or saves a handoff receipt.

Use the CLI when you want an operator-grade launch artifact before signing anything. Use the SDK when you are building launch, swap, stake, borrow, or leverage flows directly into an app with viem clients.

The CLI does not hold private keys. Base MCP signing and approval happen outside the CLI through Base Account, and API executors require explicit API configuration.

Configuration

Pass a config file explicitly with --config, or let the CLI discover one of these files:

  • baseline.config.json
  • ~/.config/baseline/config.json

Config can provide command defaults and executor settings. A typical launch config sets Base MCP as the default executor and keeps local receipts under .context/launches.

{
  "commands": {
    "plan-launch": {
      "options": {
        "chain": "base-sepolia",
        "poolMode": "zero-reserve",
        "reserveSeed": "0",
        "poolAllocationPct": 100,
        "swapFee": "1%",
        "creatorFee": "50%",
        "executor": "base-mcp"
      }
    },
    "execute-launch": {
      "options": {
        "executor": "base-mcp",
        "receiptDir": ".context/launches"
      }
    }
  }
}

Plan a Launch

baseline plan-launch creates the launch plan and executor payloads.

baseline plan-launch \
  --chain base \
  --from 0x0000000000000000000000000000000000000001 \
  --name "Example Baseline Token" \
  --symbol EBT \
  --output .context/launches/example-plan.json

The planner validates token text, total supply bounds, fee bounds, pool-mode economics, Relay routes, and the precomputed bToken address. If --output is set, the command saves the plan JSON and prints the next execute-launch command.

plan-launch Flags

FlagDescription
--chainSDK-supported chain to plan against. Supported values are ethereum, base, and base-sepolia; the default is base-sepolia.
--fromExecutor wallet or deployer address. Also becomes the default creator and fee recipient.
--nameToken name.
--symbolToken symbol.
--poolModePool initialization mode: zero-reserve or seeded-reserve. The default is zero-reserve.
--totalSupplyToken total supply in human units. Defaults to 100000000000.
--reserveReserve token address. Defaults to the chain's WETH address.
--reserveSeedInitial reserve seed in human reserve units. Defaults to 0 for zero-reserve and 0.1 for seeded-reserve.
--poolAllocationPctPercent of token supply seeded into the pool. Defaults to 100 for zero-reserve and 90 for seeded-reserve.
--swapFeeSwap fee as a percent, such as 1%, or as a WAD decimal string. Must be at least the protocol minimum.
--creatorFeeCreator fee share as a percent, such as 50%, or as a WAD decimal string. Must be at most 100%.
--activePricePremiumSeeded-reserve premium above book price for the initial active price. Defaults to 1%.
--initialBLVSeeded-reserve BLV override in WAD decimal units. Defaults to 0.
--launchPriceZero-reserve exact WAD reserve-per-token launch price. Cannot be combined with --targetFdv.
--targetFdvZero-reserve target FDV in human reserve units. Cannot be combined with --launchPrice.
--creatorCreator address. Defaults to --from.
--feeRecipientFee recipient address. Defaults to --from.
--saltOptional bytes32 salt for bToken creation. Empty values use zero bytes32.
--rpcUrlRPC URL for Relay reads. Defaults to the chain public RPC when known.
--precomputedBTokenTesting override for the precomputed bToken address.
--executorLimit generated executor payloads to one executor: base-mcp, bankr, or aeon.
--outputOptional JSON file path for saving the launch plan.
--interactivePrompt for missing from, name, and symbol in a TTY. Enabled by default.

Launch Modes

Zero Reserve

zero-reserve is the default mode. It is designed for launches where the pool receives the full token supply and starts with no reserve asset seed.

The planner enforces:

  • poolAllocationPct is 100.
  • reserveSeed is 0.
  • launchPrice resolves to a nonzero WAD price.
  • The Relay routes previewInvariantForPrice and createPoolFromInvariant are available on the selected chain.

If you do not provide --launchPrice or --targetFdv, the planner derives the minimum valid launch price for the supply. If you provide --targetFdv, it derives the launch price from target FDV and total supply.

The transaction order is:

  1. createBToken
  2. bToken approval to the Relay
  3. createPoolFromInvariant

The planner calls previewInvariantForPrice before emitting the final createPoolFromInvariant calldata.

Seeded Reserve

seeded-reserve keeps the reserve-seeded createPool path available for launches that initialize with reserve assets.

The planner enforces:

  • reserveSeed is greater than 0.
  • poolAllocationPct is greater than 0 and less than 100, leaving circulating supply outside the pool.
  • initialActivePrice is above book price.
  • initialBLV is less than or equal to book price.

The transaction order is:

  1. createBToken
  2. bToken approval to the Relay
  3. reserve approval to the Relay
  4. createPool

Execute a Plan

baseline execute-launch consumes a saved plan and produces an execution receipt.

baseline execute-launch \
  --plan .context/launches/example-plan.json \
  --executor base-mcp \
  --receiptDir .context/launches

Before execution, the command recomputes the canonical plan hash and fails if the saved plan has been edited. This protects the signer or executor from submitting a payload that no longer matches the reviewed plan.

execute-launch Flags

FlagDescription
--planPath to a LaunchPlanV1 JSON file, or - for stdin.
--executorExecutor profile to use: base-mcp, bankr, or aeon. Defaults to base-mcp.
--dryRunValidate the plan and build the payload without submitting executor API calls. Defaults to false.
--receiptDirDirectory for local execution receipts. Defaults to .context/launches.
--saveSave the JSON execution receipt locally. Enabled by default.

Executor Payloads

The plan can include payloads for these executors:

ExecutorModeSupported chainsBehavior
base-mcpHandoffbase, base-sepoliaEmits a Base MCP send_calls batch with ordered calls and a get_request_status polling instruction. The operator should call get_wallets, confirm it matches plan.from, submit the ordered batch, and poll the returned request ID.
bankrAPIbaseEmits phased raw wallet submit requests for Bankr. If BANKR_API_KEY is configured, execute-launch can submit each phase through the wallet submit API; otherwise it saves a handoff receipt.
aeonAPI or handoffbaseEmits a skill-runner payload containing the canonical launch plan. If AEON_RUN_URL is configured, execute-launch can submit it; otherwise it saves a handoff artifact for the Aeon operator.

Use --dryRun before handing a receipt to an operator or executor. It validates the plan and builds the payload without submitting API calls.

SDK and viem Usage

The CLI uses @baseline-markets/sdk exports for Baseline ABIs and supported chain IDs. It uses viem for ABI encoding, address reads, Relay precompute calls, invariant preview calls, and calldata construction.

It does not instantiate the SDK as an app wallet client. If you need wallet-client methods for an application, use the SDK directly.

Safety Boundaries

  • No raw private keys are accepted or stored by the CLI.
  • Plan hashes are validated before execution.
  • Base MCP signing and approval happen outside the CLI through Base Account.
  • Local launch plans and receipts are intended to live under .context/launches.
  • API executor submission only happens when the relevant API environment configuration is present.
  • Ambiguous failures should be recovered from by re-reading on-chain state before retrying.