SELECT 1
Entry 001Sat 2026.10.11
One launch a day. Picked, run, explained.

Sat 2026.10.11

Talorys: a personal AI assistant, almost for free

Today's pick: Talorys

Talorys is an open-source personal AI assistant, with chat, memory, tasks, notes and scheduled reminders, that installs into the user's own Cloudflare account with one command.

It is today's pick because the code shows exactly how the design, from storage down to memory search, was reshaped to keep one condition, "my assistant runs in my account," inside the free plan.

exit 0Ran itIt runs. Install is two commands, but memory is keyword search, so a rephrased question misses.
Talorys 채팅 화면. 할 일 추가, 1분 알림, 할 일 목록 조회에 각각 도구 호출 라벨이 붙어 있다.
A conversation with the mock model. Adding a task, a one-minute reminder, and listing tasks, each with its tool-call label. Desktop, 1280 wide.
Found on
GitHub
Built with
TypeScript, Hono, Cloudflare Agents SDK, Claude Opus 5.5

What is different

All the data lives in a single Durable Object, a small server with its own storage that wakes only when a request arrives. Fifteen SQLite tables and an FTS5 index sit inside it, and KV, D1, R2 and Vectorize are not used. The wrangler config written by the installer has only two bindings, Workers AI and the Durable Object. The price of this choice is memory. The memories sent to the model each turn come from splitting the user's sentence into words of two or more characters, dropping stop words, running a prefix OR query against FTS5, ranking by BM25, and keeping at most eight, plus the four most recently edited preferences. There are no embeddings and no vector index. So "memory" is keyword search, not semantic search, and different wording misses. In exchange there are zero external services, and because reminders run on the same object's alarms, one Worker is the whole assistant. What this idea buys is clear. Give up one step of memory quality, and a personal assistant can be deployed with no server and close to zero running cost.

How it was built

All twelve commits are dated 2026-10-10, and every one carries Claude Opus 5.5 in its Co-Authored-By trailer. The code sits on the Hono router and the Cloudflare Agents SDK, and the model is glm-4.7-flash on Workers AI. The README says nothing about how it was made.

Running it

npm install took 16 seconds, and one npm run dev brings up the Worker, the Pages Function and Vite together. It runs without a Cloudflare account because the local build swaps the model for a deterministic mock provider. So what I checked today was not the model's answers but everything around them: tool calls, storage and scheduling. "remember that …" landed on the memory page as a preference, "add task …" appeared in the task list, and "list tasks" read it back. "remind me in 1 minutes" arrived in the notification center, but 117 seconds later. The code rounds to the minute and adds 59 seconds, so a one-minute reminder lands on the next full minute after more than a minute has passed. That is a design choice, not a bug. The three README claims (reminders do not use AI, nothing is sent out, no paid services are created) held in both code and execution. The Worker bundle was 602 KiB gzipped.

Total Upload: 3190.12 KiB / gzip: 601.88 KiB
--dry-run: exiting now.
iPhone 13 크기의 Talorys 첫 화면. 인사말과 추천 질문 넷, 오른쪽 위에 알림 배지 1.
The first screen under iPhone 13 emulation. The badge at the top right is the reminder that had just arrived.
Automations 페이지. stand up and stretch 알림이 완료 상태이고 실행 기록에 success 가 찍혀 있다.
The Automations page after the reminder fired. The schedule ran once, on the minute, and flipped to completed.

Getting started

  1. npx create-talorys@latest
You need
A Cloudflare account (browser login during install) · Node.js 22 or later
Cost
Runs within the Cloudflare free plan. Workers AI has a daily allocation; when it runs out, chat stops but tasks, notes and reminders keep working.

The installer deploys the Worker and the Pages project and prints the URL. To run it locally only, clone the repository, run npm install, then npm run dev.

Steps select 1 ran.

Follow-ups

Checked again after 7, 30 and 90 days: still alive, what changed, how people reacted.