close

OpenBot

Mã nguồn mở bởi CopilotKit

OpenBot là nền tảng trợ lý AI cho doanh nghiệp tự chạy trên hạ tầng của mình, do CopilotKit phát triển. Mỗi "đồng nghiệp AI" (Bot) có trình duyệt, thư mục làm việc và bộ công cụ riêng; mọi thao tác đều qua một cổng kiểm soát quyết định cho phép hay từ chối và ghi lại nhật ký.

OpenBot dùng để làm gì?

  • Dựng trợ lý AI nội bộ dạng chat, dữ liệu nằm trong PostgreSQL của bạn
  • Giao việc cho Bot duyệt web, điền form, xử lý file trên máy tính riêng của nó
  • Đặt luật cho phép hoặc chặn từng thao tác trình duyệt, file, MCP và xem lại nhật ký
  • Kết nối agent tự viết hoặc agent dựng bằng LangGraph, Mastra, CrewAI qua giao thức AG-UI
  • Hẹn Bot làm việc định kỳ và nối Bot với Slack, Microsoft Teams

Cần biết trước khi dùng

  • Cần chú ýdocker-compose gắn docker.sock vào container: container có thể điều khiển toàn bộ Docker trên VPS.
  • Lưu ýTino chưa kiểm thử việc cài ứng dụng này lên VPS.

Kiểm tra tự động ngày 04/11/2026 từ dữ liệu GitHub, OSV.dev và docker-compose. Đây không phải chứng nhận bảo mật; Tino không phát triển hay bảo trì repo này.

OpenBot là gì?

Doanh nghiệp muốn cho AI agent dùng trình duyệt, file và công cụ nội bộ thường vướng một câu hỏi: agent đã làm gì, ai cho phép. OpenBot đặt một cổng (gateway) giữa Bot và mọi công cụ. Mỗi lệnh gọi được xác định mục tiêu, đối chiếu chính sách viết bằng CEL, ghi một dòng nhật ký rồi mới thực hiện; luật chặn được xét trước luật cho phép, và khi thiếu chính sách thì không cho làm gì.

Mỗi Bot là một endpoint nói giao thức AG-UI, nên không bị gắn với framework nào. Bản cài sẵn có hai Bot cấu hình bằng YAML (General Assistant và Knowledge), cùng mười Bot mẫu trong thư mục examples. Bot làm việc trên "máy tính" riêng: một container có Chromium, thư mục /workspace và hồ sơ trình duyệt. Khi gặp trang đăng nhập hay mã 2FA, Bot xin trợ giúp và người dùng cầm lái trong cùng khung màn hình.

OpenBot không kèm mô hình AI: quản trị viên tự nhập khoá API, khoá được mã hoá khi lưu. Hội thoại và bộ nhớ dài hạn lưu ở CopilotKit Intelligence, dịch vụ của CopilotKit (có gói miễn phí, có thể tự host với giấy phép riêng), nên bạn cần tài khoản CopilotKit để chạy.

README nói rõ OpenBot là mẫu để sao chép và tuỳ biến, không phải sản phẩm hoàn chỉnh, và đang ở giai đoạn beta. Mã nguồn theo giấy phép MIT.

Nên dùng khi

  • Doanh nghiệp muốn trợ lý AI nội bộ chạy trên máy chủ riêng, có đăng nhập Google, Microsoft hoặc Okta
  • Bạn cần cho AI agent thao tác trình duyệt nhưng phải kiểm soát và lưu vết từng hành động
  • Bạn đã có agent viết bằng LangGraph, CrewAI… và cần giao diện chat, phân quyền, nhật ký cho nó

Không nên dùng khi

  • Bạn không muốn phụ thuộc dịch vụ bên ngoài: OpenBot cần CopilotKit Intelligence (bản managed hoặc tự host có giấy phép) để lưu hội thoại
  • Bạn cần sản phẩm ổn định để dùng ngay: README ghi đây là bản beta và là mẫu để tự tuỳ biến
  • Bạn chưa cấu hình được đăng nhập SSO và HTTPS: chế độ một người dùng biến mọi người truy cập thành quản trị viên
  • Nhiều nhóm cần cách ly lẫn nhau mà chỉ chạy một container: không có supervisor thì các Bot dùng chung một máy tính, chung file và phiên đăng nhập
  • Bạn không chấp nhận rủi ro Bot giữ phiên đăng nhập thật trên trình duyệt và chạy được lệnh shell trong workspace

Tính năng chính

  • Mọi thao tác đi qua một cổng kiểm soát chung: trình duyệt, file, MCP và component
  • Chính sách CEL, luật chặn xét trước, lỗi luật thì từ chối; trang /admin/audit ghi cả thao tác bị từ chối kèm luật gây ra
  • Mỗi người (hoặc mỗi Bot đánh dấu Isolated) một container có Chromium và workspace riêng; chạy được dưới gVisor
  • Cầm lái: người dùng điều khiển trình duyệt của Bot khi gặp đăng nhập, 2FA, rồi trả lại
  • Kết nối MCP có kiểm soát: Google Drive, Notion, Parallel, Exa, Firecrawl, Composio
  • Đăng nhập Google, Microsoft, Okta, SAML, OIDC; quản lý người dùng tại /admin/people
  • Khoá API, mật khẩu được mã hoá khi lưu và không bao giờ trả về qua API
  • Routine chạy định kỳ (tối thiểu 15 phút, tối đa 20 routine bật), Helm chart cho Kubernetes

Cách deploy OpenBot lên VPS bằng Docker

  1. Tạo VPS Chọn gói VPS 30 GB NVMe (2 vCPU · 2 GB RAM · 30 GB NVMe), hệ điều hành Ubuntu 24.04. VPS khởi tạo trong khoảng 5 phút. Tạo VPS cho OpenBot
  2. Cài Docker trên VPS (Ubuntu 24.04) Đăng nhập VPS bằng SSH với tài khoản root rồi chạy. Docker lấy từ kho phần mềm chính thức của Ubuntu.
    apt update && apt install -y docker.io docker-compose-v2 git
    systemctl enable --now docker
  3. Tạo file cấu hình File .env.example nằm trong repo, nên cần tải repo về trước (README không ghi lệnh clone cụ thể). Các bước kết nối Intelligence bên dưới chạy bằng Node.js (npx) và Bun 1.4+.
    cp .env.example .env
  4. Kết nối CopilotKit Intelligence Đăng nhập tài khoản CopilotKit, chọn project, rồi script tự ghi khoá runtime và container Learning vào .env. Tự host Intelligence thì đặt INTELLIGENCE_API_URL và chỉ chạy lệnh thứ ba.
    npx --yes copilotkit@latest login
    npx --yes copilotkit@latest project select
    bun scripts/setup-learning.ts
  5. Tạo khoá mã hoá riêng Dán kết quả vào KEY_ENCRYPTION_KEY trong .env; khoá mẫu bị từ chối khi chạy production. Điền thêm OPENAI_API_KEY (hoặc khoá của nhà cung cấp bạn chọn) và cấu hình đăng nhập Google, Microsoft hoặc Okta.
    openssl rand -base64 32
  6. Chạy image có sẵn PostgreSQL bên trong Một image gồm giao diện, API và Chromium, tất cả ở cổng 3001. Volume phải gắn vào /var/lib/postgresql (thư mục cha), không gắn vào /var/lib/postgresql/data. Muốn dùng database có sẵn thì bỏ EMBEDDED_POSTGRES và đặt DATABASE_URL. Thay latest bằng thẻ phiên bản như :v0.0.9 để cố định bản.
    docker run -p 3001:3001 --env-file .env \
      -e EMBEDDED_POSTGRES=on -v openbot-data:/var/lib/postgresql \
      ghcr.io/copilotkit/openbot:latest
  7. Mở ứng dụng Truy cập http://IP-VPS:3001 (nên đặt HTTPS phía trước; bản chạy từ mã nguồn dùng http://localhost:3010) (thay IP-VPS bằng địa chỉ IP của VPS). Nên gắn tên miền và SSL trước khi dùng thật.

Lệnh cài ứng dụng chép từ README của dự án. Đọc trước khi chạy trên máy chủ thật.

Biến môi trường quan trọng

BiếnÝ nghĩa
DATABASE_URLChuỗi kết nối PostgreSQL (role phải tạo được extension vector); không cần khi EMBEDDED_POSTGRES=on
EMBEDDED_POSTGRESĐặt on để chạy PostgreSQL ngay trong container, migration tự chạy mỗi lần khởi động
KEY_ENCRYPTION_KEYKhoá base64 32 byte để mã hoá thông tin đăng nhập; tạo bằng openssl rand -base64 32
INTELLIGENCE_API_URL, INTELLIGENCE_GATEWAY_WS_URL, INTELLIGENCE_API_KEYKết nối CopilotKit Intelligence, nơi lưu hội thoại và bộ nhớ; thiếu là API không khởi động
OPENAI_API_KEY, OPENAI_BASE_URLKhoá mô hình cho Bot mẫu; OPENAI_BASE_URL để trỏ qua gateway hoặc proxy. Có biến tương tự cho Anthropic, Google
OPENBOT_SINGLE_USERtrue để mọi request là một quản trị viên, không cần đăng nhập; bị từ chối nếu đi kèm địa chỉ public
BETTER_AUTH_URL, BETTER_AUTH_SECRET, TRUSTED_ORIGINS, INITIAL_ADMIN_EMAILSBắt buộc khi bật đăng nhập; INITIAL_ADMIN_EMAILS chỉ định quản trị viên đầu tiên
GOOGLE_OAUTH_*, MICROSOFT_OAUTH_*, OKTA_OAUTH_*Thông tin ứng dụng OAuth của nhà cung cấp đăng nhập bạn chọn
AGENT_COMPUTER_POLICYChính sách thao tác dạng JSON; JSON sai khiến server không khởi động
AGENT_ENDPOINT_ALLOWED_HOSTSDanh sách địa chỉ nội bộ được phép đăng ký làm endpoint agent

Cách dùng sau khi cài

  1. Thử Bot đầu tiênMở /bot và yêu cầu ví dụ "Open news.ycombinator.com and tell me the top story." để xem Bot duyệt web trên màn hình riêng.
  2. Đặt luật và xem nhật kýVào /admin/boundaries thêm luật chặn hoặc preset, thử lại cùng thao tác; xem kết quả cho phép, từ chối, lỗi tại /admin/audit.
  3. Lưu khoá và thông tin đăng nhậpNhập khoá qua /admin/credentials để được mã hoá; không ghi khoá vào file YAML hay file commit lên git.
  4. Thêm Bot của bạnTạo Bot ở /bots với tên, vai trò và endpoint AG-UI tuỳ chọn. Endpoint nội bộ phải nằm trong AGENT_ENDPOINT_ALLOWED_HOSTS.
  5. Chạy routine định kỳImage một container không có worker hẹn giờ. Cần cron bên ngoài chạy bun scripts/fire-routines.ts trong /app/server, nếu không routine được lưu nhưng không bao giờ chạy. File đính kèm chưa gửi cũng cần cron chạy bun scripts/cull-staged-attachments.ts.

Cập nhật và sao lưu

Dữ liệu sản phẩm, chính sách, nhật ký kiểm toán nằm trong PostgreSQL: với EMBEDDED_POSTGRES=on là volume openbot-data gắn tại /var/lib/postgresql, cần sao lưu volume này. Hội thoại và bộ nhớ lưu ở CopilotKit Intelligence, ngoài máy chủ của bạn nếu dùng bản managed.

Cập nhật bằng cách chạy image thẻ mới; tài liệu khuyên dùng digest cố định trong container-images.json của từng bản phát hành thay vì thẻ latest. Với database ngoài, chạy migration như một bước riêng trước khi khởi động bản mới. README không nêu lệnh sao lưu cụ thể.

Câu hỏi thường gặp

OpenBot có hoàn toàn miễn phí không?

Mã nguồn theo giấy phép MIT. Nhưng OpenBot cần CopilotKit Intelligence: bản managed có gói miễn phí, bản tự host cần giấy phép. Bạn còn trả phí mô hình AI theo nhà cung cấp mình chọn.

OpenBot dùng mô hình AI nào?

Không kèm mô hình nào. Bot mẫu dùng OpenAI, Bot LangGraph dùng được OpenAI, Anthropic hoặc Google. Đặt OPENAI_BASE_URL để đi qua gateway hay proxy tương thích OpenAI.

Bot có tự ý đăng nhập, thanh toán trên web được không?

Bot chỉ làm được những gì chính sách cho phép; mọi thao tác ghi nhật ký. Gặp trang đăng nhập hay 2FA, Bot dừng lại xin người dùng cầm lái, và trong lúc người cầm lái thì thao tác của Bot bị từ chối.

Chạy trên VPS không có Kubernetes được không?

Được. Một image Docker chứa giao diện, API, trình duyệt và tuỳ chọn PostgreSQL. Bản này không có supervisor nên các Bot dùng chung một máy tính; Helm chart dành cho ai cần Kubernetes.

Ứng dụng liên quan

Miễn trừ trách nhiệm

Tino không phát triển, không sở hữu và không liên kết với OpenBot hay nhóm phát triển CopilotKit. Tên, logo và nhãn hiệu thuộc về chủ sở hữu tương ứng; việc nhắc tới chỉ để mô tả, không có nghĩa là dự án xác nhận hay hợp tác với Tino.

OpenBot được phân phối theo giấy phép MIT của nhóm phát triển. Tino không bảo đảm về tính năng, bảo mật hay mức độ phù hợp của phần mềm; bạn tự chịu trách nhiệm khi cài đặt, cấu hình và sử dụng.

Lệnh cài và thông tin trên trang lấy từ tài liệu công khai của dự án tại thời điểm cập nhật và có thể đã thay đổi. Đọc tài liệu chính thức và sao lưu dữ liệu trước khi chạy trên máy chủ thật.