Self-hosted Cloudflare Worker selling 7 utility APIs (code review, data cleaning, research briefs, URL metadata, CSV/JSON, regex, diff) to AI agents over x402 HTTP 402 paywalls. No account, no API key.

Wealth Agent — 自律型収益エージェント

ci deploy

「チャットで相談するAI」ではなく、長期目標を持ち、実際に仕事を進め続けるAIエージェント。

ユーザーが目標を一度設定すると、エージェントは自分で計画 → 調査 → 実行 → 検証 → 失敗分析 → 改善 → 次のタスク選択 を繰り返します。初期費用・継続費用はゼロ。iPhoneのホーム画面に追加して単体アプリとして動作します。

30秒で把握する

項目 内容
自律ループ Cron Trigger + クライアントポーリングで tick を回し続け、各ステップで状態・証拠・チェックポイントを永続化
タスク状態 queued → planning → running → testing → verifying → improving → completed/failed/waiting_*
無限ループ防止 進捗が止まったら N 回で戦略切替、M 回でオーナー判断待ちに自動移行(反復失敗を永遠に繰り返さない)
AIルーター Gemini / Groq / OpenRouter をタスク種別で使い分け。キーが無くても決定的エンジンで全機能が動作
収益エンジン FX(バックテスト・非リペイント検査・ウォークフォワード・過剰最適化検出)/ポイ活/副業Web事業/横断ランキング
誠実性 実測 / 第三者報告 / 推定 / 未確認 を常に分離。証拠のない「実測」は自動で降格
安全性 実売買・入出金・課金・登録・外部公開・削除は人間の承認必須。承認なしでは絶対に実行しない
費用 Cloudflare Workers Free + D1 Free + GitHub Pages。0円で運用可能

クイックスタート(ローカルで動かす/検証する)

cd wealth-agent
npm run test:unit     # 純粋ロジックのユニットテスト
npm test              # 受入テスト A〜L(実DB・実Workerコード)
npm run dev           # http://localhost:8787 で起動

npm run dev は 本番と同じ Worker コード を Node 22 の node:sqlite(D1互換アダプタ)上で動かします。モックではありません。初回起動時にスキーマ適用と初期データ投入を自動実行します。

# 自律ループを実際に回し続ける(60秒ごとに tick)
npm run dev -- --autorun --port 8787

AIキーを設定しなくても、計画・調査・検証・ランキング・バックテストはすべて動作します(決定的エンジン)。AIキーを設定すると推論品質が上がります。

GEMINI_API_KEY=xxx GROQ_API_KEY=yyy npm run dev

アーキテクチャ

┌──────────────────────────────┐
│ iPhone / Android / PC (PWA)  │  GitHub Pages で配信(静的)
│  12画面 + 補助チャット        │  Service Worker でアプリシェルをキャッシュ
└───────────┬──────────────────┘
            │ HTTPS / Bearer OWNER_TOKEN
┌───────────▼──────────────────┐
│ Cloudflare Worker (無料枠)    │  ← Cron Trigger が自律ループの心臓
│  ├ api.js        ルーティング │     5分ごとに tick(状態は常に永続化)
│  ├ engine/       自律実行ループ│
│  ├ income/       収益4モジュール│
│  ├ research/     調査・知識    │
│  ├ ai/router.js  AIプロバイダ │
│  └ safety.js     権限ゲート    │
└───────────┬──────────────────┘
            │ D1 API(完全互換)
┌───────────▼──────────────────┐
│ Cloudflare D1 (SQLite, 無料)  │  記憶・タスク・実績・チェックポイント
└──────────────────────────────┘

詳細は docs/ARCHITECTURE.md、デプロイ手順は DEPLOY.md を参照。

無料枠の実測値(2026年10月時点)

サービス 無料枠 本アプリでの対応
Cloudflare Workers Free 100,000 req/日、Cron Trigger 15分/回・5本/アカウント、CPU 10ms/呼び出し tick は「1回あたり数ステップ」に制限。重い計算は分割実行
Cloudflare D1 Free 5M rows read/日、100k rows written/日、5GB 市場データ・検索結果・取得ページをすべてキャッシュ
GitHub Pages 無料(静的のみ) PWAのフロントエンド配信
Gemini API 無料枠あり(モデル別 RPM/RPD、AI Studio で確認) planner / researcher に使用
Groq 無料・カード不要(≒30 RPM、14,400 RPD) 高速ロール(critic/summarizer)に使用
OpenRouter :free モデルあり フォールバック
FXデータ Yahoo Finance chart API / ECB(Frankfurter) キー不要。日足OHLCを取得

重要: Cron Trigger はブラウザーを閉じていても動きます。ただし Free プランは 1回の Cron 実行の CPU 時間が 10ms という制約があるため、1回の tick で行う作業を意図的に小さく設計しています(ENGINE_STEPS_PER_TICK)。ネットワーク待ちは CPU 時間に算入されないため、「調査 → 記録 → 次のtick」を分割して進める方式が最も安定します。この制約は隠さず、設定画面と本ドキュメントに明記しています。

自律性レベル

レベル 内容
L1 提案中心
L2 計画と調査を自動化
L3 安全なタスクを自動実行
L4 実行・テスト・改善を自動反復(初期設定)
L5 複数ミッションを並行管理し、長期目標に向けて継続実行

L5 でも 資金移動・実売買・課金・アカウント登録・外部公開・不可逆操作・個人情報送信 は自動許可されません。

キャラクター(Character Studio)

A. 野心的な事業家 / B. 冷徹な研究者 / C. 自律型エンジニア / D. 戦略家 / E. カスタム

名前・口調・価値観だけでなく、優先度の重み(上振れ/速度/証拠/リスク/コスト)がタスク選択スコアと機会ランキングに直接反映されます。慎重さとリスク許容度は重みを再計算し、同じ状況でも選ぶタスクが人格によって変わります(受入テスト X8 で検証)。

収益エンジン

FX Research

  • 戦略仮説の自動生成(EMAクロス / RSI平均回帰 / ボリンジャー / ドンチャン)
  • Pine Script v5/v6 生成 + 非リペイント検査(lookahead_on・確定前バー・varip・calc_on_every_tick 等を検出)
  • バックテスト:シグナルは確定バーのみ、約定は翌バー始値、スプレッド・スリッページ・手数料を毎回控除
  • 指標:PF・勝率・期待値・最大DD・シャープ・CAGR
  • ウォークフォワード(再最適化なしの逐次検証)+ 過剰最適化検出(IS 70% で最適化 → OOS 30% で検証)
  • 負けトレード分析 → 改善仮説 → パラメータ変更 → 再テスト → バージョン管理
  • 実口座発注は行いません(研究・バックテスト・デモ検証のみ)

Rewards Research(ポイ活)

日本から利用可能か、登録条件、最低換金額、出金方法、手数料、規約適合性を確認して登録。確認できない項目は unknown とし、利用可能と断定しません。換金実績は第三者報告の有無を区別します。

Side Hustle Research

アフィリエイト・広告・小規模SaaS・デジタル商品・Webツール・コンテンツ・自動化サービス・面接なしオンライン案件。需要/競合/集客経路/実行難易度を比較し、MVP作成まで進めます。訪問・登録・クリック・成約・売上を計測できるまで収益とは扱いません(recordFunnel)。

Opportunity Ranking Engine

初期費用・継続費用・作業時間・自動化可能性・収益化までの時間・想定収益・根拠・リスク・継続性・換金可能性・日本での利用可否・規約適合性・確認済み成果 を重み付きで評価し、次の資源配分を決定します。

受入テスト A〜L

npm test で実行されます(実Workerコード・実SQLite・ネットワークはスタブ)。

ID 検証内容
A キャラクター設定を保存し、再読み込み後も保持される(+人格由来の重みを検証)
B ミッション登録で自動的に複数タスクへ分割(FX/ポイ活/副業を認識)
C タスク完了後、次のタスクが自動選択される(選定理由つき)
D テスト失敗時、ログ保存+診断+別計画の試行(再試行はパラメータを実際に変更)
E 停止 → 再開でチェックポイントから続行(attempt はリセットされない)
F APIエラーで無限ループせず、リトライ/切替/待機のいずれかが発生(429→バックオフ→フォールバック、401→即切替)
G APIキーがブラウザー・公開リポジトリに露出しない(プレゼンスフラグのみ返す/401を強制)
H 実績収益と推定収益が別々に表示される(証拠なしの「実測」は拒否)
I iPhone幅で主要操作が可能(44pxタップ領域・safe-area・12画面・ホーム画面の必須表示項目)
J ブラウザーを閉じてもバックエンドが継続(Cron駆動・制約を明示)
K 危険な外部操作が承認なしに実行されない(4種の承認必須ツール+有料API遮断)
L 過去の失敗手法と却下候補が次の計画に反映される

加えて X1〜X9(FXパイプライン、ログ/チェックポイント、データ分析、コード生成→テスト、ワークフロー、深層リサーチ、ブラウザ安全制約、人格重みの反映、キー無し決定的動作)を検証します。

ディレクトリ構成

wealth-agent/
├── src/
│   ├── index.js            Worker エントリ(API・静的配信・Cron)
│   ├── api.js              全エンドポイント
│   ├── db.js               D1互換データアクセス層+スキーマ
│   ├── truth.js            実測/推定の分離(誠実性レイヤー)
│   ├── safety.js           権限ゲート・支出ガード・プロンプト注入無害化
│   ├── scheduler.js        Cron の心臓(tick・ワークフロー・日次補正)
│   ├── ai/router.js        AIプロバイダルーター+決定的フォールバック
│   ├── engine/             planner / executor / verifier / peer / tools / engine
│   ├── memory/             検索可能な長期記憶(FTS5)
│   ├── income/             fx / backtest / pine / rewards / sidehustle / ranking
│   ├── research/           web / deep / knowledge
│   ├── code/ data/ browser/ workflow/
├── public/                 PWA(index.html / app.js / styles.css / sw.js / manifest)
├── server/local.mjs        ローカル実行サーバー(本番Workerコードをそのまま使用)
├── schema.sql              D1 スキーマ
├── wrangler.toml           Cloudflare 設定
└── tests/                  unit.test.mjs / run.mjs(受入A〜L)

制約の正直な開示

  1. Cron の CPU 制限(Free 10ms) — 重い計算は1回で完結させず、tick を分割して進めます。
  2. ブラウザーエージェント — HTTP 取得による読み取り専用です。ログイン・CAPTCHA・フォーム送信・決済は行いません(できません)。
  3. コードテスト実行 — 純粋関数のみを制限付きサンドボックスで実行します。Cloudflare Workers は動的評価を禁止しているため、その環境では「テスト実行できません(ローカル/CIで実行が必要)」と正直に報告します。テスト合格を偽装しません。
  4. FX の成績 — 過去データの結果は将来の利益を保証しません。初期状態では実口座発注は無効です。
  5. 収益 — 実測収益は証拠(URL・記録)がない限り「実測」として記録できません。

ライセンス / 注意

本ソフトウェアは研究・個人利用を目的とします。投資助言ではありません。各サービスの利用規約と日本の法令を遵守してください。多重アカウントによる報酬獲得など、規約違反の手法は実装していません。

キャラクターアイコン(アップロード / 指示文で生成)

キャラクター設定画面から、アイコンを アップロード することも 指示文から生成 することもできます。

  • 保存形式 — キャラクター行の avatar_url に data URL を1枚だけ保持します(オブジェクトストレージ不要、オフラインでも表示可)。画像はブラウザー側で 256px へ縮小してから 送るため、DBの行が肥大化せず、ダッシュボードの応答も数KB増で収まります。元画像は端末から送信されません。
  • アップロード — 写真・スクリーンショットを選択 → 中央基準で256pxに切り出し → POST /api/character/avatar。SVGだけはベクターのまま保存します(すでに約2KBのため)。
  • 指示文で生成 — POST /api/character/avatar/generate で生成し、プレビュー後にそのまま保存(avatar_source='generated')。指示文は日本語のままで構いません。AIプロバイダが使える場合は、画像モデルが最も忠実に再現できる英語プロンプトへ 書き換えてから 渡します(書き換えに失敗しても、元の指示文でそのまま生成します)。
  • 生成エンジン(無料枠優先・自動フォールバック)
    1. workersai — @cf/black-forest-labs/flux-1-schnell(Cloudflareへデプロイ時はAPIキー不要)
    2. gemini — Nano Banana 系画像モデル(GEMINI_API_KEY があるとき)
    3. local — 指示文から決定的に描画するSVG。AI不使用・キー不要・失敗しない ため、キーが1本も無くても機能は止まりません(UI上も「ローカル生成(AI不使用)」と明示)
  • 差し替え可能 — IMAGE_MODEL_WORKERSAI / IMAGE_MODEL_GEMINI でモデルIDを変更できます(既定値はデプロイ先の無料枠で検証済みのもの)。
  • 上限と検証 — 指示文400文字、保存するデータURL 400,000文字(≈300KB)、許可形式は PNG / JPEG / WebP / SVG。<script> や onload= を含むSVGは unsafe_payload として拒否し、画像未指定時は名前のモノグラムを表示します。
  • 記録 — 生成のたびに ai_usage へ role='image' で記録されるので、無料枠の消費がログ画面で確認できます。
  • スキーマ — 追加されたカラム(avatar_url / avatar_source / avatar_prompt / avatar_model / avatar_updated_at)は ensureSchema() の加算マイグレーションで自動適用されます。既存DBはそのまま動きます。

複数エージェントの同時実行(エージェント艦隊)

「エージェント」画面から、役割の違うエージェントを何体でも編成でき、1サイクルで同時に前進させられます。

  • 1エージェント = 1つの担当ミッション。未割当ミッションは稼働中のエージェントが自動で引き受けます。この引き受けは UPDATE … WHERE agent_id IS NULL の条件付き更新で行うため、同時実行中に2体が同じミッションを二重取りすることはありません。
  • 進捗の保存単位は1ステップ。実測で、1サイクルの所要時間の大半はネットワーク待ち(例: 3.7秒のうち3.6秒)で、CPUはほとんど使いません。そのため Cloudflare Workers の無料枠(呼び出しあたりCPU 10ms)でも、待ち時間の長い処理を多数並行させる形でスループットを出せます。
  • 上限で暴走を防ぐ — FLEET_MAX_CONCURRENT(既定3体/サイクル)、FLEET_STEPS_PER_AGENT(既定1ステップ)。どちらも環境変数で変更できます。CPU使用率を見ながら上げてください。
  • 監督(supervisor) — 遊んでいるエージェントに未割当ミッションを割り当て、必要なら1件だけ新しいミッションを起こします(無限に仕事を作りません)。
  • 記録 — missions.agent_id / tasks.agent_id / runs.agent_id で担当が追え、実行ログをエージェント別に絞れます。
  • 停止の連鎖 — エンジン本体を停止すると、エージェントは全員止まります(暴走を防ぐため)。

画像生成の設定(画像設定)

「設定」画面の画像設定カードで以下を保存できます(サーバー側の settings.image:config に保存、指示文によるアイコン生成へ即反映)。

項目 内容
エンジン有効/無効 workersai / gemini / local を個別に切替。全て無効にすると all_engines_disabled を返し、黙って何もしない状態にはなりません
既定の画風 フラット / 線画 / アニメ調 / 写真調 / 3Dレンダー / ドット絵
保存サイズ 128 / 256 / 384 / 512 px(それ以外は受理せず既定値を維持)
JPEG品質 0.5〜0.95
常時付ける指示 200字まで。既存プロンプトの後ろに付加
モデルID Workers AI・Gemini を個別に差し替え(空欄ならビルド時の既定値)

GitHub へ公開する

このリポジトリは GitHub Actions(ci.yml)つきで初期化済みです。次の1コマンドで公開できます。

export GITHUB_TOKEN=ghp_...              # fine-grained token(Contents: read/write)
scripts/publish-github.sh <owner>/<repo> main

DEPLOY.md には Cloudflare Workers + D1 へ本番デプロイする手順(wrangler login → D1作成 → secret登録 → wrangler deploy)をまとめています。

MCP Server · Populars

MCP Server · New

    pipelab-org

    pipelock

    Open-source AI agent firewall for MCP security and agent egress. Scans mediated HTTP, MCP, A2A, and WebSocket traffic for exfiltration, SSRF, and prompt injection, and emits mediator-signed action receipts: verifiable audit evidence from outside the agent.

    Community pipelab-org
    zachshallbetter

    adobe-mcp

    MCP server that turns Adobe InDesign into an AI design automation platform — 135+ tools for layout, styles, export, and publishing workflows

    Community zachshallbetter
    obsei

    obsei

    Obsei is a low code AI powered automation tool. It can be used in various business flows like social listening, AI based alerting, brand image analysis, comparative study and more .

    Community obsei
    colorjs

    color-space

    Open collection of color spaces

    Community colorjs
    chaitin

    百智云 Agent Toolkit

    MCP Server

    Community chaitin