Dựng trợ lý AI cá nhân trên Cloudflare free tier chỉ với một lệnh npx
Talorys là agent AI mã nguồn mở chạy trong chính tài khoản Cloudflare của bạn, có chat, bộ nhớ, task, ghi chú và nhắc việc. Bài hướng dẫn cài đặt và nêu những điểm cần cân nhắc về chi phí, tốc độ, quyền riêng tư.
Bạn gõ vào khung chat: "Add a task to review my project tomorrow", và một task mới xuất hiện trong danh sách. Trợ lý này không chạy trên server của nhà phát triển nào. Nó nằm hoàn toàn trong tài khoản Cloudflare của chính bạn.
Đó là ý tưởng của Talorys, một dự án mã nguồn mở vừa lên Hacker News (khoảng 323 điểm, 150 bình luận). Tác giả cho biết muốn có một trợ lý AI mình sở hữu và kiểm soát được, không phải trả phí thuê bao hàng tháng hay phụ thuộc vào dịch vụ của người khác. Với dev và sinh viên thích tự thử nghiệm, đây là một hướng đáng xem. Tuy nhiên, "miễn phí" ở đây không có nghĩa là "không giới hạn", và bài này sẽ nói rõ chỗ đó.
Talorys làm được gì
Theo README, Talorys là trợ lý một người dùng (không đăng ký, không tài khoản, không nhóm), gồm:
Chat có streaming, hiển thị Markdown và chỉ báo khi AI đang gọi công cụ.
Bộ nhớ: các thông tin cá nhân bền vững mà bạn xem, sửa, xóa được. Mỗi lượt chat chỉ những ký ức liên quan nhất mới được gửi cho mô hình.
Lịch sử bộ nhớ: nếu bạn nói đã bán xe, thông tin xe cũ được giữ như "sự thật trong quá khứ" thay vì bị coi là hiện tại. Những mâu thuẫn chưa rõ sẽ chờ bạn duyệt.
Task, ghi chú, dự án: thêm, sửa, xóa trên giao diện hoặc ngay trong chat.
Tự động hóa: nhắc việc một lần hoặc định kỳ, bản tóm tắt task hằng ngày và các "routine" AI tùy chọn. Kết quả gửi vào trung tâm thông báo trong app.
Semantic recall (tìm ký ức theo ý nghĩa, không chỉ theo từ khóa): tùy chọn, mặc định tắt. Bật trong Settings → AI hoặc cài với cờ --semantic.
Một điểm đáng chú ý: khi hết hạn mức AI, task, ghi chú, ký ức và nhắc việc vẫn hoạt động bình thường. Nhắc việc đơn giản và bản tóm tắt task cũng không dùng AI.
Nó chạy như thế nào
Có thể hình dung nó như một ngôi nhà có cổng chính và phòng riêng:
Trình duyệt chỉ nói chuyện với trang .pages.dev của bạn (Cloudflare Pages).
Request /api/ đi qua một Pages Function, rồi chuyển qua service binding (kết nối nội bộ giữa các dịch vụ Cloudflare) tới một Worker riêng tư.
Worker này không có URL công khai (workersdev: false, previewurls: false). Việc xác thực diễn ra ở Worker, không phải ở frontend.
Worker gọi một Durable Object tên personal-agent. Đây là nơi lưu toàn bộ dữ liệu bằng SQLite (hội thoại, ký ức, task, ghi chú, dự án...) và đặt alarm cho nhắc việc.
Mô hình chat là @cf/zai-org/glm-4.7-flash chạy trên Workers AI, hỗ trợ streaming và tool calling.
Nhắc việc chạy bằng alarm của Durable Object nên theo README, không có gì phải online liên tục. Dự án cũng khẳng định không dùng R2, D1, KV, Vectorize, AI Search, Workflows hay dịch vụ trả phí nào.
Cài đặt từng bước
Yêu cầu: Node.js 22+ và một tài khoản Cloudflare. README không nói đăng ký Cloudflare có đòi thẻ thanh toán hay không, nên bạn hãy tự kiểm tra ở bước tạo tài khoản.
Bước 1. Chạy lệnh duy nhất:
bash
npx create-talorys@latest
Bước 2. Installer sẽ lần lượt:
Kiểm tra đăng nhập Cloudflare, hoặc mở trang xác thực trong trình duyệt (dùng OAuth của Wrangler, không cần Global API Key).
Cho bạn chọn tài khoản (nếu có nhiều) và đặt tên agent.
Hỏi mật khẩu chủ sở hữu (nhập ẩn, có kiểm tra độ mạnh). Mật khẩu được băm cục bộ bằng PBKDF2-SHA256 và chỉ lưu dưới dạng Cloudflare secret.
Sinh session secret 256-bit và tên tài nguyên duy nhất (talorys-<id>-agent, talorys-<id>-web).
Deploy Worker, lưu secret, tạo và deploy dự án Pages kèm service binding.
Kiểm tra bản deploy (frontend, endpoint auth, từ chối request chưa xác thực, sức khỏe storage) mà không chạy suy luận AI.
Bước 3. Installer in ra địa chỉ https://….pages.dev thật. Mở lên, nhập mật khẩu và bắt đầu chat.
Một số chi tiết hữu ích:
Nếu bị gián đoạn, chạy lại đúng lệnh đó ở cùng thư mục. Nó đối chiếu với tài nguyên đã có, không tạo trùng và không xóa dữ liệu.
Installer tạo thư mục talorys/ chứa talorys.json (không có secret). Hãy giữ lại để cập nhật sau này.
Quên mật khẩu thì chạy npx create-talorys@latest reset-password trong thư mục đó. Lệnh này thay secret và đăng xuất mọi thiết bị.
Cài không tương tác: TALORYSOWNERPASSWORD=... npx create-talorys@latest --yes --account-id <id>, kèm CLOUDFLAREAPITOKEN nếu chưa đăng nhập.
Nếu dùng API token thay vì đăng nhập trình duyệt, token cần các quyền: Workers Scripts › Edit, Cloudflare Pages › Edit, Workers AI › Read, Account Settings › Read, và tùy chọn User Details › Read.
Thử local trước khi deploy
Muốn xem thử mà chưa đụng tới Cloudflare, bạn có thể chạy local:
bash
git clone https://github.com/rociiu/talorys.git
cd talorys
npm install
npm run dev
Lệnh này khởi động Worker (cổng 8787), proxy Pages (8788) và giao diện Vite (http://localhost:5173). Nó dùng mock AI provider có kết quả xác định sẵn nên không cần đăng nhập Cloudflare. Mật khẩu local mặc định là talorys-dev-password, đổi được bằng TALORYSDEVPASSWORD. Nếu bạn muốn đọc code hoặc đóng góp, chạy local là cách tiện để làm quen trước khi deploy thật.
Chi phí: thiết kế cho gói free, nhưng không vô hạn
README nói thẳng: Talorys được thiết kế để vừa với Workers Free plan và không tự bật tính năng trả phí, nhưng đây không phải "miễn phí không giới hạn". Hạn mức do Cloudflare quy định và có thể thay đổi. Khi hết hạn mức AI trong ngày, chat báo rõ và hoạt động lại sau lần reset hằng ngày.
Để tránh đốt hạn mức, Settings → AI có các "chốt chặn" chỉnh được:
số token đầu ra tối đa,
số token ngữ cảnh tối đa (lịch sử cũ sẽ được tóm tắt),
số lần gọi công cụ và bước suy luận mỗi request,
số request AI mỗi ngày (mỗi lần gọi mô hình đều tính, kể cả mỗi bước suy luận và mỗi lần tóm tắt lịch sử),
số lần chạy routine AI theo lịch mỗi ngày.
Bảng Usage chỉ hiển thị ước tính cục bộ và dẫn tới dashboard Cloudflare. Muốn biết con số chính xác về Neuron (đơn vị tính hạn mức hằng ngày của Workers AI), bạn phải xem ở dashboard đó. Một người bình luận trên Hacker News cho biết gói free có 10.000 neuron mỗi ngày. README không nêu con số này, nên hãy kiểm tra trên trang chính thức của Cloudflare.
Nếu tài khoản của bạn ở gói trả phí, phần vượt mức sẽ bị Cloudflare tính tiền theo gói đó.
Cộng đồng đang bàn cãi gì
Phản hồi trên Hacker News chỉ là ý kiến cá nhân, nhưng đáng đọc trước khi bạn bắt tay vào:
"Self-hosted" có đúng không? Nhiều người cho rằng chạy trên Cloudflare thì không phải tự host. Một người kể rằng phép thử của họ là "có chạy được ngoài Cloudflare không", và với Durable Objects thì không, nên đây chỉ là "tự deploy". Một người khác đoán tác giả muốn nhấn mạnh rằng ngoài tài khoản Cloudflare của bạn thì không còn bên thứ ba nào.
Tốc độ. Một bình luận cho rằng Workers AI khá chậm cho tương tác trực tiếp, phù hợp hơn với tác vụ nền hoặc đánh giá mô hình. Đây là trải nghiệm cá nhân, chưa được kiểm chứng ở đây.
Hóa đơn. Một người cảnh báo từng bị tính tiền vì neuron dù cho rằng mình nằm trong hạn mức, và không nhận được phản hồi từ hỗ trợ. Nếu bạn dùng Workers trả phí, hãy đặt guardrail chặt và theo dõi dashboard thường xuyên.
Điểm sáng. Có người đánh giá Durable Objects là một trong những thứ thú vị nhất họ thấy gần đây: code và dữ liệu đi cùng nhau, "ngủ" khi không dùng và dậy trong vài mili giây.
Quyền riêng tư và sao lưu
Talorys khẳng định không có telemetry, analytics hay tracking, và không gửi gì cho nhóm phát triển. Tuy vậy, Cloudflare vẫn xử lý dữ liệu của bạn, gồm tin nhắn chat và các ký ức liên quan trong mỗi prompt khi chạy Workers AI. Hãy đọc chính sách quyền riêng tư và điều khoản Workers AI của Cloudflare.
Để sao lưu, vào Settings → Privacy → Download backup để có file talorys-backup.json (hội thoại, ký ức, task, ghi chú, dự án, cài đặt, automation, không gồm session hay credential). Import file sẽ gộp dữ liệu trong một transaction, và nhập cùng một bản hai lần không gây hại.
Nhận định
Talorys hợp với người muốn một trợ lý ghi chú và nhắc việc cá nhân, thích tự kiểm soát dữ liệu và chấp nhận gắn với hệ sinh thái Cloudflare. Với dev Việt, một lệnh npx là đủ để có một sản phẩm chạy thật, và đây cũng là ví dụ để tìm hiểu cách xây agent trên Durable Objects và Workers AI.
Cần lưu ý: mô hình mặc định là glm-4.7-flash, hạn mức AI hằng ngày có giới hạn, và trong phần README mình đọc được không thấy số liệu benchmark về chất lượng. Vì vậy, đừng vội kỳ vọng nó ngang các trợ lý thương mại về tốc độ hay độ thông minh. Hãy bắt đầu bằng chế độ local, rồi deploy và đặt guardrail chặt trước khi cho nó chạy các routine AI tự động.