Talorys: Cloudflare 무료 티어에서 실행하는 셀프 호스팅 개인 AI 에이전트
TL;DR
Talorys는 단일 명령어로 자신의 Cloudflare 계정 내에 즉시 배포할 수 있는 오픈 소스 개인 AI 비서입니다. 외부 백엔드 없이 Cloudflare의 무료 티어 서비스에서 완전히 실행됩니다.
Talorys가 제공하는 기능
- 비공개 채팅 인터페이스: 스트리밍 Markdown 응답 및 도구 활동 표시기 제공.
- 지속적 메모리: SQLite 기반 Durable Object에 저장되며, 매 턴마다 가장 관련성 높은 사실만 모델에 전송됩니다.
- 작업, 메모, 프로젝트를 위한 전체 CRUD: UI 또는 자연어 명령(예: “내일 프로젝트 검토 작업 추가”)을 통해 관리.
- 자동화: 일회성 및 반복 알림, 일일 요약, Durable Object 알람에서 실행되는 선택적 AI 기반 루틴.
- 단일 사용자 설계: 가입 절차나 팀 기능이 없으며, 설치 프로그램이 Cloudflare 보안 비밀로 저장되는 소유자 비밀번호를 생성합니다.
- 우아한 성능 저하(Graceful degradation): Workers AI 할당량이 소진되어도 AI가 아닌 기능(작업, 메모, 알림)은 계속 작동합니다.
"한 사람. 하나의 Cloudflare 계정. 하나의 명령어. 하나의 개인 AI 에이전트." – 프로젝트 README
아키텍처 개요
Browser ──HTTPS──▶ Cloudflare Pages (React UI + /api Pages Function)
│ service binding (private)
▼
Private Worker (Hono router)
│ getAgentByName("personal-agent")
▼
TalorysAgent – Cloudflare Agents SDK Durable Object
├─ SQLite: chats, memories, tasks, notes, automations, …
├─ Workers AI: @cf/zai-org/glm-4.7-flash (streaming + tool calls)
└─ Alarms: scheduled reminders & recurring jobs
- 브라우저는 항상
*.pages.dev사이트에만 연결됩니다. API 호출은 서비스 바인딩을 통해 비공개 Worker로 프록시되므로, Worker는 공개 URL을 가지지 않습니다. - 인증 및 권한 부여는 프론트엔드가 아닌 Worker 내부에서 수행됩니다.
- 채팅 응답은 Server-Sent Events(SSE)를 사용하여 클라이언트로 스트리밍됩니다.
사용된 Cloudflare 서비스 (모두 무료 티어 친화적)
| 서비스 | 역할 | 무료 티어 가용성 |
|---|---|---|
| Cloudflare Pages | React UI 및 API Pages Function 호스팅 | ✅ |
| Cloudflare Workers | 비공개 API Worker (공개 엔드포인트 없음) | ✅ |
| Durable Objects (SQLite) | 모든 사용자 데이터 저장 및 알람 기반 스케줄 실행 | ✅ |
| Workers AI | LLM 제공 (@cf/zai-org/glm-4.7-flash) |
✅ (일일 뉴런 할당량) |
Talorys는 R2, D1, KV, Vectorize, AI Search, Workflows와 같은 유료 서비스를 의도적으로 피합니다.
원클릭 배포
npx create-talorys@latest
설치 프로그램은 다음 단계를 수행합니다:
- Node 20.18+ 버전을 확인하고 번들된 Wrangler CLI를 사용합니다.
- Cloudflare 인증을 수행합니다(필요 시 OAuth 페이지가 열립니다).
- 계정과 에이전트 이름을 선택하게 합니다.
- 소유자 비밀번호를 입력받습니다. 비밀번호는 로컬에서 PBKDF2-SHA256으로 해싱되어 Cloudflare 보안 비밀로 저장됩니다.
- 256비트 세션 비밀과 고유 리소스 이름을 생성합니다.
- 비공개 Worker를 배포하고, Durable Object 네임스페이스를 생성하며, 보안 비밀을 저장하고, 서비스 바인딩이 포함된 Pages 프로젝트를 생성합니다.
- AI 추론을 호출하지 않고 상태 확인(프론트엔드, 인증 엔드포인트, 스토리지)을 실행합니다.
- 최종
https://<name>.pages.devURL을 출력합니다.
설치 프로그램은 talorys.json(메타데이터 전용)과 배포 가능한 아티팩트가 포함된 talorys/ 디렉토리를 생성합니다. 명령어를 다시 실행하면 중단된 설치를 재개하며 기존 데이터를 삭제하지 않습니다.
비대화형 모드
TALORYS_OWNER_PASSWORD=... \
npx create-talorys@latest --yes --account-id <ACCOUNT_ID>
(OAuth 흐름을 통해 로그인하지 않은 경우 CLOUDFLARE_API_TOKEN이 필요합니다.)
필요한 권한
OAuth 흐름 대신 API 토큰을 사용하는 경우 다음 권한이 필요합니다:
- Account › Workers Scripts › Edit
- Account › Cloudflare Pages › Edit
- Account › Workers AI › Read
- Account › Account Settings › Read
- User › User Details › Read (선택 사항, 이메일 표시용)
데이터 거주지 및 개인정보 보호
대화, 메모리, 작업, 메모, 프로젝트, 자동화 및 설정을 포함한 모든 사용자 데이터는 사용자의 Cloudflare 계정 내의 SQLite 기반 Durable Object에 상주합니다. Talorys는 텔레메트리, 분석 또는 광고 코드를 전송하지 않으며, 프로젝트 관리자에게 데이터를 절대 보내지 않습니다.
"Talorys는 텔레메트리, 분석, 추적 또는 광고 코드가 없으며 개발자에게 아무것도 전송하지 않습니다." – README
Cloudflare는 플랫폼 서비스(LLM 추론 실행 포함)를 제공하기 위해서만 데이터를 처리합니다. 자세한 내용은 Cloudflare의 개인정보 보호정책 및 Workers AI 약관을 검토하십시오.
무료 티어 제한 및 비용 모델
- Cloudflare의 무료 플랜은 요청, Durable Object 사용량 및 Workers AI에 대한 일일 10,000 뉴런 할당량에 대해 계정 수준의 제한을 부과합니다.
- AI 할당량이 소진되면 UI에 명확한 메시지가 표시되며 일일 초기화 후 재개됩니다. AI가 아닌 모든 기능은 계속 작동합니다.
- 유료 Cloudflare 플랜으로 업그레이드하는 경우, 무료 허용량을 초과하는 사용량은 Talorys가 아닌 Cloudflare에 의해 청구됩니다.
- 내장된 가드레일(설정 → AI에서 구성 가능)을 통해 다음을 제한할 수 있습니다:
- 최대 출력 토큰
- 최대 컨텍스트 토큰(오래된 기록은 요약됨)
- 요청당 최대 도구 호출 수
- 일일 최대 AI 요청 수
- 일일 최대 예약 AI 실행 수
로컬 개발 워크플로우
git clone https://github.com/rociiu/talorys.git
cd talorys
npm install
npm run dev
npm run dev는 다음을 시작합니다:
- 에이전트 Worker (포트 8787에서
wrangler dev) - Pages Function 프록시 (포트 8788에서
wrangler pages dev) - Vite UI (
http://localhost:5173)
결정론적 모의 AI 제공자가 사용되므로 로컬 테스트를 위해 Cloudflare 로그인이 필요하지 않습니다. 상태는 .wrangler/state에 유지됩니다.
백업 및 마이그레이션
- 내보내기: 설정 → 개인정보 보호 → 백업 다운로드를 통해 모든 사용자 생성 데이터(대화, 메모리, 작업, 메모, 프로젝트, 자동화, 설정)가 포함된
talorys-backup.json을 생성합니다. 자격 증명 및 세션 데이터는 제외됩니다. - 가져오기: UI가 JSON을 검증하고 트랜잭션 방식으로 병합합니다. 동일한 백업을 두 번 가져와도 안전합니다.
기존 배포 업데이트
talorys/ 디렉토리에서 다음을 실행합니다:
npx create-talorys@latest update
이 명령어는 최신 Worker와 프론트엔드를 동일한 리소스에 재배포합니다. Durable Object 네임스페이스는 유지되며, 소유자 비밀번호와 세션은 그대로 유지되고 스키마 마이그레이션은 첫 번째 요청 시 자동으로 실행됩니다.
추가 도우미 명령어:
npx create-talorys@latest status– 현재 배포 상태를 표시합니다.npx create-talorys@latest doctor– 자동 진단을 실행합니다.npx create-talorys@latest reset-password– 소유자 비밀번호 보안 비밀을 교체하고 모든 기기에서 로그아웃합니다.
커뮤니티 피드백 및 비판 (HN 댓글)
- “셀프 호스팅”의 정의 – 일부 댓글 작성자들은 Cloudflare의 관리형 서비스에 전적으로 의존하는 것은 진정한 셀프 호스팅이 아니라고 주장합니다. 한 사용자는 “Cloudflare에 모든 것을 의존하는 것은 셀프 호스팅이 아니다”라고 지적합니다.
- 무료 티어 신뢰성 – 한 사용자는 Cloudflare의 무료 AI 할당량 문제로 어려움을 겪었으며, 뉴런 사용량에 대해 예상치 못한 청구를 받았고 지원을 받지 못했다고 보고했습니다.
- 성능 우려 – 일부 사용자는 Workers AI의 대기 시간이 대화형 채팅에 “매우 느리다”고 느끼며, 백그라운드 작업에 더 적합하다고 제안합니다.
- 커스터마이징 가능성 – 한 댓글은 AI 엔드포인트를 로컬 모델 서버로 교체하는 것이 간단하여 프로젝트를 더 전통적인 셀프 호스팅 솔루션으로 바꿀 수 있다고 지적합니다.
- Durable Objects에 대한 찬사 – 한 댓글 작성자는 Durable Objects를 코드와 데이터의 긴밀한 결합을 강조하며 본 것 중 “가장 멋진 것”이라고 평가합니다.
- 보안 인식 – 비평가들은 이 제품을 “셀프 호스팅”으로 마케팅하는 것이 제3자 플랫폼에 개인 데이터를 저장하는 보안상의 의미를 사용자에게 오도할 수 있다고 경고합니다.
Talorys를 사용해야 할 때
- 서버, 데이터베이스 또는 Docker 컨테이너를 관리하지 않고 개인 AI 비서를 원할 때.
- Cloudflare 무료 티어에 데이터를 유지하는 것이 편안하고 일일 AI 뉴런 제한을 수용할 수 있을 때.
- 단일 사용자 개인정보 보호(가입 없음, 제3자 텔레메트리 없음)를 중요하게 생각하며 기본 인프라로서 Cloudflare를 사용하는 것에 동의할 때.
- 원클릭 설치와 데스크톱 및 모바일에서 작동하는 웹 UI를 선호할 때.
제한 사항 및 미해결 질문
- 진정한 셀프 호스팅: 이 솔루션은 Cloudflare에 종속되어 있습니다. 온프레미스 하드웨어로 이동하려면 Workers, Durable Objects 및 Workers AI를 교체해야 합니다.
- 확장성: 단일 사용자를 위해 설계되었습니다. 다중 사용자 시나리오는 상당한 아키텍처 변경이 필요합니다.
- 평가: 한 댓글 작성자가 언급했듯이, 메모리 회상 정확도나 작업 완료율에 대한 공개적인 벤치마크가 거의 없습니다.
- 대기 시간: Workers AI는 실시간 채팅에 눈에 띄는 대기 시간을 유발할 수 있으며, 이는 사용자 경험에 영향을 줄 수 있습니다.
결론
Talorys는 플랫폼의 제한 사항과 “셀프 호스팅”을 “자신의 Cloudflare 계정에서 호스팅”하는 것으로 정의하는 것을 수용한다면, 서버 관리 없이 비용 제로로 완전히 기능하는 개인 AI 비서를 구축하고 배포할 수 있음을 보여줍니다. 이 프로젝트의 오픈 소스 특성, 간단한 설치 프로그램 및 Durable Objects 사용은 취미 활동가와 개인정보를 중시하는 사용자에게 매력적인 출발점이 되며, 커뮤니티의 비판은 더 명확한 용어와 더 강력한 성능 보장의 필요성을 강조합니다.
Sources
관련
- 프로젝트
- 프로젝트
- Dispatch
- Dispatch
- Dispatch