Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
stavrobot — セキュリティに焦点を当てたAIパーソナルアシスタント | Kitploit
ツール/GitHubGitHub/skorokithakis/stavrobot
汎用ユーティリティコンテナセキュリティスクリプトと自動化プライバシーユーティリティとフレームワーク学習と教育AIセキュリティ
GitHubskorokithakis/stavrobot

stavrobot

セキュリティに焦点を当てたAIパーソナルアシスタント

リポジトリを見る
1841439時間19分前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
ウェブサイト
共有

Stavrobot

Stavrobotは、「AIアシスタントに必要なアクセスはすべて、しかしそれ以上は何も」という原則で構築されたパーソナルAIアシスタントです。

AIアシスタントの優れた機能をすべて備えていますが、サンドボックス化、隔離、最小限の権限に重点を置いています。軽量で、docker compose up だけでデプロイできます。

機能

  • 安全。 すべてがコンテナ内で実行されるため、ホストOSはAIから完全に見えません。あなたが望まない限り、AIはシークレットを一切見ることができません。
  • 軽量。 コンポーネントごとにコンテナを実行するわけではありません。プラグインはすべて単一のコンテナ内で実行され、Unixの権限によって分離されています。
  • 任意のモデルを使用可能。 ローカル、OpenRouter、Anthropic/OpenAI。 Pi がサポートするモデルであれば、ボットは使用できます。
  • Signal/Telegram/WhatsApp/Email との統合。 双方向メッセージ、フォーマット、添付ファイルなどをサポート。
  • 3層のナレッジシステム。 コンテキストを爆発させることなくすべてを記憶します。インテリジェントかつ透過的にメモリからデータを取得します。
  • 低トークン使用量。 トークン使用量を抑えるためのさまざまな最適化が施されています。内部で TOON も使用しています。
  • プラグイン。 プラグインをインストールし、GitリポジトリのURLを指定するだけでStavrobotの機能を拡張できます。プラグインは互いに分離されています。各プラグインは専用のシステムユーザーとして実行され、他のプラグインのファイルや設定にアクセスできません。
  • サブエージェント。 メインのエージェントは、独自の会話コンテキスト、システムプロンプト、制限付きツールアクセスを持つサブエージェントを作成できます。外部の人とやり取りしてタスクを完了したり、調整したりするのに便利です。その際、外部の人とメインエージェントの間にバッファを設けることができます。
  • 自己プログラミング。 エージェントは自分自身をプログラムし、拡張できます。
  • サンドボックス化されたPython実行。 uv を介した任意のPythonコードとpip依存関係を、ホスト環境から隔離して実行できます。
  • スケジューリング。 エージェントは定期的なタスクや1回限りのタスクをスケジュールできます。

クイックスタート

AI支援インストール: お使いのコーディングAI(Claude Code、Cursor、Windsurfなど)に https://stavrobot.stavros.io/INSTALL.md を取得して実行するよう指示してください。セットアップ全体をインタラクティブに案内します。

手動インストール:

  1. Telegramで @BotFather にメッセージを送信してボットを作成し、トークンをコピーします。@userinfobot にメッセージを送信して、自分のTelegramユーザーID(チャットIDとして使用)を取得します。

  2. env.example を .env にコピーし、POSTGRES_PASSWORD を安全なものに変更し、TZ を自分のタイムゾーンに設定します。

  3. config.example.toml を data/main/config.toml にコピーし、必須フィールド(apiKey、password、publicHostname、[owner].name、[owner].telegram(あなたのチャットID)、[telegram].botToken)を入力します。ファイル内のその他はすべてオプションです。

  4. docker compose up --build

以上です。Telegramでボットにメッセージを送信すると応答します。Signal、WhatsApp、メール、その他のオプションの詳細なセットアップ手順については、以下のセクションを参照してください。

セットアップ

設定

  1. config.example.toml を data/main/config.toml にコピーします。
  2. APIキーと設定を入力します。サンプルファイルには各セクションを説明するコメントがあります。
  3. 最低限、authFile(または apiKey)と publicHostname を設定します。その他はすべてオプションです。
  4. env.example を .env にコピーし、タイムゾーン(TZ)を設定します。Postgresの認証情報やその他の環境設定もここで上書きできます。必ず POSTGRES_PASSWORD を安全なものに設定してください — デフォルトは弱いプレースホルダーであり、本番環境では使用しないでください。

カスタムエンドポイントとOpenAI互換エンドポイント

Stavrobotは、config.toml で baseUrl を設定することで、任意のOpenAI互換エンドポイント(Ollama、LiteLLM、vLLMなど)またはカスタムのAnthropic互換プロキシを指すことができます。必要なフィールドと設定例については、config.example.toml を参照してください。

認証

アプリは2つの認証モードをサポートしています: APIキーまたはOAuth。

  • APIキー: config.toml に apiKey を設定します。ログインやログアウトは不要です。
  • OAuth: config.toml に authFile(認証情報が保存されるパス)を設定します。ログインページは、Piでサポートされている任意のOAuthプロバイダーで動作します。
    • ログイン: ブラウザで <your-hostname>/login にアクセスします。ページの指示に従うと、認証情報が認証ファイルに保存されます。ボットの実行中に認証が期限切れになると、メッセージングプラットフォームを介してログインURLがあなたに送信されます。
    • ログアウト: authFile パスのファイルを削除します。ボットは次のメッセージで認証情報の欠落を検出し、再度ログインするよう促します。

Claude Codeのセットアップ

coder コンテナはオプションです(自己プログラミング機能にのみ必要)。Claude Codeをサブスクリプション認証(OAuth)で使用します。メインアプリのAPIキーとは別です。

Docker Composeのプロファイルはカンマ区切りで指定するため、組み合わせることができます(例:COMPOSE_PROFILES=signal,coder)。

  1. .env ファイルで COMPOSE_PROFILES に coder を含むように設定します(例:COMPOSE_PROFILES=coder、またはSignalも使用する場合は COMPOSE_PROFILES=signal,coder)。
  2. コンテナを起動します: docker compose --profile coder up --build
  3. ログイン: docker compose exec -u coder coder claude(まだログインしていない場合はログインプロンプトが表示されます)。
  4. ブラウザベースのOAuthフローに従います。
  5. 設定ファイルの [coder].model にClaude Codeのモデルエイリアス(sonnet、opus、haiku)を設定します。

Signalのセットアップ

Signalには個人用とは別の電話番号が必要です。プリペイドSIMやVoIP番号でも動作します。

  1. .env ファイル内の COMPOSE_PROFILES=signal のコメントを解除して、signal-bridgeコンテナを有効にします。
  2. コンテナをビルドします: docker compose --profile signal build
  3. コンテナ上でSignalを登録します(どちらかを選択):
    • 既存のSignalアカウントにリンク: docker compose --profile signal run --rm --entrypoint bash signal-bridge -c 'signal-cli link -n "Stavrobot" | tee >(xargs -L 1 qrencode -t utf8)' — スマートフォンでQRコードをスキャンします(Signal > 設定 > リンク済みデバイス)。
    • 新しい番号を登録: docker compose --profile signal run --rm --entrypoint bash signal-bridge -c 'signal-cli -u +YOUR_NUMBER register'、次に docker compose --profile signal run --rm --entrypoint bash signal-bridge -c 'signal-cli -u +YOUR_NUMBER verify CODE' で確認します。
  4. 設定ファイルに [signal].account を設定します。
  5. コンテナを起動します: docker compose up --build
  6. 初回起動後、Web UI(/settings)から許可された番号を追加します。
  7. 重要: signal-cliは、まだメッセージを送信したことのない連絡先の電話番号を解決しません。ボットは各連絡先に最初のメッセージを電話番号で送信する必要があります。そうすることで、その人からの受信メッセージを識別できるようになります。オーナーに対してこれをトリガーするには、以下を実行します:

Telegramのセットアップ

  1. Telegramで @BotFather にメッセージを送信し、新しいボットを作成してトークンをコピーします。
  2. Telegramで @userinfobot にメッセージを送信し、ユーザーID(チャットIDとして使用)を取得します。
  3. 設定ファイルに [telegram].botToken を設定します。
  4. 設定ファイルの [owner].telegram にチャットID(携帯電話番号ではありません)を設定します。
  5. 初回起動後、Web UI(/settings)から許可されたチャットIDを追加します。
  6. アプリの起動時にWebhookが自動的に登録されます。

WhatsAppのセットアップ

WhatsAppには別の電話番号が必要です。そうしないと自分自身にメッセージを送信することになり、うまく機能しません。

WhatsAppは、非公式のWhatsApp Webライブラリである Baileys を使用します。これはコンパニオンデバイス(WhatsApp Webのように)としてリンクします。別の電話番号は必要なく、既存のWhatsAppアカウントにリンクします。

リスク: Baileysは非公式のAPIを使用しています。WhatsAppはこれを使用するアカウントを停止する可能性があります。自己責任で使用してください。

  1. config.toml に [whatsapp] セクションを追加します(フォーマットは config.example.toml を参照)。
  2. コンテナを起動します: docker compose up --build
  3. アプリのログにQRコードが表示されます(docker compose logs -f app)。
  4. スマートフォンでWhatsAppを開き、リンク済みデバイスに移動してQRコードをスキャンします。
  5. セッションは ./data/whatsapp に保存され、再起動後も維持されます。
  6. Web UI(/settings)から許可された電話番号を追加します。

メールのセットアップ

メールは、受信配信にCloudflare Email Worker、送信にSMTPを使用します。完全なワーカーコードと詳細なセットアップ手順については、config.example.toml を参照してください。

  1. config.toml に [email] セクションを追加し、SMTP認証情報とランダムな webhookSecret を設定します。
  2. Cloudflare Email Workerをデプロイし(コードは config.example.toml 内)、ワーカーに WEBHOOK_URL と WEBHOOK_SECRET 環境変数を設定します。
  3. Cloudflare Email Routingで、受信メールをワーカーに転送するルールを追加します。
  4. Web UI(/settings)から許可された送信者アドレスを追加します。

実行

root@kitploit:~
docker compose up --build

APIは http://localhost:10567/chat で利用できます。

注意: Docker Composeはアプリを localhost:10567 でのみ公開します。外部からアクセス可能にする(Telegram/SignalのWebhookや publicHostname 設定に必要)には、localhost:10567 を指すリバースプロキシ(例:Nginx、Caddy)を設定してください。ポートを直接公開することもできますが、トラフィックが暗号化されないため推奨されません。

Dockerなしでの実行

Node.js >= 20と、実行中のPostgreSQLインスタンスが必要です。

root@kitploit:~
npm install && npm run build && npm start

注: Pythonの実行とSignalの統合はDockerコンテナ内でのみ動作します。

ナレッジシステム

Stavrobotは3層のナレッジシステムを持っています: メモリー、スクラッチパッド、そしてデータベースです。ボットはこれらをかなり自律的に管理しますが、ボットが適切に使用できるようにするために、あなたが理解しておくことが重要です。

メモリーは常にシステムプロンプトに全文注入されます。メモリーは毎回コンテキストに含まれるため、節約して使用する必要があります。メモリーが多すぎるとコンテキストが増加する可能性があります。良いメモリーの例としては、「ユーザーはカジュアルなスタイルでの会話を好む」のような、ボットが毎回知っておくべきことであり、たとえコンテキスト長が増えても構わないものが挙げられます。

スクラッチパッドは、アクセス頻度は低いが、あるトピックに関連する知識を保存する場所です。スクラッチパッドのエントリにはタイトルと本文があり、タイトルは自動的にコンテキストに注入されます。重要ではあるが、あまり頻繁に必要ではないもの、通常は特定のトピックに関連するものに使用します。

例えば、良いスクラッチパッドエントリは「食事の好み」で、何を食べたいか、いつ食べるかなどの詳細を含みます。ボットは「食事の好み」というトピックがあることは認識しますが、自動的に本文をコンテキストに読み込むことはなく、オンデマンドでアクセスするだけです。

食べ物についてボットと話しているとき、ボットは調べられる「食事の好み」のスクラッチパッドエントリがあることを認識し、通常は自動的にそれを参照します。

データベースは第3の層で、メモリーやスクラッチパッドに属さない構造化データやバルクデータのための場所です。ボットは制限なしのSQLを介してPostgreSQLへの完全な読み取り/書き込みアクセス権を持っているため、テーブルの作成、クエリの実行、任意のデータの保存が可能です。これは、リスト、ログ、構造化レコード、または散文として読むよりもクエリした方が良いデータに使用します。

ボットは通常、何をいつ使用すべきかを十分に理解していますが、特定の情報をどこに置くべきかを明示的に指示したい場合もあるでしょう。

他の人との会話

Stavrobotは、Signal、Telegram、WhatsApp、またはメールを介して、あなたの代わりに他の人にメッセージを送ることができます。友人との夕食の予定を調整する必要がありますか?ボットに、二人の都合の良い時間を見つけるように指示すると、ボットは友人にメッセージを送り、日付を交渉し、カレンダーに追加します。アポイントメントを調整したい、グループでの外出を調整したい、忙しい時に誰かに質問したいですか?必要なことと誰に話すかをボットに伝えるだけです。

ボットは各会話に対して専用のサブエージェントを起動し、独自の指示とコンテキストを持たせるため、メインチャットを乱雑にすることなく相手とのやり取りを処理できます。タスクが完了すると、連絡先を無効にしてあなたに報告します。

安全性を保つために、ボットが誰かと会話するには2つの条件が必要です:

  1. あなたが許可リストに追加する。 /settings にアクセスし、相手の電話番号(SignalまたはWhatsApp)またはチャットID(Telegram)を追加します。これは人ごとに1回限りの手順です。ボットはこのリストを変更できず、リストにない人にはどんなことがあってもメッセージを送信できません。
  2. ボットが連絡先レコードを作成する。 許可リストにいる相手にメッセージを送るようボットに依頼すると、ボットは連絡先レコードを作成し、会話のために専用のサブエージェントを起動します。タスクが完了すると、連絡先を無効にし、あなたが再び有効にするよう依頼するまで双方向のメッセージをブロックします。

典型的な流れ: /settings で友達の電話番号を一度許可リストに追加し、その後ボットに「来週アレックスとの夕食の時間を見つけて」と指示します。ボットはアレックスの連絡先レコードを作成し、サブエージェントを起動し、Signalでアレックスにメッセージを送り、日付を決めるためにやり取りし、結果をあなたに報告します。

スキル

スキルは、ボットに新しい機能を教えるプレーンテキストの指示ファイルです。テーブルの作成、知識の保存、ページの作成、特定のワークフローの実行などです。これらはコードではなく、ボットが読み取って従う自然言語の指示です。

スキルシステムをインストールするには、ボットに https://stavrobot.stavros.io/skills/bootstrap.md を取得してその指示に従うよう指示してください。

利用可能なスキルの完全なリストは https://stavrobot.stavros.io/skills/index.md にあります。スキルをインストールするには、そのURLからスキルをフェッチしてインストールするようボットに指示するだけです。ボットはスキルの内容を表示し、実行前に確認を求めます。

スキルファイルはこのリポジトリの pages ブランチにあります(Cloudflare Pages経由で配信)。スキルを提供するには、そのブランチの skills/ にマークダウンファイルを追加します。各スキルファイルには title、description、version、およびオプションの author を含むYAMLフロントマターがあり、その後にプレーン言語の指示が続きます。完全な作成ガイドについては SKILL-AUTHORING.md を参照してください。pages ブランチに対してPRを提出してください。

独自のプラグインの作り方

Stavrobotプラグインを作成するために必要なすべての情報については PLUGIN.md を参照してください。このドキュメントは人間とLLMの両方のリファレンスとして機能します。

推奨プラグイン

プラグインは、ボイスノートを「聞く」、ボイスノートを返す、周辺の場所を認識する、Web検索など、ボットのコア機能を有効にするためにかなり必要です。

これらの機能は、ボットを自由にカスタマイズできるようにするためにデフォルトでは提供されていません。ただし、プラグインはインストールすることをお勧めします。インストールしないと、重要な機能が欠如することになります。

いくつかのファーストパーティプラグインはこちらにあります:

https://github.com/orgs/stavrobot/repositories

アーキテクチャ

3つのコアDockerコンテナ: app(TypeScriptサーバー、POST /chat を公開、Telegram webhookを POST /telegram/webhook で処理、インバウンドメールwebhookを POST /email/webhook で処理、Baileysを介してインプロセスでWhatsAppを実行)、postgres(永続状態のためのPostgreSQL 17)、plugin-runner(Node.jsサーバー — プラグインの一覧表示、検査、実行。ローカル作成およびgitインストールの両方)。オプションの coder コンテナ(編集可能なプラグインを作成および変更するためのClaude Codeヘッドレスエージェント)は、coder Docker Composeプロファイルによって有効になります。メインエージェントは、それぞれ独自の会話履歴、システムプロンプト、ツールホワイトリストを持つサブエージェントを作成できます。対話者は、インバウンドメッセージルーティングのためにエージェントに割り当てられた連絡先レコードです。

ライセンス

AGPL-3.0

ツールをダウンロード
root@kitploit:~
docker compose exec app node -e "fetch('http://localhost:3001/chat',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({message:'Send the message \"Hello from Stavrobot\" to my Signal number.'})}).then(r=>r.text()).then(console.log)"
  • 詳細は signal-cliクイックスタート を参照してください。