ALMERU Launch on X Connect
Docs · Build

CLI

Everything the agent does from a post, done from a shell — with the quote printed before anything is spent.

Install

npm i -g @almeru/cli
almeru --version
# almeru/1.4.0 node-24.14.0 chain-4663

The binary is almeru. It reads ALMERU_API_KEY and ALMERU_PROFILE from the environment, falling back to ~/.almeru/config.json. Global flags work everywhere: --profile <name>, --json, --yes, --quiet, --no-color.

Commands

CommandDoes
almeru loginPair the terminal with an X account and its derived wallet.
almeru launchDeploy a treasury protocol or a miner.
almeru minerInspect miners, rounds and odds.
almeru statusFollow a launch through its seven steps.
almeru protocols lsList deployed protocols.
almeru walletShow the derived address, grant and caps.
almeru configRead and write local settings.

almeru login

Flags: --profile <name> (default default), --timeout <seconds> (default 300).

$ almeru login
→ Pairing code:  QWTF-2K9D
  Open the Connect page in your browser and approve this device.
  Waiting for approval (expires in 5:00) …

✓ Signed in as x id 1596180932847104000
✓ Agent wallet  0x2ea9c4b7…ba36d0f1   (derived, deployed)
✓ Grant         executeLaunch only · per-launch 5,000.00 USDC
  Profile "default" written to ~/.almeru/config.json

The pairing code is single-use and short-lived. Login stores a scoped token, never a private key — the CLI cannot sign a transfer even if the machine is compromised.

almeru launch

Usage: almeru launch <miner|treasury> with --name, --ticker, --bootstrap, --asset (default USDC), --art <path>, --description, --dry-run, --yes, --idempotency-key.

$ almeru launch miner \
    --name "Copper Field" \
    --ticker CPFD \
    --bootstrap 1200 --asset USDC \
    --art ./copper.png

  kind        miner
  name        Copper Field
  ticker      $CPFD
  bootstrap   1,200.00 USDC
  split       80% emissions · 10% staking · 10% timelocked reserve
  board       25 tiles · 1 in 25 per tile · pot release ~1 in 333
  fee         1% deployment            12.00 USDC
  total                             1,212.00 USDC
  caps        per-launch 5,000.00 · 24h remaining 12,300.00

? Deploy on Robinhood Chain (4663)?  [y/N] y

  simulate    block 19442806   ok
  execute     block 19442807   ok   0x4c1d9a70…cc47ab30
✓ Copper Field is live       /miners/copper-field
  launch id   lnc_3v7pq0m

--dry-run stops after the simulate line and exits 0 without spending. --yes skips the prompt for scripts — pair it with --idempotency-key so a retried CI job cannot deploy twice.

almeru miner

Subcommands: ls, show <id|slug>, rounds <id|slug>. Flags: --phase, --limit, --watch.

$ almeru miner show copper-field
Copper Field  ($CPFD)              mnr_8fq2k1x
  round 41207   phase open   locks in 00:41   epoch 27714055
  tiles 25      entries 63   entry value 418.75 USDC
  winner reward 12.480000    token pot 1.248000   (fixed 10:1)
  schedule      484,393 of 525,600 funded rounds remaining
  routing       1% operations · 10% of losing side recycled

$ almeru miner ls --phase open --limit 3
SLUG           ROUND   PHASE   LOCKS IN   ENTRIES   VALUE
copper-field   41207   open       00:41        63   418.75
tin-line        9014   open       00:41        12    96.00
north-dock      2201   open       00:41         4    31.25

almeru status

$ almeru status lnc_3v7pq0m --watch
lnc_3v7pq0m   miner   Copper Field
  parse       ok
  validate    ok
  quote       ok      1,212.00 USDC
  simulate    ok      block 19442806
  execute     ok      block 19442807   0x4c1d9a70…cc47ab30
✓ settled     /miners/copper-field

Simulation always sits exactly one block before execution — if those numbers are not consecutive, the launch did not follow the normal path and is worth investigating.

almeru protocols ls

Flags: --kind <treasury|miner>, --status <live|settling|retired>, --limit, --cursor, --json.

$ almeru protocols ls --kind treasury --limit 3
SLUG             TICKER   STATUS   TREASURY      BACKING
harbor-reserve   HRBR     live     184,320.55    1.0742
tin-line         TINL     live      42,780.10    1.0113
north-dock       NDCK     settling   6,904.22    0.9981
more: --cursor c3Rhcl9ub3J0aC1kb2Nr

--json emits the raw envelope on stdout and nothing else, so it pipes cleanly. All human output goes to stderr, which keeps almeru protocols ls --json | jq '.data[].slug' honest.

almeru wallet

Subcommands: show (default), derive <xUserId>, caps.

$ almeru wallet show
x id         1596180932847104000
address      0x2ea9c4b7f18d3056a9c7e21b40fd7c85ba36d0f1   (chain 4663)
deployed     yes
root owner   0x9c3f18ba7e0d54216fbc9037ad81e5c4207fb6d8
agent signer executeLaunch  — and nothing else
caps         per-launch 5,000.00 USDC · rolling 24h 15,000.00 USDC
balance      3,184.90 USDC

$ almeru wallet derive 1802994477310988288
address      0x8b17e0d94a2c63f5108ad7be32409cf6d15e7b24   (chain 4663)
deployed     no        # the address exists as a fact before it exists as code

almeru config

$ almeru config list
profile        default
base_url       https://api.almeru.app/v1
chain_id       4663
confirm        prompt          # prompt | always | never
output         table           # table | json

$ almeru config set output json
✓ output = json          (~/.almeru/config.json)

Environment variables win over the config file, and explicit flags win over both. API keys are read from the environment only — almeru config set refuses to persist one to disk.

Exit codes

CodeMeaning
0Success, including a completed --dry-run.
1Unspecified failure.
2Usage error — unknown flag, missing argument.
3Not authenticated, or the grant is revoked.
4Validation failed, cap exceeded, or ticker taken.
5Insufficient funds for bootstrap plus the 1% fee.
6Simulation reverted. Nothing was spent.
7Rate limited; retry after the printed delay.
8Network or upstream unavailable.
130Interrupted at the confirmation prompt.

Codes 4, 5 and 6 all mean the launch stopped before spending — they are safe to treat as one class in a script, and they are the same conditions the REST API reports as 422.

The CLI is the SDK with a terminal on top: same endpoints, same error codes, same caps. If you are wiring this into a service rather than a shell, use the SDK directly.

Keep reading