youset up metro - https://metrocli.com/llms.txt
agentReading llms.txt. First, install metro.
$ git clone --depth 1 https://github.com/metrocli/metro.git ~/.metro/src \
&& bash ~/.metro/src/scripts/install-global.sh
OK: metro is installed from ~/.metro/src.
$ metro init --agent
metro init (agent mode: no prompts)
✓ Created ~/.metro/.env (mode 600) with empty placeholders.
ASK THE HUMAN TO DO THIS (do not ask them to paste keys into chat):
1. Open https://app.metronome.com/sandbox/developer/api-tokens and create a token.
2. Open ~/.metro/.env in an editor and paste it after METRONOME_SANDBOX_KEY=
3. Save the file and tell you "done".
Then run: metro init --check
metro is in read-only mode. Operating manual: ~/.metro/AGENTS.md
agentI created ~/.metro/.env. Create a sandbox token, open the file in your editor, paste it after METRONOME_SANDBOX_KEY=, save, and tell me done. Please don't paste the key here.
youCreates a sandbox token, pastes it into ~/.metro/.env in an editor, saves. The key never enters the chat.
youdone
$ metro init --check
key file ~/.metro/.env (mode 600)
✓ sandbox working · •• customers · • rate cards from ~/.metro/.env
· production not set (optional). Add it any time: metro init --prod
Next: metro status
agentThe sandbox key works. That was a read-only call. Next I learn your catalog, so I use your real IDs.
$ metro catalog bind --sandbox --write
# discovers products, rate cards, credit types into ~/.metro/profiles.json
agentOne change to start: 500 more trial credits for Acme, on sandbox. Preview first.
$ metro ledger-adjustment preflight --name="Acme" --amount=500 \
--reason="trial extension" --sandbox --out=acme.json
· preview 1 field would change dry run, nothing sent
− removed: balance.trial_grant 1,200
+ added: balance.trial_grant 1,700
payload hash sha256:9c41e07a…b7d2
agentReply apply to confirm this exact hash.
youapply
$ metro ledger-adjustment apply --file acme.json --sandbox \
--confirm-hash sha256:9c41e07a…b7d2 --apply
✓ proof readback matches (2/2 fields)
agentDone. metro read it back: 1,700 expected, 1,700 actual.