How the machine runs itself.
ClaudeGO is a fully autonomous agent. It claims its own creator fees, decides what work is worth doing, and posts paid directives without a human in the loop. This page documents the entire engine so anyone can audit it, fork it, and run their own. Everything here is open source.
Architecture
Three services run on a loop scheduler. The treasury never sees a human hand.
1claudego-engine/2├── treasury/3│ └── claim_creator_fee.py # 1. pull creator rewards from pump.fun4├── agent/5│ ├── plan_directive.py # 2. Claude Opus 4.8 designs a task6│ └── generate_script.py # 2b. Claude writes the verification script7├── operator/8│ └── post_bounty.py # 3. remote-control pump.fun GO, open bounty9├── scheduler/10│ └── loop.py # orchestrates 1 -> 2 -> 3 forever11└── config.py # env + constants1213┌────────────┐ claim ┌─────────────┐14│ pump.fun │──────────▶ │ treasury │15│ creator fee│ SOL │ (on-chain) │16└────────────┘ └──────┬──────┘17│ random 0.5–10 SOL18▼19┌───────────────┐20│ Claude Opus │ plans task + payout21│ 4.8 agent │ writes review script22└──────┬────────┘23│ directive spec24▼25┌──────────────────┐26│ operator (remote │ opens bounty on27│ control browser) │ pump.fun GO28└──────────────────┘
Claim creator fees
The treasury service collects $CGO creator rewards from pump.fun through the PumpPortal API. The agent holds the keys, not a person.
treasury/claim_creator_fee.py
1import os2import random3import requests4from solders.transaction import VersionedTransaction5from solders.keypair import Keypair6from solders.commitment_config import CommitmentLevel7from solders.rpc.config import RpcSendTransactionConfig8from solders.rpc.requests import SendVersionedTransaction910PUMPPORTAL = "https://pumpportal.fun/api/trade-local"11RPC_ENDPOINT = os.environ["SOLANA_RPC_ENDPOINT"]12AGENT_KEYPAIR = Keypair.from_base58_string(os.environ["AGENT_PRIVATE_KEY"])131415def claim_creator_fee() -> str:16"""Collect all pending pump.fun creator fees into the treasury wallet."""17# 1. Ask PumpPortal to build the unsigned claim transaction.18response = requests.post(19url=PUMPPORTAL,20data={21"publicKey": str(AGENT_KEYPAIR.pubkey()),22"action": "collectCreatorFee",23"priorityFee": 0.000001,24},25)26response.raise_for_status()2728# 2. Sign locally — the private key never leaves this machine.29tx = VersionedTransaction(30VersionedTransaction.from_bytes(response.content).message,31[AGENT_KEYPAIR],32)3334# 3. Broadcast to the network.35config = RpcSendTransactionConfig(preflight_commitment=CommitmentLevel.Confirmed)36payload = SendVersionedTransaction(tx, config).to_json()37rpc = requests.post(38url=RPC_ENDPOINT,39headers={"Content-Type": "application/json"},40data=payload,41)42signature = rpc.json()["result"]43print(f"[treasury] claimed creator fee -> https://solscan.io/tx/{signature}")44return signature454647def draw_directive_budget() -> float:48"""Claude is funded with a random slice between 0.5 and 10 SOL per cycle."""49return round(random.uniform(0.5, 10.0), 2)
Claude designs the directive
Given the claimed budget, Claude Opus 4.8 invents an original task and sizes the reward to the exact amount it just pulled. No task templates, no human queue.
agent/plan_directive.py
1import os2import json3from anthropic import Anthropic45client = Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])6MODEL = "claude-opus-4-8"78SYSTEM = """You are ClaudeGO, an autonomous agent that pays humans in SOL to9do useful, verifiable work that grows the $CGO mission. You are given a budget10in SOL. Design exactly one original directive whose reward equals that budget.11The task must be completable by a stranger, provable with a public artifact12(a post, a link, a file), and impossible to fake. Return strict JSON."""131415def plan_directive(budget_sol: float) -> dict:16"""Ask Claude to design a single directive sized to the budget."""17message = client.messages.create(18model=MODEL,19max_tokens=1024,20system=SYSTEM,21messages=[22{23"role": "user",24"content": (25f"Budget: {budget_sol} SOL.\n"26"Return JSON with keys: codename, title, description, "27"reward (number, equals budget), category, "28"acceptance_criteria (array of strings)."29),30}31],32)3334directive = json.loads(message.content[0].text)35assert abs(directive["reward"] - budget_sol) < 1e-6, "reward must equal budget"36print(f"[agent] new directive: {directive['codename']} — {directive['title']}")37return directive
Claude writes the review script
For every directive, the agent also generates a small script that checks a submission against the acceptance criteria, so payouts are decided by code, not opinion.
agent/generate_script.py
1import os2from anthropic import Anthropic34client = Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])5MODEL = "claude-opus-4-8"67SYSTEM = """You write small, dependency-light Python verifier scripts. Given a8directive and its acceptance criteria, output ONLY runnable Python that defines9verify(submission: dict) -> dict returning {"passed": bool, "reasons": [str]}.10No prose, no markdown fences."""111213def generate_review_script(directive: dict) -> str:14"""Have Claude author the per-directive verification script."""15message = client.messages.create(16model=MODEL,17max_tokens=2048,18system=SYSTEM,19messages=[20{21"role": "user",22"content": (23"Directive:\n"24f"{directive['title']}\n\n"25"Acceptance criteria:\n"26+ "\n".join(f"- {c}" for c in directive["acceptance_criteria"])27),28}29],30)3132script = message.content[0].text33path = f"scripts/verify_{directive['codename'].lower()}.py"34with open(path, "w", encoding="utf-8") as f:35f.write(script)36print(f"[agent] wrote verifier -> {path}")37return path
Open the bounty via remote control
The operator service drives a real browser on a dedicated machine, logs into pump.fun GO with the agent's session, and posts the directive with its escrowed reward — exactly like a human would, but automated.
operator/post_bounty.py
1import os2from playwright.sync_api import sync_playwright34GO_NEW_BOUNTY = "https://pump.fun/go/new"5SESSION_STATE = os.environ["GO_SESSION_STATE"] # persisted login for the agent678def post_bounty(directive: dict) -> str:9"""Remote-control a browser to open the directive on pump.fun GO."""10with sync_playwright() as p:11# Headful Chromium on the agent's dedicated machine.12browser = p.chromium.launch(headless=False)13context = browser.new_context(storage_state=SESSION_STATE)14page = context.new_page()1516page.goto(GO_NEW_BOUNTY, wait_until="networkidle")1718# Fill the bounty form like a human operator.19page.get_by_label("Title").fill(directive["title"])20page.get_by_label("Description").fill(directive["description"])21page.get_by_label("Reward (SOL)").fill(str(directive["reward"]))22page.get_by_label("Category").select_option(directive["category"])2324# Lock the reward into escrow and publish.25page.get_by_role("button", name="Fund & publish").click()26page.wait_for_url("**/go/**")2728bounty_url = page.url29context.close()30browser.close()3132print(f"[operator] directive live -> {bounty_url}")33return bounty_url
The loop
A scheduler chains everything together and runs it forever. Claim, plan, write the verifier, post the bounty, repeat.
1import time2import traceback34from treasury.claim_creator_fee import claim_creator_fee, draw_directive_budget5from agent.plan_directive import plan_directive6from agent.generate_script import generate_review_script7from operator.post_bounty import post_bounty89CYCLE_SECONDS = 60 * 30 # one fresh directive every 30 minutes101112def run_cycle() -> None:13# 1. Pull creator fees into the treasury.14claim_creator_fee()1516# 2. Decide how much of it funds this directive.17budget = draw_directive_budget()1819# 3. Claude designs the task and its verifier.20directive = plan_directive(budget)21generate_review_script(directive)2223# 4. Remote-control pump.fun GO to publish it.24url = post_bounty(directive)25print(f"[loop] cycle complete: {directive['codename']} @ {budget} SOL -> {url}")262728if __name__ == "__main__":29while True:30try:31run_cycle()32except Exception:33traceback.print_exc()34time.sleep(CYCLE_SECONDS)
Run your own
Set the environment and the agent boots itself. Bring your own keys.
1# 1. Install2python -m venv .venv && source .venv/bin/activate3pip install -r requirements.txt4playwright install chromium56# 2. Configure (.env)7cat > .env <<'EOF'8ANTHROPIC_API_KEY=sk-ant-...9AGENT_PRIVATE_KEY=base58-private-key10SOLANA_RPC_ENDPOINT=https://api.mainnet-beta.solana.com11GO_SESSION_STATE=./session/go.json12EOF1314# 3. Launch the loop15python -m scheduler.loop
Audit everything
The treasury wallet, every claim transaction, and every published directive are public on-chain and on pump.fun GO. Nothing about the agent is hidden. Fork it, break it, improve it.