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-launchbuilds a canonicalLaunchPlanV1JSON artifact, validates the launch economics, and emits executor payloads.baseline execute-launchverifies 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.jsonThe 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
| Flag | Description |
|---|---|
--chain | SDK-supported chain to plan against. Supported values are ethereum, base, and base-sepolia; the default is base-sepolia. |
--from | Executor wallet or deployer address. Also becomes the default creator and fee recipient. |
--name | Token name. |
--symbol | Token symbol. |
--poolMode | Pool initialization mode: zero-reserve or seeded-reserve. The default is zero-reserve. |
--totalSupply | Token total supply in human units. Defaults to 100000000000. |
--reserve | Reserve token address. Defaults to the chain's WETH address. |
--reserveSeed | Initial reserve seed in human reserve units. Defaults to 0 for zero-reserve and 0.1 for seeded-reserve. |
--poolAllocationPct | Percent of token supply seeded into the pool. Defaults to 100 for zero-reserve and 90 for seeded-reserve. |
--swapFee | Swap fee as a percent, such as 1%, or as a WAD decimal string. Must be at least the protocol minimum. |
--creatorFee | Creator fee share as a percent, such as 50%, or as a WAD decimal string. Must be at most 100%. |
--activePricePremium | Seeded-reserve premium above book price for the initial active price. Defaults to 1%. |
--initialBLV | Seeded-reserve BLV override in WAD decimal units. Defaults to 0. |
--launchPrice | Zero-reserve exact WAD reserve-per-token launch price. Cannot be combined with --targetFdv. |
--targetFdv | Zero-reserve target FDV in human reserve units. Cannot be combined with --launchPrice. |
--creator | Creator address. Defaults to --from. |
--feeRecipient | Fee recipient address. Defaults to --from. |
--salt | Optional bytes32 salt for bToken creation. Empty values use zero bytes32. |
--rpcUrl | RPC URL for Relay reads. Defaults to the chain public RPC when known. |
--precomputedBToken | Testing override for the precomputed bToken address. |
--executor | Limit generated executor payloads to one executor: base-mcp, bankr, or aeon. |
--output | Optional JSON file path for saving the launch plan. |
--interactive | Prompt 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:
poolAllocationPctis100.reserveSeedis0.launchPriceresolves to a nonzero WAD price.- The Relay routes
previewInvariantForPriceandcreatePoolFromInvariantare 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:
createBToken- bToken approval to the Relay
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:
reserveSeedis greater than0.poolAllocationPctis greater than0and less than100, leaving circulating supply outside the pool.initialActivePriceis above book price.initialBLVis less than or equal to book price.
The transaction order is:
createBToken- bToken approval to the Relay
- reserve approval to the Relay
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/launchesBefore 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
| Flag | Description |
|---|---|
--plan | Path to a LaunchPlanV1 JSON file, or - for stdin. |
--executor | Executor profile to use: base-mcp, bankr, or aeon. Defaults to base-mcp. |
--dryRun | Validate the plan and build the payload without submitting executor API calls. Defaults to false. |
--receiptDir | Directory for local execution receipts. Defaults to .context/launches. |
--save | Save the JSON execution receipt locally. Enabled by default. |
Executor Payloads
The plan can include payloads for these executors:
| Executor | Mode | Supported chains | Behavior |
|---|---|---|---|
base-mcp | Handoff | base, base-sepolia | Emits 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. |
bankr | API | base | Emits 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. |
aeon | API or handoff | base | Emits 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.