AI・機械学習
Talorys – Cloudflareの無料枠で動作するセルフホスト型パーソナルAIエージェント
Talorys – A self-hosted personal AI agent on Cloudflare's free tier (github.com)
要約
Talorysは、Cloudflareの無料枠内で完全に動作するオープンソースのパーソナルAIアシスタントです。サーバーや開発者のアカウントを必要とせず、チャット、タスク管理、リマインダー、ルーチンなどを実行できます。データはユーザー自身のCloudflareアカウント内のSQLiteバックエンドを持つDurable Objectに保存され、プライバシーが保護されます。
全文翻訳
Talorys あなたのパーソナルAIエージェント。あなたのクラウド。Talorysは、あなた自身のCloudflareアカウント内で完全に動作する、無料のオープンソースのパーソナルAIアシスタントです。あなたとチャットし、重要なことを記憶し、タスク、メモ、プロジェクトを管理し、スケジュールに基づいてリマインダーやルーチンを実行します。サーバー、データベース、Talorys開発者が運営するアカウントは一切不要です。1人のユーザー。1つのCloudflareアカウント。1つのコマンド。1つのパーソナルAIエージェント。npx create-talorys@latest
1. Talorysとは
プライベートアシスタント — ストリーミング応答、Markdown、ツールアクティビティインジケーター付きのチャット。
メモリ — 表示、編集、削除が可能な、永続的な個人的な事実や好み。各ターンでモデルに送信されるのは、最も関連性の高いメモリのみです。
タスク、メモ、プロジェクト — UIでの完全なCRUD操作、およびチャットからの操作(「明日のプロジェクトレビューのためにタスクを追加」など)。
自動化 — 1回限りおよび定期的なリマインダー、毎日のタスクダイジェスト、オプションのAIルーチン。これらはアプリ内通知センターに配信されます。Durable Objectのアラームで実行されるため、何もオンライン状態を維持する必要はありません。
シングルユーザー設計 — サインアップ不要、アカウント不要、チーム不要。インストーラーがオーナーパスワードを設定します。
AIなしでも動作 — Workers AIが利用できない場合や無料クォータを使い切った場合でも、タスク、メモ、メモリ、リマインダーは機能し続けます。
スクリーンショット
ツールアクティビティとのチャット
タスク
メモリ(ダークモード)
自動化
2. 仕組み
ブラウザ ──HTTPS──▶ Cloudflare Pages (Reactアプリ + /api Pages Function)
│ service binding (公開URLなし)
▼ Private Worker (Honoルーター)
│ getAgentByName("personal-agent")
▼ TalorysAgent — Cloudflare Agents SDK
Durable Object
├─ SQLite: conversations, memories, tasks, notes, projects,
│ automations, sessions, settings, usage
├─ Workers AI: @cf/zai-org/glm-4.7-flash (ストリーミング + ツール呼び出し)
└─ Alarms: reminders and recurring schedules
ブラウザは常にあなたの *.pages.dev サイトと通信します。 /api/* リクエストは、サービスバインディングを介してエージェントWorkerに転送するPages Functionを実行します。エージェントWorkerは、workers_dev: false および preview_urls: false でデプロイされます。公開URLはありません。認証と認可はWorker内で行われ、フロントエンドでは行われません。チャット応答は、エンドツーエンドでServer-Sent Eventsとしてストリーミングされます。詳細: docs/architecture.md。
3. 使用されるCloudflareサービス
サービス | 使用目的 | 無料プラン
------- | -------- | --------
Cloudflare Pages | フロントエンド + Pages Function | はい
Cloudflare Workers | プライベートAPI Worker | はい
Durable Objects (SQLite) | 全データ、スケジューリングアラーム | はい
Workers AI | チャットモデル (@cf/zai-org/glm-4.7-flash) | はい、日次割り当て
TalorysはR2、D1、KV、Vectorize、AI Search、Workflows、またはその他の有料サービスをプロビジョニングしません。
4. デプロイ
npx create-talorys@latest
インストーラー:
Node.js (20.18+) をチェックし、バンドルされたWrangler CLIを使用します(グローバルにインストールされたwrangler/cfは検出されますが、必須ではありません)。
Cloudflareログインを確認するか、ブラウザでCloudflareの認証ページを開きます。
アカウント(複数ある場合)とエージェント名を選択させます。
オーナーパスワードを求めます(隠し入力、強度チェック済み)。これはローカルでPBKDF2-SHA256でハッシュされ、Cloudflareのシークレットとしてのみ保存されます。
256ビットのセッションシークレットと一意のリソース名(talorys-<id>-agent, talorys-<id>-web)を生成します。
プライベートWorker(SQLite Durable Objectを作成)をデプロイし、シークレットを保存し、サービスバインディングを持つPagesプロジェクトを作成・デプロイします。
AI推論を実行せずに、ライブデプロイ(フロントエンド、認証エンドポイント、未認証の拒否、ストレージの健全性)を確認します。
Cloudflareによって報告された実際の https://….pages.dev URL を出力します。
talorys/ ディレクトリを書き出します。これにはtalorys.json(インストールID、アカウントID、リソース名、URL — シークレットなし)とデプロイ可能なアーティファクトが含まれます。アップデートのために保管してください。
中断された場合?同じ場所で同じコマンドを再度実行してください。既存のものを調整します。重複リソースなし、パスワードが既に設定されている場合はパスワード再入力を求めない、データは決して削除されません。
非対話型インストール: TALORYS_OWNER_PASSWORD=... npx create-talorys@latest --yes --account-id <id> (ログインしていない場合はCLOUDFLARE_API_TOKENを設定)。
権限
ブラウザログインはWranglerの標準OAuthフローを使用します — グローバルAPIキーは不要です。APIトークンを使用する場合、以下の権限が必要です:
Account › Workers Scripts › Edit
Account › Cloudflare Pages › Edit
Account › Workers AI › Read
Account › Account Settings › Read
User › User Details › Read (オプション; メールアドレスを表示)
詳細は docs/deployment.md を参照してください。
5. アクセス
インストーラーが出力したURLを開き、オーナーパスワードを入力してチャットを開始します。任意の数のデバイスからサインインできます — すべて同じオーナーです。設定 → セキュリティの下でセッションを管理します。パスワードを忘れた場合? talorys/ ディレクトリから: npx create-talorys@latest reset-password これはパスワードシークレットを置き換え、すべてのデバイスからサインアウトします。
6. データが保存される場所
すべてのデータは、Cloudflareアカウント内の単一のSQLiteバックエンドを持つDurable Object(personal-agent)に保存されます。Talorysにはテレメトリ、分析、トラッキング、広告コードは含まれておらず、開発者に何も送信しません。Cloudflareは、Workers AI推論(チャットメッセージと各プロンプトに含まれる関連メモリの実行)を含むサービスを提供するためにデータを処理します。CloudflareのプライバシーポリシーとWorkers AIの利用規約を確認してください。セキュリティモデルと脅威軽減策: docs/security.md。
7. 無料で利用できるものと有料になる可能性のあるもの
TalorysはCloudflare Workers無料プランに収まるように設計されており、独自の判断で有料機能を有効にすることはありません。ただし、「無制限の無料」ではありません。無料プランにはアカウントレベルのクォータ(リクエスト数、Durable Objectの使用量、日次のWorkers AIニューロン割り当て)があります。クォータはCloudflareによって設定され、変更される可能性があります。AI割り当てが枯渇した場合、チャットには明確なメッセージが表示され、日次リセット後に再開します。それ以外のすべては機能し続け、データは変更されません。アカウントが有料プランの場合、含まれる量を超える使用量はCloudflareによってプランの下で請求されます。
組み込みのガードレール(設定 → AIで調整可能): 最大出力トークン、最大コンテキストトークン(古い履歴は要約される)、リクエストあたりの最大ツール呼び出しと推論ステップ、1日あたりの最大AIリクエスト数、1日あたりの最大スケジュール済みAI実行数。単純なリマインダーとタスクダイジェストはAIを使用しません。使用状況パネルにはローカル推定値が表示され、正確なニューロン使用量についてはCloudflareダッシュボードへのリンクがあります。
8. ローカル開発
要件: Node.js 20.18+。
git clone https://github.com/rociiu/talorys.git
cd talorys
npm install
npm run dev
npm run dev は、1つのターミナルでエージェントWorker(wrangler dev, ポート8787)、サービスバインディングを持つPages Functionプロキシ(wrangler pages dev, ポート8787)、およびVite UI(http://localhost:5173)を起動します。apps/agent/.dev.vars にローカルパスワード(talorys-dev-password、TALORYS_DEV_PASSWORDで上書き可能)を作成し、決定論的なモックAIプロバイダーを使用するため、Cloudflareログインは不要です。状態は .wrangler/state に永続化されます。その他のスクリプト: npm run build, npm test, npm run test:e2e, npm run test:pack, npm run typecheck, npm run lint。詳細は docs/development.md を参照してください。
9. データのバックアップ
設定 → プライバシー → バックアップをダウンロード すると、talorys-backup.json が生成されます。これには、会話、メモリ、タスク、メモ、プロジェクト、設定、自動化が含まれます(セッションや認証情報は含まれません)。インポートはファイルを検証し、1つのトランザクションでマージします。同じバックアップを2回インポートしても問題ありません。
10. アップデート
talorys/ ディレクトリから: npx create-talorys@latest update
これにより、最新のWorkerとフロントエンドが同じリソースに再デプロイされます。Durable Objectの名前空間は再作成されず(マイグレーションは追記のみ)、オーナーパスワードとセッションは保持され、スキーママイグレーションは最初の要求時に自動的かつトランザクション的に実行されます。status および doctor も利用可能です。
11. トラブルシューティング
問題 | 修正
------- | --------
インストーラーが途中で停止した | 同じコマンドを再度実行してください。再開します。
"did not pass its health checks yet" | pages.dev サイトは数分かかることがあります。再実行してください。
権限エラー | WorkersとPagesを編集できるアカウント、または上記の権限を持つトークンを使用してください。
チャットでAI割り当てが枯渇したと表示される | 日次リセットを待つか、設定 → AIでデモモードを有効にしてください。
ログイン失敗後にロックアウトされた