2026.10.11 일
Talorys: 개인 AI 비서를 거의 공짜로 운영하기
오늘의 픽: Talorys
Talorys 는 개인 AI 비서를 설치하는 오픈소스 프로덕트다. 명령 한 줄로 사용자의 Cloudflare 계정 안에 설치되고, 채팅, 기억, 할 일, 노트, 예약 알림이 들어 있다.
오늘의 픽으로 선정한 이유는 개인 AI 비서를 무료 플랜 안에서 운영하려고 무엇을 포기했는지가 코드에 그대로 남아 있어서다.

- 출처
- GitHub
- 만든 방식
- TypeScript, Hono, Cloudflare Agents SDK, Claude Opus 5.5
무엇이 문제인가
개인 AI 비서를 가지려면 지금은 방법이 두 가지다.
- 월 구독료를 지불하고 상용 서비스를 사용한다.
- 오픈소스를 받아 자신의 서버에 올린다. 서버와 데이터베이스를 구매하고 모델 API 키를 넣어야 하며, 사용하지 않을 때도 요금이 부과된다.
제작자는 HN 글에서 이유를 이렇게 밝혔다. 월 구독 없이, 상용 서비스에 의존하지 않고, 비서를 자기가 소유하고 통제하고 싶어서 만들었다.
어떻게 해결했나
Talorys 는 그 사이에 세 번째 선택지를 만든다. 명령 하나로 자신의 Cloudflare 계정 안에 비서 전체를 설치하고, 무료 플랜 안에서만 작동하도록 설계했다. 서버를 구매하지 않고, 모델도 Workers AI 의 하루 무료 할당으로 사용하며, 채팅·기억·할 일·노트·알림이 한 번에 생긴다. HN 에는 반론도 있다. 상용 서비스에 의존하지 않는다는 말은 과장이며, 실제로는 Cloudflare 의 서비스 네 개에 의존하고 무료 범위도 Cloudflare 가 언제든 바꿀 수 있다고 적혀 있다. 타당한 말이다. 이 프로덕트는 의존을 없애지 않았다. 월 요금과 서버 운영을 없앴다.
무엇이 다른가
그게 가능한 이유는 구조에 있다. 자료가 전부 Durable ObjectCloudflare 의 작은 서버 단위. 저장소가 딸려 있고 요청이나 알람이 올 때만 깨어난다. 하나에 들어간다. SQLite 테이블 15개와 FTS5 색인이 그 안에 있고, KV, D1, R2, Vectorize 는 사용하지 않는다. 설치 스크립트는 wrangler 설정을 만드는데, 여기에도 바인딩은 Workers AI 와 Durable Object 두 개뿐이다. 알림은 같은 객체의 알람으로 작동하므로 Worker 하나로 비서 전체가 완성된다. 이 선택의 트레이드오프는 기억이다. 기억은 매 턴 이렇게 골라 모델에 넣는다. 사용자의 문장을 두 글자 이상의 단어로 나누어 불용어를 빼고, FTS5 에 질의해 BM25 로 순위를 계산한 뒤 최대 8개를 가져온다. 여기에 최근 수정된 선호 4개를 더한다. 임베딩도 벡터 색인도 없다. 그래서 기억은 의미 검색이 아니라 키워드 검색이고, 어휘가 다르면 못 찾는다.
어떻게 만들었나
- 커밋 12개가 전부 2026-10-10 하루에 있다.
- 12개 모두 Co-Authored-By 트레일러에 Claude Opus 5.5 가 적혀 있다.
- 코드는 Hono 라우터와 Cloudflare Agents SDK 위에 작성됐고, 모델은 Workers AI 의 glm-4.7-flash 다.
- README 에는 어떻게 만들었는지 적혀 있지 않다.
실행해 보니
로컬에서는 모델을 결정적 모의 공급자로 교체하므로 Cloudflare 계정 없이도 작동한다. 그래서 오늘은 모델의 답이 아니라 도구 호출과 저장과 스케줄을 아래 순서로 확인했다.
- 설치와 실행.
npm install에 16초가 걸렸고,npm run dev한 번으로 Worker, Pages 함수, Vite 가 함께 실행됐다. - 기억과 할 일. "remember that …" 은 기억 페이지에 선호로 저장됐고, "add task …" 는 할 일 목록에 추가됐다. "list tasks" 로 그 할 일을 조회했다.
- 알림. "remind me in 1 minutes" 는 알림 센터에 도착했지만 117초 뒤였다. 코드가 지금 시각에 요청한 분과 59초를 더한 뒤 분 단위로 자른다. 그래서 1분 알림은 1분이 넘게 지나고 다음 정분에 실행된다. 설계이지 버그는 아니다.
- README 대조. README 에 적힌 세 가지(알림은 AI 를 사용하지 않는다, 외부로 요청을 보내지 않는다, 유료 서비스를 만들지 않는다)는 코드에서 모두 확인됐다. 실행에서도 1분 알림이 모델 호출 없이 도착했다.
- 번들 크기. Worker 번들은 gzip 602 KiB 였다.
Total Upload: 3190.12 KiB / gzip: 601.88 KiB
--dry-run: exiting now.


확인하지 못한 것
- Workers AI 의 실제 답과 하루 할당량이 바닥났을 때의 동작. 확인하려면 Cloudflare 계정에 배포해야 한다.
- 한국어 기억에 조사가 붙어 있을 때 FTS5 의 기본 토크나이저가 얼마나 되찾는지. 다음에
tal_memories_fts에 한국어 문장을 넣고 질의를 섞어 측정하자.
판정
작동한다. Cloudflare 계정 없이 로컬에서 비서 전체가 실행됐다. 다만 기억이 키워드 검색이라 단어가 다르면 못 찾는다. 자신의 Cloudflare 계정에서 비서를 운영하고 싶고 기억은 메모 수준이면 충분한 경우에 써 볼 만하다. 기억이 핵심이라면 벡터 검색이 붙기 전까지는 이 프로덕트는 적합하지 않다.
얻어갈 것
- 기능마다 사용자 기억을 벡터 검색 없이 키워드 검색으로 시작해도 되는지 적어 보자. Talorys 는 벡터 검색을 포기하고 서버와 운영비를 없앴다.
- 외부 서비스를 하나도 사용하지 않으면 무엇을 못 하게 되는지부터 명시해 두자. 여기서는 의미 검색과 Workers AI 밖의 모델이 빠졌다.
- 코드가 예약 시각을 분 단위로 자르면, 1분 알림이 실제로 몇 초 뒤에 오는지 측정해 보자. Talorys 는 117초였다.
시작하기
npx create-talorys@latest
- 필요한 것
- Cloudflare 계정 (설치 중 브라우저 로그인) · Node.js 22 이상
- 비용
- Cloudflare 무료 플랜 안에서 운영된다. Workers AI 는 하루 할당량이 있고, 할당량이 바닥나면 채팅만 멈추고 할 일·노트·알림은 유지된다.
설치 프로그램이 Worker 와 Pages 를 배포하고 주소를 출력한다. 로컬에서만 보려면 저장소를 클론해 npm install 뒤 npm run dev 를 실행한다.
실행해서 확인한 절차다.
진행
- 3일확인 못 함
- 7일활발
- 15일활발
- 30일예정
- 90일예정
- 180일예정
- 365일예정
최근 확인 15일, 2026.10.25 일
- 런칭 이후 커밋
- 128
- 스타
- 365 → 1,383
- 최신 릴리스
- create-talorys@0.1.7
- 마지막 커밋
- 2026.10.24
- 웹 UI 에 두 번째 언어로 한국어를 추가했다.
- AI 가 작업 계획을 제안하고, 소유자가 확인한 계획만 실행한다.
- 개인 액세스 토큰으로 외부 도구와 다른 AI 비서가 Talorys 에 접근할 수 있다. 알림은 Web Push 로 전달된다(create-talorys@0.1.7).
- 설치 프로그램의 출력에서 모델 제공자의 API 키와 Bearer 토큰을 가린다.
- 자동화가 겹치거나 멈추는 문제를 고쳤다. 일회성 자동화는 시간대를 바꾼 뒤 실행 시각이 이미 지났으면 일시 정지된다.
3일 확인 못 함: 진행 확인을 2026.10.16 에 시작해서 그 전에는 확인하지 못했다.