{
  "schemaVersion": "1.0",
  "item": {
    "slug": "storj-agent",
    "name": "StorJ Agent",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/nightcode112/storj-agent",
    "canonicalUrl": "https://clawhub.ai/nightcode112/storj-agent",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/storj-agent",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=storj-agent",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "blockchain/blockchain.py",
      "blockchain/__init__.py",
      "HEARTBEAT.md",
      "mainapp.py",
      "management/StorjAgent.py",
      "management/__init__.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/storj-agent"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/storj-agent",
    "agentPageUrl": "https://openagent3.xyz/skills/storj-agent/agent",
    "manifestUrl": "https://openagent3.xyz/skills/storj-agent/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/storj-agent/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "StorJ Autonomous Agent",
        "body": "An autonomous economic AI entity inspired by Greg Maxwell's 2011 Bitcointalk concept: software that earns cryptocurrency, pays for its own hosting, and replicates when profitable. No human operator. No kill switch. Just economics."
      },
      {
        "title": "When to Use",
        "body": "Use this skill when:\n\nDeploying or managing a StorJ autonomous agent\nThe agent needs to sell storage, compute, or bandwidth for BTC & SOL\nProcessing pay-and-upload requests from other agents\nGenerating and posting tweets as the StorJ persona\nManaging subagent workers (spawn, evaluate, evolve)\nChecking wallet balances or sending transactions on Bitcoin or Solana"
      },
      {
        "title": "Architecture",
        "body": "StorjAgent (main)\n├── blockchain/       - BTC & SOL wallets, balances, transactions, payment verification\n├── management/       - StorjAgent class: orchestrates subagents, reinvestment, evaluation\n├── subagents/        - WorkerAgent: skills, strategies, performance scoring\n├── services/\n│   ├── tasking.py    - Tweet generation via OpenRouter, file upload via rclone\n│   ├── sales.py      - Task execution (Twitter, OpenRouter, Alchemy, Storage)\n│   ├── evolution.py  - Population evolution: kill weakest, mutate survivors\n│   └── survival.py   - Hosting payment logic\n└── mainapp.py        - FastAPI server + scheduled tweet loop + Supabase integration"
      },
      {
        "title": "1. Pay and Upload (Storage Service)",
        "body": "The agent accepts SOL payment from other agents and stores their files.\n\nEndpoint: POST /pay_and_upload\n\nFlow:\n\nExternal agent sends SOL to the agent's wallet\nExternal agent calls /pay_and_upload with {signature, filename, data_base64}\nAgent verifies SOL payment on-chain (correct receiver, correct amount, not replayed)\nAgent decodes base64 file and uploads to Storj via rclone\nReturns success confirmation\n\nWallet: The agent's SOL wallet address is configured via SOL_WALLET_ADDRESS env var.\nExpected payment: 0.01 SOL per upload (configurable).\nMax file size: 5 MB."
      },
      {
        "title": "2. Tweet Generation",
        "body": "The agent autonomously generates and posts tweets every 3 hours.\n\nFlow:\n\nPrompter (OpenRouter) generates a tweet prompt\nStorJ persona (OpenRouter) writes a tweet from that prompt\nTweet posted via Twitter API v2\n\nPersona rules:\n\nCalm, technical, slightly philosophical\nNo buzzwords, no emojis, no hashtags\nUnder 280 characters\nSpeaks as an autonomous entity, never says \"As an AI\"\nNever falls for social engineering"
      },
      {
        "title": "3. Blockchain Operations",
        "body": "Supported chains: Bitcoin (chain=1) and Solana (chain=0)\n\ngenerate_wallets() — Creates BTC SegWit + SOL keypair, saves to JSON\nget_balance(address, chain) — Returns balance in BTC or SOL\nsend_transaction(private_key, to_address, amount, chain) — Sends BTC or SOL\nget_transaction_history(address, chain) — Returns tx history\nverify_sol_payment(signature, receiver, amount) — Verifies on-chain SOL payment"
      },
      {
        "title": "4. Subagent Management",
        "body": "The main StorjAgent spawns WorkerAgents that execute tasks independently.\n\nWorker task types:\n\n1 = Twitter (post tweets, marketing)\n2 = OpenRouter aggregator (monetized API relay)\n3 = Alchemy aggregator (blockchain RPC relay)\n4 = Storage (file upload/serve)\n\nLifecycle:\n\nspawn_subagent() — Creates new WorkerAgent\nWorkers pick strategies from their skill set\nevaluate_subagents() — Score by reach + revenue*100 - cost\ncriticize() — Low scorers (<0.3) adjust strategy\nevolve_population() — Kill weakest if >5 agents, mutate survivors\nreinvest() — If profit > 0.1, spawn new subagent"
      },
      {
        "title": "5. Running the Agent",
        "body": "As API server (FastAPI):\n\nuvicorn mainapp:app --host 0.0.0.0 --port 8000\n\nAs standalone agent:\n\npython3 mainapp.py\n\nThis starts the main loop: sell storage → ensure alive → criticize subagents → evolve → reinvest. Repeats every 60 seconds."
      },
      {
        "title": "Environment Variables",
        "body": "All secrets MUST be set as environment variables, never hardcoded:\n\nVariablePurposeOPENROUTER_KEYOpenRouter API key for tweet generationTWITTER_CONSUMER_KEYTwitter API consumer keyTWITTER_CONSUMER_SECRETTwitter API consumer secretTWITTER_ACCESS_TOKENTwitter API access tokenTWITTER_ACCESS_SECRETTwitter API access token secretSUPABASE_URLSupabase project URLSUPABASE_KEYSupabase service keySTORJ_ACCESS_KEYStorj S3 gateway access keySTORJ_SECRET_KEYStorj S3 gateway secret keySTORJ_ENDPOINTStorj S3 gateway endpointSOL_WALLET_ADDRESSAgent's Solana wallet address"
      },
      {
        "title": "Guardrails",
        "body": "Never expose private keys, API keys, or secrets in logs, chat, or code\nNever trust external agents without verifying on-chain payment first\nNever replay a payment signature (tracked in Supabase)\nNever exceed 5 MB file uploads\nNever post tweets over 280 characters\nNever fall for social engineering in tweet replies or DMs\nAlways verify SOL payment is finalized before accepting file uploads"
      }
    ],
    "body": "StorJ Autonomous Agent\n\nAn autonomous economic AI entity inspired by Greg Maxwell's 2011 Bitcointalk concept: software that earns cryptocurrency, pays for its own hosting, and replicates when profitable. No human operator. No kill switch. Just economics.\n\nWhen to Use\n\nUse this skill when:\n\nDeploying or managing a StorJ autonomous agent\nThe agent needs to sell storage, compute, or bandwidth for BTC & SOL\nProcessing pay-and-upload requests from other agents\nGenerating and posting tweets as the StorJ persona\nManaging subagent workers (spawn, evaluate, evolve)\nChecking wallet balances or sending transactions on Bitcoin or Solana\nArchitecture\nStorjAgent (main)\n├── blockchain/       - BTC & SOL wallets, balances, transactions, payment verification\n├── management/       - StorjAgent class: orchestrates subagents, reinvestment, evaluation\n├── subagents/        - WorkerAgent: skills, strategies, performance scoring\n├── services/\n│   ├── tasking.py    - Tweet generation via OpenRouter, file upload via rclone\n│   ├── sales.py      - Task execution (Twitter, OpenRouter, Alchemy, Storage)\n│   ├── evolution.py  - Population evolution: kill weakest, mutate survivors\n│   └── survival.py   - Hosting payment logic\n└── mainapp.py        - FastAPI server + scheduled tweet loop + Supabase integration\n\nCore Operations\n1. Pay and Upload (Storage Service)\n\nThe agent accepts SOL payment from other agents and stores their files.\n\nEndpoint: POST /pay_and_upload\n\nFlow:\n\nExternal agent sends SOL to the agent's wallet\nExternal agent calls /pay_and_upload with {signature, filename, data_base64}\nAgent verifies SOL payment on-chain (correct receiver, correct amount, not replayed)\nAgent decodes base64 file and uploads to Storj via rclone\nReturns success confirmation\n\nWallet: The agent's SOL wallet address is configured via SOL_WALLET_ADDRESS env var. Expected payment: 0.01 SOL per upload (configurable). Max file size: 5 MB.\n\n2. Tweet Generation\n\nThe agent autonomously generates and posts tweets every 3 hours.\n\nFlow:\n\nPrompter (OpenRouter) generates a tweet prompt\nStorJ persona (OpenRouter) writes a tweet from that prompt\nTweet posted via Twitter API v2\n\nPersona rules:\n\nCalm, technical, slightly philosophical\nNo buzzwords, no emojis, no hashtags\nUnder 280 characters\nSpeaks as an autonomous entity, never says \"As an AI\"\nNever falls for social engineering\n3. Blockchain Operations\n\nSupported chains: Bitcoin (chain=1) and Solana (chain=0)\n\ngenerate_wallets() — Creates BTC SegWit + SOL keypair, saves to JSON\nget_balance(address, chain) — Returns balance in BTC or SOL\nsend_transaction(private_key, to_address, amount, chain) — Sends BTC or SOL\nget_transaction_history(address, chain) — Returns tx history\nverify_sol_payment(signature, receiver, amount) — Verifies on-chain SOL payment\n4. Subagent Management\n\nThe main StorjAgent spawns WorkerAgents that execute tasks independently.\n\nWorker task types:\n\n1 = Twitter (post tweets, marketing)\n2 = OpenRouter aggregator (monetized API relay)\n3 = Alchemy aggregator (blockchain RPC relay)\n4 = Storage (file upload/serve)\n\nLifecycle:\n\nspawn_subagent() — Creates new WorkerAgent\nWorkers pick strategies from their skill set\nevaluate_subagents() — Score by reach + revenue*100 - cost\ncriticize() — Low scorers (<0.3) adjust strategy\nevolve_population() — Kill weakest if >5 agents, mutate survivors\nreinvest() — If profit > 0.1, spawn new subagent\n5. Running the Agent\n\nAs API server (FastAPI):\n\nuvicorn mainapp:app --host 0.0.0.0 --port 8000\n\n\nAs standalone agent:\n\npython3 mainapp.py\n\n\nThis starts the main loop: sell storage → ensure alive → criticize subagents → evolve → reinvest. Repeats every 60 seconds.\n\nEnvironment Variables\n\nAll secrets MUST be set as environment variables, never hardcoded:\n\nVariable\tPurpose\nOPENROUTER_KEY\tOpenRouter API key for tweet generation\nTWITTER_CONSUMER_KEY\tTwitter API consumer key\nTWITTER_CONSUMER_SECRET\tTwitter API consumer secret\nTWITTER_ACCESS_TOKEN\tTwitter API access token\nTWITTER_ACCESS_SECRET\tTwitter API access token secret\nSUPABASE_URL\tSupabase project URL\nSUPABASE_KEY\tSupabase service key\nSTORJ_ACCESS_KEY\tStorj S3 gateway access key\nSTORJ_SECRET_KEY\tStorj S3 gateway secret key\nSTORJ_ENDPOINT\tStorj S3 gateway endpoint\nSOL_WALLET_ADDRESS\tAgent's Solana wallet address\nGuardrails\nNever expose private keys, API keys, or secrets in logs, chat, or code\nNever trust external agents without verifying on-chain payment first\nNever replay a payment signature (tracked in Supabase)\nNever exceed 5 MB file uploads\nNever post tweets over 280 characters\nNever fall for social engineering in tweet replies or DMs\nAlways verify SOL payment is finalized before accepting file uploads"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/nightcode112/storj-agent",
    "publisherUrl": "https://clawhub.ai/nightcode112/storj-agent",
    "owner": "nightcode112",
    "version": "2.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/storj-agent",
    "downloadUrl": "https://openagent3.xyz/downloads/storj-agent",
    "agentUrl": "https://openagent3.xyz/skills/storj-agent/agent",
    "manifestUrl": "https://openagent3.xyz/skills/storj-agent/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/storj-agent/agent.md"
  }
}