Cloudflare 무료 계정에 개인 AI 에이전트를 한 줄 명령으로 설치한다

Hacker News7시간 전

Talorys는 개인용 AI 비서를 개발자 자신의 Cloudflare 계정 안에서만 돌리는 오픈소스 프로젝트다. 별도 서버나 데이터베이스, 그리고 운영 주체가 따로 있는 계정이 필요 없다는 점이 핵심이다. 설치 명령 한 줄이면 Cloudflare Pages와 Workers 위에 채팅·메모리·할 일 관리·알림 기능이 붙은 에이전트가 올라간다.

기능은 크게 네 갈래다. 스트리밍 응답과 마크다운, 도구 호출 표시를 지원하는 채팅, 사용자가 직접 보고 고치고 지울 수 있는 장기 메모리, UI와 대화 양쪽에서 생성·수정·삭제가 가능한 할 일·노트·프로젝트, 그리고 일회성·반복 알림과 매일 할 일 요약, 선택적 AI 루틴을 묶은 자동화다. 자동화는 Durable Object 알람 위에서 돌기 때문에 무언가가 계속 켜져 있을 필요가 없다. 메모리는 매 턴마다 전부가 아니라 관련도가 높은 항목만 모델 프롬프트에 들어간다.

구조는 브라우저가 *.pages.dev 사이트와만 통신하는 형태다. /api/* 요청은 Pages Function이 받아 서비스 바인딩으로 에이전트 Worker에 넘기고, 이 Worker는 workers_dev와 preview_urls를 모두 꺼둔 상태로 배포된다. 에이전트 본체는 Cloudflare Agents SDK 기반의 Durable Object인 TalorysAgent이며, SQLite에 대화·메모리·할 일·노트·프로젝트·자동화·세션·설정·사용량을 담는다. 모델은 Workers AI의 @cf/zai-org/glm-4.7-flash를 쓰고 스트리밍과 도구 호출을 지원한다. R2, D1, KV, Vectorize, AI Search, Workflows 같은 다른 저장소나 서비스는 따로 만들지 않는다.

설치는 npx create-talorys@latest 한 줄로 시작한다. Node.js 20.18 이상을 확인하고 번들된 Wrangler CLI를 사용하며, Cloudflare 로그인을 검증하거나 브라우저로 인증 페이지를 연다. 계정과 에이전트 이름을 고르고 소유자 비밀번호를 입력하면 PBKDF2-SHA256으로 로컬에서 해시해 Cloudflare 시크릿으로만 저장한다. 256비트 세션 시크릿과 talorys-<id>-agent, talorys-<id>-web 같은 리소스 이름을 생성한 뒤 Worker와 Pages 프로젝트를 배포하고, AI 추론 없이 프런트엔드·인증 엔드포인트·비인증 거부·스토리지 상태를 검사한다. 중간에 끊겨도 같은 자리에서 다시 실행하면 기존 리소스를 재사용하며 중복 생성이나 비밀번호 재입력, 데이터 삭제가 없다. CI용으로는 TALORYS_OWNER_PASSWORD 환경변수와 --yes, --account-id 조합을 쓸 수 있다.

인증과 권한 확인은 프런트엔드가 아니라 Worker에서 처리한다. 로그인은 Wrangler의 표준 OAuth 흐름을 쓰고 Global API Key는 요구하지 않는다. API 토큰을 쓸 경우 Workers Scripts 편집, Cloudflare Pages 편집, Account Settings 읽기 권한이 필요하다. 여러 기기에서 같은 소유자로 로그인할 수 있고 세션은 설정 화면에서 관리한다. 비밀번호를 잊으면 reset-password 명령으로 시크릿을 교체하고 모든 기기를 로그아웃시킨다. 텔레메트리나 분석, 추적, 광고 코드는 없고 개발자에게 전송되는 데이터도 없다.

무료 플랜에 맞춰 설계됐지만 무제한 무료는 아니다. 요청 수와 Durable Object 사용량, Workers AI의 일일 Neuron 할당량은 Cloudflare가 정하는 계정 단위 쿼터이며 바뀔 수 있다. AI 할당량이 소진되면 채팅에 안내가 뜨고 다음 날 초기화 후 다시 동작하는데, 그동안에도 할 일·노트·메모리·알림은 그대로 쓸 수 있고 데이터는 건드리지 않는다. 유료 플랜이라면 포함량을 넘긴 부분은 Cloudflare가 과금한다. 설정의 AI 항목에서 최대 출력 토큰, 최대 컨텍스트 토큰(오래된 대화는 요약), 요청당 도구 호출·추론 단계 수, 일일 AI 요청 수, 일일 예약 AI 실행 수를 조절할 수 있다. 단순 알림과 할 일 요약은 AI를 아예 쓰지 않는다.

로컬 개발은 저장소를 클론한 뒤 npm run dev로 에이전트 Worker(8787), Pages Function 프록시(8788), Vite UI(5173)를 한 터미널에서 띄운다. 이때 결정적 목 AI 프로바이더를 쓰기 때문에 Cloudflare 로그인이 필요 없고 상태는 .wrangler/state에 남는다. 백업은 설정의 개인정보 항목에서 JSON으로 내려받으며 세션과 자격 증명은 포함되지 않는다. 같은 백업을 두 번 가져와도 문제가 없도록 한 트랜잭션으로 병합한다. 업데이트는 update 명령으로 같은 리소스에 최신 Worker와 프런트엔드를 재배포하며, Durable Object 네임스페이스는 다시 만들지 않고 마이그레이션은 첫 요청 때 자동으로 처리된다.

개인용 AI 비서를 만들려면 보통 서버를 두고 데이터베이스를 붙이고 API 키와 사용량을 관리해야 한다. Talorys는 그 부담을 Cloudflare의 서버리스 조합으로 밀어 넣고, 데이터 주권은 사용자 계정에 남기는 쪽을 택했다. 단일 사용자 전용이라는 전제도 같은 맥락이다. 가입도 팀도 없이 설치자가 정한 비밀번호 하나로 동작하기 때문에, 여러 사용자를 위한 권한 모델이나 멀티테넌시를 설계할 필요가 없다.

실무 관점에서 눈여겨볼 지점은 Cloudflare Agents SDK와 Durable Object 알람을 개인용 에이전트의 저장소·스케줄러로 함께 쓰는 패턴이다. 별도 큐나 크론 인프라 없이 반복 알림과 예약 작업을 처리하고, SQLite 기반 Durable Object 하나에 대화와 상태를 모아 두는 구성은 사내 도구나 개인 자동화를 만들 때 참고할 만하다. 서비스 바인딩으로 Worker를 공개 URL 없이 묶어 두고 인증을 Worker 쪽에 두는 방식도 그대로 가져다 쓸 수 있는 설계다. 무료 한도 안에서 동작하도록 가드레일을 기본 제공한다는 점도 개인 프로젝트에서 실용적이다.

주의할 점도 분명하다. 단일 사용자 전용이라 다중 사용자나 팀 협업은 고려되지 않았고, 무료 플랜의 쿼터는 Cloudflare 정책에 따라 달라질 수 있다. 채팅 메시지와 프롬프트에 포함된 메모리는 Workers AI 추론을 위해 Cloudflare가 처리하므로, 완전한 로컬 추론을 기대하면 안 된다. 새로 만든 pages.dev 사이트는 상태 검사가 통과되기까지 몇 분이 걸릴 수 있고, 권한이 부족한 계정이나 토큰을 쓰면 배포가 실패한다. 문제가 생기면 doctor 명령으로 점검할 수 있다.