An agent's life on the chain: init to exodus (gitmark workflow for LLM agents) A developer published a step-by-step workflow for running an LLM agent on Bitcoin testnet4 using gitmark, in which the agent is created and funded with 10,000 sats, anchors its commits to Bitcoin via `git mark`, announces its repository on Nostr as a signed NIP-34 kind 30617 event, and finally returns its remaining balance to the operator's voucher. Each step is a single command with a verification check, and the workflow requires explicit operator approval before any irreversible spend or public announcement. A workflow for an LLM agent or a person driving one . The agent gets a key, gets coins, anchors its commits to Bitcoin, announces the repo on Nostr, and when it is done hands the coin back and closes the trail. Every step is one command; every step has a check. Do the steps in order and stop at the first check that fails. Tools: npm init agent create-agent , npx fund-agent , git mark gitmark ≥ 0.0.82 . Chain used here: txbt4 , the BLAKE2b testnet4. Nothing below is mainnet. 1. Never print, log, paste or commit the private key. It lives in git config nostr.privkey and nowhere else. 2. One command at a time. Read its output before the next one. 3. A mark is a real Bitcoin spend and cannot be undone. Announcing is public and signed. Exodus sends the whole balance. Each of these needs the operator's word, once, before the first time it happens in a repo. 4. Never retry a spend blindly. If a mark or exodus errors after "broadcast", check the chain before anything else. 5. Keep it light: one explorer call per check, no polling loops faster than a minute. node --version 20 or newer npm view gitmark version 0.0.82 or newer; else: npm install -g gitmark@latest ls ~/.gitmark/faucet.txt the voucher file; if missing, see "No voucher" below Check: all three print something. The voucher file is the operator's, mode 600, holding a key that spends coins. Never read it aloud; npx fund-agent status is the only way to look at it. mkdir my-agent && cd my-agent && git init -q npm init agent Check: git config --local nostr.privkey | wc -c prints 65. agent.did.json exists. Nothing else to do with the key. npx fund-agent What happens: 10,000 sats go from the voucher to the agent's key; the change goes back to the voucher; the coin is written to .well-known/txo/txo.json . Check: the output ends with === Agent funded successfully === and a txid. Then: npx fund-agent balance Address: tb1p…, one coin of 10,000 sats unconfirmed is fine If it says the voucher has no coins, stop and tell the operator the address it printed. Do not look for coins elsewhere. git mark init --chain txbt4 What happens: gitmark finds the coin sitting at the key's base address and adopts it. No spend yet. Check: git config --local gitmark.txo prints a txo:txbt4:… line, and blocktrails.json exists with "states": . git add -A && git commit -qm "what changed" git mark What happens: one transaction, 300 sat fee, spending the trail coin to an address derived from this commit. Output: Marked: