메뉴
HN
Hacker News • 30일 전

CEO가 개발자 해고하고 AI 도입하자, 개발자들이 오픈소스 AI CEO를 만들었다

IMP
6/10
핵심 요약

해커뉴스에 'Open Executive'라는 오픈소스 프로젝트가 공개됐습니다. 하버드 MBA 수준의 지식을 갖춘 가상 임원진 AI 시스템으로, CSO·CFO·CHRO·법무총괄·COO·CMO·CPO·이사회 커뮤니케이션 디렉터 등 8개 전문 에이전트를 하나의 일관된 임원 목소리로 통합해 답변합니다. Claude API와 ChromaDB, SQLite 기반의 에피소드 기억, 스케줄러 등을 활용하며 Apache 2.0 라이선스로 공개되어 누구나 자사용 가상 경영 컨설턴트로 활용할 수 있다는 점이 주목받습니다.

번역된 본문

Open Executive — 귀사의 가상 임원진 역할을 하는 AI 시스템입니다. 하버드 MBA 수준의 지식을 갖춘 시니어 어드바이저이며, 귀하의 비즈니스에 맞게 커스터마이징됩니다.

데모: YouTube에서 Open Executive의 실제 작동 과정을 확인할 수 있습니다.

주요 기능 sentelabs.ai가 개발한 Open Executive는 8개의 전문 AI 에이전트가 뒷받침하는 하나의 일관된 임원 목소리를 제공합니다:

  • 최고전략책임자(CSO) — 경쟁 분석, M&A, 시장 포지셔닝, OKR
  • 최고재무책임자(CFO) — 재무 모델링, 투자 유치, 단위 경제성, 현금 흐름
  • 최고인사책임자(CHRO) — 채용, 보상, 성과 관리, 조직 문화
  • 법무총괄(GC) — 계약, 지식재산권, 기본 노동법, 컴플라이언스
  • 최고운영책임자(COO) — 프로세스 설계, 벤더 관리, 운영 확장
  • 최고마케팅책임자(CMO) — GTM 전략, 브랜드, 커뮤니케이션, PR
  • 최고제품책임자(CPO) — 로드맵, 우선순위 결정, 제품 전략
  • 이사회 커뮤니케이션 디렉터 — 이사회 발표 자료, 투자자 관계, 거버넌스

모든 응답은 하나의 일관된 임원 목소리로 제공되며, 내부 에이전트 아키텍처는 사용자에게 노출되지 않습니다. 단순 Q&A를 넘어, 세션 간 과거 결정과 이니셔티브에 대한 에피소드 기억을 유지하며, 내장 스케줄러가 후속 조치와 시간이 촉박한 액션을 사전에 상기시켜 줍니다.

아키텍처 사용자 메시지 → 임원 오케스트레이터(claude-sonnet-4-6) → 도구 사용을 통한 병렬 전문가 호출(CSO / CFO / CHRO / GC / COO / CMO / CPO / Board) → 각 전문가가 ChromaDB에서 관련 컨텍스트 검색(내장 MBA 지식 + 회사 문서) → 종합된 임원 응답

지식 — 전문가 호출마다 2단계 검색: (1) 내장된 MBA 수준의 Markdown 문서(knowledge/builtin/, git으로 관리)를 시작 시 ChromaDB에 적재, (2) 업로드된 회사 문서를 청크로 나눠 별도 company_docs 컬렉션에 저장. RAG 컨텍스트는 사용자 턴에 주입되며, 캐시된 시스템 프롬프트에는 절대 들어가지 않습니다.

에피소드 기억 — 매 응답 후 백그라운드 claude-haiku-4-5 작업이 핵심 결정, 이니셔티브, 조언을 SQLite에 추출합니다. 다음 세션은 블록으로 시작해 지난달에 어떤 권고를 했는지 기억합니다.

스케줄러 — 내장 잡 러너가 UPDATE … RETURNING으로 만기된 액션을_claiming해 중복 실행을 방지합니다. API는 반드시 단일 인스턴스로 실행해야 하며, 스케줄러에 게이팅을 추가하기 전까지 수평 확장하지 마세요.

프롬프트 캐싱 — 시스템 프롬프트가 임원 페르소나, 회사 프로필, 지식 인덱스를 각각 캐시하도록 구조화되어 있습니다(처음 몇 턴 이후 최대 85% 캐시 히트율). 캐시 블록에는 동적 콘텐츠가 절대 들어가지 않습니다. 전체 설계는 docs/architecture.md를 참고하세요.

기술 스택

  • LLM 백본: Anthropic Claude API
  • 기본 모델: claude-sonnet-4-6(임원 + 대부분 전문가)
  • 고급 추론: claude-opus-4-7(CSO, CFO, GC, Board — 확장 사고 모드)
  • 백엔드: Python 3.11 + FastAPI
  • 패키지 매니저: uv
  • 벡터 저장소: ChromaDB(로컬, 임베디드)
  • 에피소드 기억: SQLite
  • 웹 UI: Next.js 15(App Router) + Tailwind
  • 라이선스: Apache 2.0

저장소 구조 openexecutive/ 패키지 하위에 core(오케스트레이터, 8개 전문 에이전트, 지식/RAG 파이프라인, 기억, 온보딩 위저드, 프롬프트 및 캐시 매니저, FastAPI API, Slack/Email/Telegram/Google Chat/Discord 연동, 백그라운드 스케줄러, 사전 알림 시스템, 감사 로그, 아키텍처 유틸리티, 멀티스텝 워크플로, Click CLI)와 ui(Next.js 15 웹 UI)가 있으며, evals(평가 시나리오 + LLM-as-judge 러너), fixtures(데모 회사 데이터), scripts(운영 스크립트), docker(Dockerfile) 등으로 구성됩니다.

원문 보기
원문 보기 (영어)
Open Executive An AI system that acts as your company's virtual executive team — a senior advisor with Harvard MBA-level knowledge, customized for your specific business. Demo A walkthrough of Open Executive in action — watch on YouTube . What It Does Developed by sentelabs.ai Open Executive provides a single coherent executive voice backed by eight specialist AI agents: Chief Strategy Officer — competitive analysis, M&A, market positioning, OKRs Chief Financial Officer — financial modeling, fundraising, unit economics, cash flow Chief HR/People Officer — hiring, compensation, performance, culture General Counsel — contracts, IP, employment law basics, compliance Chief Operating Officer — process design, vendor management, operational scaling Chief Marketing Officer — GTM strategy, brand, communications, PR Chief Product Officer — roadmap, prioritization, product strategy Board Communications Director — board decks, investor relations, governance All responses come from one consistent executive voice. The internal agent architecture is never exposed to the user. Beyond Q&A, the system maintains episodic memory of past decisions and initiatives across sessions, and a built-in scheduler can proactively surface follow-ups and time-sensitive actions. Architecture User message ↓ Executive Orchestrator (claude-sonnet-4-6) ↓ tool use → parallel specialist calls CSO / CFO / CHRO / GC / COO / CMO / CPO / Board ↓ each specialist retrieves relevant context from ChromaDB Built-in MBA knowledge + Your company documents ↓ Synthesized executive response Knowledge — Two retrieval layers per specialist call: (1) built-in MBA-level Markdown ( knowledge/builtin/ , git-tracked) seeded into ChromaDB at startup, and (2) your uploaded company documents chunked and stored in a separate company_docs collection. RAG context is injected into the user turn, never the cached system prompt. Episodic memory — After every response, a background claude-haiku-4-5 pass extracts key decisions, initiatives, and advice into SQLite. The next session opens with a <past_decisions> block so the Executive remembers what it recommended last month. Scheduler — A built-in job runner claims due actions via UPDATE … RETURNING to prevent double-firing. The API must run as a single instance; do not horizontally scale it without gating the scheduler first. Prompt caching — The system prompt is structured so the Executive persona, company profile, and knowledge index are cached separately (up to 85% cache hit rate after the first few turns). No dynamic content ever goes in a cached block. See docs/architecture.md for the full design. Tech Stack Layer Choice LLM backbone Anthropic Claude API Default model claude-sonnet-4-6 (Executive + most specialists) Deep reasoning claude-opus-4-7 (CSO, CFO, GC, Board — with extended thinking) Backend Python 3.11 + FastAPI Package manager uv Vector store ChromaDB (local, embedded) Episodic memory SQLite Web UI Next.js 15 (App Router) + Tailwind License Apache 2.0 Repo Layout openexecutive/ ├── packages/ │ ├── core/ │ │ └── openexecutive/ │ │ ├── orchestrator/ # Executive persona + routing loop │ │ ├── agents/ # 8 specialist agents │ │ ├── knowledge/ # ChromaDB store + RAG pipeline │ │ ├── memory/ # Company profile + episodic memory │ │ ├── onboarding/ # Wizard state machine + profile builder │ │ ├── prompts/ # Persona + domain prompts + cache manager │ │ ├── api/ # FastAPI app + routes │ │ ├── integrations/ # Slack, Email, Telegram, Google Chat, Discord │ │ ├── scheduler/ # Background job runner (single-instance) │ │ ├── alerts/ # Proactive alert system │ │ ├── audit/ # Audit logging │ │ ├── architecture/ # Internal architecture utilities │ │ ├── workflows/ # Multi-step workflow definitions │ │ └── cli.py # Click CLI │ └── ui/ # Next.js 15 web UI ├── evals/ # Eval scenarios + LLM-as-judge runner ├── fixtures/ # Demo company fixtures (profiles, docs, rosters) ├── scripts/ # Operator scripts (Fly secrets, Google auth) ├── docker/ # Dockerfile(s) + docker-compose.yml ├── fly.api.toml / fly.ui.toml # Fly.io configs — dev API + UI apps ├── fly.api.qa.toml / fly.ui.qa.toml # Fly.io configs — QA API + UI apps ├── fly.honcho.toml # Fly.io config — Honcho memory app (optional) └── docs/ # Architecture + deployment docs Quick Start # Clone the repo git clone https://github.com/SenteLabsAI/OpenExecutive.git cd OpenExecutive # Set your Anthropic API key cp .env.example .env # Edit .env and add ANTHROPIC_API_KEY=sk-ant-... # Start everything make dev Open http://localhost:3000 to start chatting with your executive. The API runs on port 8000 and the UI on 3000. First run: requires Python 3.11+ and Node 22+. The initial uv sync pulls heavy ML dependencies (ChromaDB + sentence-transformers/PyTorch), and the first boot downloads a small embedding model (~90 MB) to build the local vector index — so the first make dev takes a few minutes before the app is ready. Subsequent starts are fast. For contributors not using make : cd packages/core uv sync source .venv/bin/activate uvicorn openexecutive.api.main:app --reload --port 8000 # In a second terminal cd packages/ui && npm install && npm run dev Run the Discord Bot Create a Discord application at https://discord.com/developers/applications Enable the Message Content privileged intent (Bot → Privileged Gateway Intents) Invite the bot with bot + applications.commands scopes Set env vars in .env : DISCORD_BOT_TOKEN , DISCORD_APP_ID , DISCORD_GUILD_IDS Run the API normally — the bot starts as part of the FastAPI lifespan when DISCORD_BOT_TOKEN is set: make dev The bot is embedded in the API process (alongside the email poller, scheduler, and resumer) so it shares the same SQLite database and ChromaDB vector store under /data in production. Skip the token to disable. For iterating on bot-only code without restarting the API, make discord runs the bot as a standalone process against the same local DB. Users can DM the bot, @mention it in a channel (replies in a thread), or use /ask and /today slash commands. Slash commands sync to DISCORD_GUILD_IDS instantly on startup; leave blank for global registration (up to 1-hour propagation delay). Deploying to production Just set the secrets on the existing API app — no new Fly app required: flyctl secrets set -a openexec-api-dev \ DISCORD_BOT_TOKEN=... \ DISCORD_APP_ID=... \ DISCORD_GUILD_IDS=... Discord user access is managed via the /people UI — add a Person row with discord_user_id set. The machine restarts and the bot starts on the next lifespan boot. To disable in prod: flyctl secrets unset -a openexec-api-dev DISCORD_BOT_TOKEN . Onboarding Your Company The first time you visit the app, you'll be guided through a wizard to set up your company profile: Company basics (name, industry, stage, team size) Business model and revenue Competitive landscape Strategic priorities Culture and values Optional: financial position, document upload After onboarding, the Executive will reference your specific company context in every response. Interfaces Interface How to Use Web UI http://localhost:3000 Slack Mention @OpenExecutive or DM the app Email CC or email the configured address (IMAP/SMTP poller) Telegram Message the configured bot Google Chat Mention the app in a space Discord DM the bot, @mention it in a channel, or use /ask / /today slash commands CLI openexecutive chat Document Upload Upload your pitch deck, financial model, strategy docs, or any company documents via the web UI or API. The Executive will reference them when relevant. # Via CLI openexecutive upload deck.pdf model.xlsx strategy.md # Via API curl -X POST http://localhost:8000/documents \ -F " file=@deck.pdf " \ -F " domain=strategy " Deployment (Fly.io) Two environments, each a separate set of Fly apps, driven by branch: Environment Trigger Workflow Apps dev push/merge to main (continuous) .github/workflows/deploy.yml openexec-api-dev , openexec-ui-dev qa push/merge to qa (deliberate promotion) .github/workflows/deploy-qa.yml openex