Agentic Inbox: Cloudflare Workers 위에서 실행되는 AI 에이전트 내장 자체 호스팅 이메일 클라이언트

Agentic Inbox 소개

이메일은 여전히 가장 중요한 업무 커뮤니케이션 채널 중 하나이지만, 받은 편지함 관리와 답장 작성에 소요되는 시간은 상당합니다. AI 에이전트를 이메일 워크플로우에 통합하는 시도는 많았지만, 대부분 외부 SaaS 서비스에 이메일 접근 권한을 부여해야 하거나 복잡한 서버 인프라 설정이 필요했습니다. Agentic Inbox는 Cloudflare의 완전 관리형 엣지 인프라를 활용하여 이 문제를 해결합니다. Cloudflare Workers, Durable Objects, Email Routing, R2, Workers AI를 조합하여, 서버 없이도 자체 호스팅 가능한 AI 에이전트 내장 이메일 클라이언트를 구현했습니다. Cloudflare가 공식 오픈소스로 공개한 이 프로젝트는 AI 에이전트 SDK의 실제 프로덕션 적용 사례로도 주목받고 있습니다.

Agentic Inbox의 핵심 아이디어는 각 메일박스를 독립된 Durable Object 인스턴스로 격리하는 것입니다. 각 Durable Object는 자체 SQLite 데이터베이스를 가지며, 메일 수신, 저장, 검색, 초안 작성이 모두 해당 인스턴스 내에서 처리됩니다. 이 아이소레이션(isolation) 아키텍처는 멀티 테넌트 환경에서도 메일박스 간 데이터 오염을 방지하고, Cloudflare의 글로벌 엣지 네트워크를 통해 낮은 지연 시간을 유지합니다. AI 에이전트는 별도의 EmailAgent Durable Object로 분리되어, 수신 이메일을 분석하고 답장 초안을 자동 생성하는 역할을 담당합니다.

이메일 에이전트는 Cloudflare Agents SDK의 AIChatAgent를 기반으로 구현되며, Kimi-k2.5 언어 모델(Workers AI를 통해 실행)을 사용합니다. 에이전트는 9가지 이메일 도구(받은 편지함 읽기, 스레드 검색, 초안 작성, 전송 등)를 장착하고 있으며, 항상 사용자의 명시적 확인 없이는 실제 전송을 실행하지 않는다는 안전 정책을 기본으로 적용합니다. 사용자는 에이전트 사이드 패널에서 실시간 스트리밍 마크다운 응답과 도구 호출 과정을 투명하게 확인할 수 있습니다.

Agentic Inbox의 아키텍처

프로젝트는 세 개의 주요 레이어로 구성됩니다.

Browser (React 19 SPA + 에이전트 사이드 패널)
    ↓
Hono Worker (API 라우팅 + SSR)
    ↓
MailboxDO (SQLite + R2 첨부파일)  &  EmailAgent DO (AIChatAgent + Workers AI)

브라우저 레이어: React 19, React Router v7, Tailwind CSS로 구현된 단일 페이지 애플리케이션입니다. 우측에는 에이전트 사이드 패널이 열려, 자연어로 에이전트에게 지시를 내리고 응답을 스트리밍으로 받을 수 있습니다.

Hono Worker: Cloudflare Workers 위에서 실행되는 경량 HTTP 서버입니다. API 라우팅과 서버 사이드 렌더링(SSR)을 처리합니다.

MailboxDO: 각 메일박스에 할당된 Durable Object입니다. 이메일 메타데이터와 본문은 내장 SQLite에 저장되고, 첨부파일은 Cloudflare R2에 보관됩니다. Cloudflare Email Routing을 통해 수신된 이메일이 WebSocket을 통해 이 오브젝트로 전달됩니다.

EmailAgent DO: AIChatAgent를 상속한 Durable Object입니다. Workers AI의 Kimi-k2.5 모델을 호출하여 이메일 분석, 초안 작성, 대화 기반 질의응답을 수행합니다. 9가지 이메일 도구 집합을 통해 MailboxDO의 데이터를 읽고 조작합니다.

자동 초안 생성 워크플로우

Agentic Inbox의 핵심 자동화 기능은 신규 이메일 수신 시 자동 초안 생성입니다. 이메일이 도착하면 EmailAgent가 자동으로 해당 이메일과 스레드 맥락을 분석하여 적절한 답장 초안을 생성합니다. 이 초안은 사용자의 확인을 기다리며 대기 상태로 저장되고, 사용자가 에이전트 패널이나 인터페이스에서 명시적으로 "전송" 승인을 해야만 실제로 발송됩니다.

사용자는 에이전트와 대화하면서 초안을 수정하거나, 특정 이메일에 대한 질문을 하거나, 받은 편지함 전체를 자연어로 검색할 수 있습니다.

사용자: "지난 주 John에게서 온 이메일들 요약해줘"
에이전트: [search_inbox 도구 호출] → "총 3개의 이메일이 있습니다. ..."

사용자: "마지막 이메일에 화요일 미팅 확정 답장 초안 작성해줘"
에이전트: [read_thread 도구 호출] → [draft_reply 도구 호출] → "초안이 작성되었습니다..."

사용자: "전송해줘"
에이전트: [send_email 도구 호출] → "이메일을 전송하시겠습니까? (확인 필요)"

설치 및 배포 요구사항

# 저장소 클론 후 의존성 설치
git clone https://github.com/cloudflare/agentic-inbox.git
cd agentic-inbox
npm install

# Cloudflare 서비스 설정 필요:
# - Cloudflare 계정 (도메인 포함)
# - Email Routing 활성화 (수신)
# - Email Service 활성화 (발신)
# - Workers AI 활성화
# - Cloudflare Access 설정 (프로덕션 인증)

# 개발 서버 실행
npm run dev

# 프로덕션 배포
npx wrangler deploy

기술 스택 요약:

  • 프론트엔드: React 19, React Router v7, Tailwind CSS
  • 백엔드: Hono, Cloudflare Workers, Durable Objects, R2
  • AI: Cloudflare Agents SDK, AI SDK v6, Workers AI (Kimi-k2.5)
  • 언어: TypeScript (100%)

라이선스

Agentic Inbox 프로젝트는 Apache 2.0 라이선스로 공개되어 있습니다.

:github: Agentic Inbox 프로젝트 GitHub 저장소

더 읽어보기




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: