AI・機械学習
CEOがAIのために開発者を解雇、開発者はAIでCEOを再現するオープンソースAIを開発
CEO fired developers to make room for AI. Developers create open source AI CEO (github.com)
要約
あるCEOがAIに仕事を奪われることを恐れた開発者たちを解雇したという話から、彼らはオープンソースのAIシステム「OpenExecutive」を開発しました。このシステムは、仮想的な経営チームとして機能し、ハーバードMBAレベルの知識をカスタマイズして提供します。
全文翻訳
Open Executive
あなたの会社の仮想経営チームとして機能するAIシステム — あなたの特定のビジネスに合わせてカスタマイズされた、ハーバードMBAレベルの知識を持つ上級アドバイザー。
デモ
Open Executiveの動作デモ — YouTubeで視聴してください。
何をするものか
sentelabs.aiによって開発された
Open Executiveは、8人の専門AIエージェントに支えられた、単一の首尾一貫した経営陣の声を提供します。
チーフ・ストラテジー・オフィサー — 競合分析、M&A、市場ポジショニング、OKR
チーフ・ファイナンシャル・オフィサー — 財務モデリング、資金調達、ユニットエコノミクス、キャッシュフロー
チーフHR/ピープル・オフィサー — 採用、報酬、パフォーマンス、カルチャー
ジェネラル・カウンセル — 契約、知的財産、雇用法基本、コンプライアンス
チーフ・オペレーティング・オフィサー — プロセス設計、ベンダー管理、オペレーションのスケーリング
チーフ・マーケティング・オフィサー — GTM戦略、ブランド、コミュニケーション、PR
チーフ・プロダクト・オフィサー — ロードマップ、優先順位付け、プロダクト戦略
取締役会コミュニケーション・ディレクター — 取締役会資料、投資家対応、ガバナンス
すべての応答は、一貫した単一の経営陣の声から提供されます。内部エージェントのアーキテクチャがユーザーに公開されることはありません。
Q&Aを超えて、システムはセッションをまたいだ過去の決定やイニシアチブのエピソード記憶を維持し、組み込みのスケジューラはフォローアップや期限付きのアクションをプロアクティブに提示できます。
アーキテクチャ
ユーザーメッセージ ↓
エグゼクティブ・オーケストレーター (claude-sonnet-4-6) ↓
ツール使用 → 並列専門エージェント呼び出し
CSO / CFO / CHRO / GC / COO / CMO / CPO / 取締役会 ↓
各専門エージェントがChromaDBから関連コンテキストを取得
組み込みMBA知識 + あなたの会社ドキュメント ↓
統合されたエグゼクティブ応答
知識 — 各専門エージェントの呼び出しには2つの検索レイヤーがあります。
(1) 起動時にChromaDBにシードされた組み込みMBAレベルのMarkdown (knowledge/builtin/, git-tracked)
(2) チャンク化され、別のcompany_docsコレクションに格納されたアップロードされた会社ドキュメント。
RAGコンテキストはユーザーのターンに注入され、キャッシュされたシステムプロンプトには決して注入されません。
エピソード記憶 — 各応答の後、バックグラウンドのclaude-haiku-4-5パスが主要な決定、イニシアチブ、アドバイスをSQLiteに抽出します。次のセッションは<past_decisions>ブロックで開かれるため、エグゼクティブは先月推奨したことを覚えています。
スケジューラ — 組み込みジョブランナーは、二重実行を防ぐためにUPDATE … RETURNINGを使用して期限付きのアクションを取得します。APIは単一インスタンスとして実行する必要があります。スケジューラを最初にゲートしない限り、水平スケーリングしないでください。
プロンプトキャッシュ — システムプロンプトは、エグゼクティブのペルソナ、会社プロフィール、知識インデックスが個別にキャッシュされるように構造化されています(最初の数ターン後、最大85%のキャッシュヒット率)。動的なコンテンツがキャッシュブロックに入ることはありません。完全な設計については、docs/architecture.mdを参照してください。
技術スタック
レイヤー | 選択
LLMバックボーン | Anthropic Claude API
デフォルトモデル | claude-sonnet-4-6 (エグゼクティブ + ほとんどの専門エージェント)
ディープ・リーゾニング | claude-opus-4-7 (CSO, CFO, GC, 取締役会 — 拡張思考付き)
バックエンド | Python 3.11 + FastAPI
パッケージマネージャー | uv
ベクトルストア | ChromaDB (ローカル、埋め込み)
エピソード記憶 | SQLite
Web UI | Next.js 15 (App Router) + Tailwind
ライセンス | Apache 2.0
リポジトリレイアウト
openexecutive/
├── packages/
│ ├── core/
│ │ └── openexecutive/
│ │ ├── orchestrator/ # エグゼクティブペルソナ + ルーティングループ
│ │ ├── agents/ # 8人の専門エージェント
│ │ ├── knowledge/ # ChromaDBストア + RAGパイプライン
│ │ ├── memory/ # 会社プロフィール + エピソード記憶
│ │ ├── onboarding/ # ウィザード状態マシン + プロファイルビルダー
│ │ ├── prompts/ # ペルソナ + ドメインプロンプト + キャッシュマネージャー
│ │ ├── api/ # FastAPIアプリ + ルート
│ │ ├── integrations/ # Slack, Email, Telegram, Google Chat, Discord
│ │ ├── scheduler/ # バックグラウンドジョブランナー (単一インスタンス)
│ │ ├── alerts/ # プロアクティブアラートシステム
│ │ ├── audit/ # 監査ログ
│ │ ├── architecture/ # 内部アーキテクチャユーティリティ
│ │ ├── workflows/ # マルチステップワークフロー定義
│ │ └── cli.py # Click CLI
│ └── ui/ # Next.js 15 Web UI
├── evals/ # 評価シナリオ + LLM-as-judgeランナー
├── fixtures/ # デモ会社フィクスチャ (プロフィール、ドキュメント、名簿)
├── scripts/ # オペレータースクリプト (Flyシークレット、Google認証)
├── docker/ # Dockerfile(s) + docker-compose.yml
├── fly.api.toml / fly.ui.toml # Fly.io設定 — dev API + UIアプリ
├── fly.api.qa.toml / fly.ui.qa.toml # Fly.io設定 — QA API + UIアプリ
├── fly.honcho.toml # Fly.io設定 — Honchoメモリアプリ (オプション)
└── docs/ # アーキテクチャ + デプロイメントドキュメント
クイックスタート
# リポジトリをクローン
git clone https://github.com/SenteLabsAI/OpenExecutive.git
cd OpenExecutive
# Anthropic APIキーを設定
cp .env.example .env
# .envを編集し、ANHTROPIC_API_KEY=sk-ant-... を追加
# すべてを起動
make dev
http://localhost:3000 にアクセスして、エグゼクティブとのチャットを開始してください。APIはポート8000で、UIはポート3000で実行されます。
初回実行:
Python 3.11+ および Node 22+ が必要です。最初のuv syncは重いML依存関係 (ChromaDB + sentence-transformers/PyTorch) をプルし、最初の起動時に小さな埋め込みモデル (~90 MB) をダウンロードしてローカルベクトルインデックスを構築します。そのため、最初のmake devはアプリが準備できるまで数分かかります。それ以降の起動は高速です。
makeを使用しないコントリビュータ向け:
cd packages/core
uv sync
source .venv/bin/activate
uvicorn openexecutive.api.main:app --reload --port 8000
# 2番目のターミナルで
cd packages/ui && npm install && npm run dev
Discordボットの実行
https://discord.com/developers/applications でDiscordアプリケーションを作成します。
Message Content プリビレッジドインテントを有効にします (Bot → Privileged Gateway Intents)。
botとapplications.commandsスコープでボットを招待します。
.envに環境変数を設定します: DISCORD_BOT_TOKEN, DISCORD_APP_ID, DISCORD_GUILD_IDS。
APIを通常通り実行します — ボットはDISCORD_BOT_TOKENが設定されている場合、FastAPIのライフスパンの一部として起動します: make dev。
ボットはAPIプロセスに埋め込まれています (メールポーラー、スケジューラ、レジュマーと共に)。そのため、本番環境では /data の下の同じSQLiteデータベースとChromaDBベクトルストアを共有します。トークンをスキップすると無効になります。
ボットのみのコードをAPIを再起動せずにイテレーションするために、make discord はボットを同じローカルDBに対してスタンドアロンプロセスとして実行します。
ユーザーはボットにDMを送る、チャンネルでメンションする (スレッドで返信)、または /ask および /today スラッシュコマンドを使用できます。スラッシュコマンドは起動時にDISCORD_GUILD_IDSに即座に同期されます。グローバル登録の場合は空白のままにしてください (最大1時間の伝播遅延)。
本番環境へのデプロイ
既存のAPIアプリにシークレットを設定するだけで、新しいFlyアプリは不要です。
flyctl secrets set -a openexec-api-dev \
DISCORD_BOT_TOKEN=... \
DISCORD_APP_ID=... \
DISCORD_GUILD_IDS=...
Discordユーザーアクセスは /people UI を介して管理されます — discord_user_id を設定したPerson行を追加します。マシンを再起動し、次のライフスパンブート時にボットが起動します。本番環境で無効にするには: flyctl secrets unset -a openexec-api-dev DISCORD_BOT_TOKEN。
オンボーディング
あなたの会社
アプリに初めてアクセスすると、会社プロファイルを設定するためのウィザードが表示されます。
会社の基本情報 (名前、業界、ステージ、チームサイズ)
ビジネスモデルと収益
競合状況
戦略的優先事項
カルチャーとバリュー
オプション: 財務状況、ドキュメントアップロード
オンボーディング後、エグゼクティブはすべての応答であなたの特定の会社コンテキストを参照します。
インターフェース
インターフェース | 使用方法
Web UI | http://localhost:3000
Slack | @OpenExecutive をメンションするか、アプリにDMを送る
Email | 設定されたアドレスにCCまたはメールする (IMAP/SMTPポーラー)
Telegram | 設定されたボットにメッセージを送る
Google Chat | スペースでアプリをメンションする
Discord | ボットにDMを送る、チャンネルでメンションする、または /ask / /today スラッシュコマンドを使用する
CLI | openexecutive chat
ドキュメントアップロード
ピッチデッキ、財務モデル、戦略ドキュメント、または会社のドキュメントをWeb UIまたはAPIからアップロードします。エグゼクティブは関連する際にそれらを参照します。
# CLI経由
openexecutive upload deck.pdf model.xlsx strategy.md
# API経由
curl -X POST http://localhost:8000/documents \
-F "file=@deck.pdf" \
-F "domain=strategy"
デプロイメント (Fly.io)
2つの環境があり、それぞれがFlyアプリの別セットで、ブランチによって駆動されます。
環境 | トリガー | ワークフロー | アプリ
dev | mainへのプッシュ/マージ (継続的) | .github/workflows/deploy.yml | openexec-api-dev, openexec-ui-dev
qa | qaへのプッシュ/マージ (意図的なプロモーション) | .github/workflows/deploy-qa.yml | openexec-api-qa, op