TL;DR

  • Bento (Bento/Slides) là app trình chiếu mã nguồn mở, đóng gói toàn bộ viewer + editor + dữ liệu vào đúng 1 file HTML khoảng 560-585 KB.
  • Dữ liệu lưu dạng JSON thuần ngay trong file, đọc/grep được bằng mắt thường - nên AI agent như Claude Code, Cursor sửa thẳng trên đĩa, không cần API hay plugin.
  • Live collaboration mã hoá đầu-cuối AES-GCM qua một "blind relay" - server chỉ thấy ciphertext, không đọc được nội dung hay tên người dùng.
  • Hoàn toàn miễn phí, mã nguồn mở MIT, không tài khoản, không cloud bắt buộc - offline mode chặn mọi kết nối mạng nếu muốn.

Vấn đề mà Bento giải quyết

Ảnh quảng bá chính thức của bento.page với tagline the office suite that fits in a file
Tagline chính thức của bento.page: một office suite gói gọn trong một file duy nhất.

Tài liệu văn phòng ngày nay không còn là thứ bạn sở hữu, mà là thứ bạn thuê bao - khoá trong cloud của ai đó, sau login của ai đó, chỉ đọc được khi công ty đó còn duy trì server. PowerPoint cần cài phần mềm nặng, Google Slides cần tài khoản và server sống. Bento đi theo hướng ngược lại: bản thân file chính là phần mềm.

Một file .bento.html mang theo viewer, presenter và editor ngay bên trong tài liệu. Mở bằng trình duyệt bất kỳ, chỉnh sửa, trình chiếu, gửi đi - người nhận không cần cài gì cả vì file đó tự nó đã là ứng dụng hoàn chỉnh.

Bên trong một file HTML duy nhất

Sơ đồ kiến trúc file Bento gồm khối JSON dữ liệu và blob app nén, lưu là tự ghi đè
File Bento gồm 2 khối: JSON dữ liệu đọc được nằm trên, app nén nằm dưới - lưu là file tự ghi đè lên chính nó.

Kiến trúc khá đơn giản khi nhìn kỹ: file gồm 2 khối. Khối đầu là một đoạn JSON thuần văn bản nằm ngay đầu file - đây là dữ liệu slide, đọc được, grep được, không mã hoá gì cả. Khối thứ hai là bản thân ứng dụng, nhúng dưới dạng blob base64 và được giải nén ngay trong trình duyệt bằng DecompressionStream API - đây là lý do file nhỏ gọn dù chứa cả một editor đầy đủ tính năng.

Khi lưu, Bento dùng File System Access API để ghi đè trực tiếp lên chính file đang mở, có fallback tải file mới nếu trình duyệt không hỗ trợ. Mọi bản cập nhật đều được ký số bằng ECDSA và áp dụng ngay trong app, bản cũ vẫn giữ lại làm rollback nếu cần.

Dùng thử trong 10 giây và những gì gói sẵn bên trong

Cách nhanh nhất để hình dung Bento là mở thẳng bản demo trên trình duyệt - đó là toàn bộ app, chạy trên một deck mẫu kiêm luôn phần giới thiệu tính năng. Hoặc tải file Bento_Slides.bento.html từ GitHub Releases hay trực tiếp từ trang chủ, mở bằng trình duyệt hiện đại bất kỳ là dùng được ngay - không tài khoản, không trình cài đặt.

Bên trong khoảng 560-585 KB đó có khá nhiều thứ: hiệu ứng chuyển cảnh "morph" (phần tử cùng id tự động animate vị trí, kích thước, màu sắc giữa các slide khi bạn nhân bản và sắp xếp lại slide), engine vẽ biểu đồ bar/line/pie/scatter tự viết không phụ thuộc thư viện ngoài và tương tác được ngay lúc trình chiếu, chế độ presenter, comment, vẽ đường/connector, xuất PDF, và 8 ngôn ngữ giao diện. Video và audio phát trực tiếp trên slide, không qua nhúng bên thứ ba.

Vì sao AI agent "mê" Bento

Sơ đồ AI agent sửa thẳng trên đĩa file Deck.bento.html chứa JSON, không qua API
Vì dữ liệu là JSON thuần ngay trong file, AI agent đọc và sửa deck trực tiếp trên đĩa, không cần plugin hay API riêng.

Đây có lẽ là điểm khác biệt lớn nhất so với PowerPoint hay Google Slides. Vì tài liệu là JSON thuần nằm trong một khối văn bản gần đầu file, bất kỳ trợ lý nào đọc/ghi được file đều sửa được deck - không cần plugin, không cần API riêng. Claude Code, Cursor, Aider hay bất kỳ agent nào có quyền truy cập filesystem đều làm được việc này; ngay cả model local chạy qua Ollama, llama.cpp hay LM Studio cũng chỉnh sửa được mà không dữ liệu nào rời khỏi máy.

Với ai không có agent chạy file, Bento vẫn có đường vòng: copy JSON của tài liệu ra (menu About), dán vào chat với yêu cầu chỉnh sửa, rồi dán JSON đã sửa ngược lại vào app. Repo còn có sẵn tài liệu hướng dẫn định dạng riêng cho AI agent và một skill đóng gói sẵn cho Claude Code, tự tải luôn bản Bento mới nhất khi cần.

So với PowerPoint, Google Slides - và vì sao không phải BentoPDF

Tiêu chíPowerPoint / Google SlidesBento
Cài đặtApp nặng hoặc tài khoản + server cloudKhông gì cả - file chính là phần mềm
Định dạng dữ liệuBinary/XML (.pptx) - AI khó sửa trực tiếp, dễ mất dữ liệu khi importJSON thuần, đọc được, AI agent sửa thẳng trên đĩa
Riêng tư khi cộng tácServer trung tâm đọc được nội dungBlind relay - chỉ thấy ciphertext, không đọc được nội dung/tên
Độ bền lâu dàiPhụ thuộc phần mềm/font cài trên máy nhậnFont, ảnh, chart engine, editor đều nhúng sẵn trong file

Một lưu ý nhỏ nhưng dễ nhầm: Bento không liên quan gì tới BentoPDF, một công cụ xử lý PDF cục bộ khác - khác tác giả, khác repo, khác giấy phép, không chung dependency nào. Hai dự án chỉ tình cờ trùng tên và chung triết lý xử lý cục bộ.

Giới hạn cần biết trước khi dùng

Bento không phải không có điểm yếu. Undo trong lúc live collaboration hoạt động theo kiểu snapshot, nên có thể ghi đè lên thay đổi đồng thời của người khác trên cùng một thuộc tính. Editor được thiết kế ưu tiên desktop trước - trên điện thoại xem và trình chiếu tốt, nhưng chỉnh sửa không phải trọng tâm. Cộng đồng dùng thử trên Hacker News cũng chỉ ra một thiếu sót đáng chú ý: hiện chưa có cách thêm alt text cho ảnh, nghĩa là accessibility chưa được ưu tiên đúng mức. Giới hạn cũ về việc chèn ảnh/video lớn khi đang collaboration cũng đã được vá dần bằng cơ chế lưu blob nền, nhưng nếu tự host relay riêng mà không có blob storage thì vẫn giữ hành vi giới hạn kích thước cũ.

Ai nên thử Bento ngay

  • Người dùng AI agent để soạn slide: vì dữ liệu là JSON thuần, việc để agent tự viết/sửa deck mượt hơn hẳn so với vòng qua lại .pptx.
  • Người cần bảo mật hoặc làm việc offline: bật Offline mode là chặn toàn bộ kết nối mạng, dữ liệu không rời máy.
  • Người cần gửi file mà không lo tương thích phần mềm: gửi qua email hay lưu trữ nhiều năm, file vẫn mở đúng như ban đầu vì mọi thứ đã nhúng sẵn bên trong.

Cộng đồng lập trình viên đón nhận dự án khá tích cực trên Hacker News, với hàng trăm bình luận thảo luận cả về ý tưởng lẫn kiến trúc kỹ thuật - từ tranh luận JSON so với HTML/CSS flexbox cho layout, đến một người dùng chia sẻ ý tưởng dùng cách tiếp cận tương tự để làm tài liệu học toán/vật lý offline cho người học thần kinh đa dạng. Dự án được xây dựng trong khoảng một tuần với sự hỗ trợ của Claude Code, theo chính lời tác giả, và ngay sau đó là một loạt bản vá liên tiếp: thêm morph id thủ công, hỗ trợ màn hình độ phân giải cao, gradient text, blur/blend mode, sửa lỗi mất focus khi cộng tác - cho thấy nhịp phát triển khá nhanh cho một dự án mới.

Kết

Bento/Slides mới là ứng dụng đầu tiên trong kế hoạch "Bento/Suite" - roadmap đã nhắc tới Bento/Spaces (notes) và Bento/Dash (bảng tính) sẽ theo cùng triết lý một file .bento.html độc lập. Phần lõi dùng chung giữa các app (lưu file, mã hoá, animation, chart, dịch ngôn ngữ) đã được gom vào một "kernel" chung, nên các app tiếp theo sẽ thừa hưởng đúng vòng đời tài liệu này thay vì làm lại từ đầu. Nếu ý tưởng "một file là cả phần mềm" nghe hấp dẫn, đây là lúc đáng thử trước khi hệ sinh thái mở rộng thêm.

via GitHub - nyblnet/bento