Skip to content

Latest commit

 

History

History
460 lines (354 loc) · 26.2 KB

File metadata and controls

460 lines (354 loc) · 26.2 KB
Logo Oriveo

Oriveo Community Edition

Mọi mô hình, một ứng dụng.

Ứng dụng chat AI mã nguồn mở, dùng khóa của chính bạn, cho iOS, Android và web, cùng một client macOS native đang được phát triển. Không tài khoản, không thuê bao, và không có dịch vụ nào của chúng tôi trên đường đi của yêu cầu chat.

Giấy phép AGPL-3.0-or-later iOS 18 trở lên Android 8 trở lên Web dựng bằng Next.js Client macOS đang được phát triển Bản phát hành mới nhất Số sao trên GitHub

Tải Oriveo: oriveoai.com  ·  App Store  ·  Google Play  ·  Ứng dụng web

Bản trên cửa hàng là Oriveo, phiên bản độc quyền. Kho mã này là Community Edition, dựng từ mã nguồn.

Dựng từ mã nguồn  ·  Kiến trúc  ·  Các phiên bản  ·  Câu hỏi thường gặp  ·  Đóng góp

English · العربية · Deutsch · Español · Français · हिन्दी · Indonesia · 日本語 · 한국어 · Português · Русский · ไทย · Türkçe · Tiếng Việt · 简体中文 · 繁體中文

Oriveo Community Edition: mọi mô hình, một ứng dụng. 15 nhà cung cấp, hơn 700 mô hình, iOS, Android và web.

Oriveo là gì

Oriveo Community Edition là ứng dụng chat AI (AI chat client) mã nguồn mở (open-source) theo mô hình bring-your-own-key (BYOK), đa mô hình (multi-model), cho iOS, Android và web, cùng một client macOS native đang được phát triển. Nó là lựa chọn ưu tiên cục bộ thay cho một gói ChatGPT hay Claude được lưu trữ sẵn, dành cho những người thà trả tiền trực tiếp cho nhà cung cấp mô hình hơn là trả thuê bao cho bất cứ thứ gì đứng chắn phía trước. Bạn cung cấp khóa API mà bạn đã sở hữu, LLM client này dùng chính khóa đó để nói chuyện với nhà cung cấp, và client web thì bạn có thể tự vận hành (self-host) — không tài khoản Oriveo, và không có gì gửi dữ liệu về cho chúng tôi.

Ứng dụng nói chuyện trực tiếp với 15 nhà cung cấp mô hình — OpenAI, Anthropic, Google Gemini, OpenRouter, DeepSeek, Grok, Mistral, Groq, Together AI, Fireworks AI, MiniMax, Z.ai, Qwen, Kimi (Moonshot) và SiliconFlow — cùng với bất kỳ endpoint nào tương thích OpenAI, Anthropic hoặc Gemini mà bạn trỏ tới, kể cả llama.cpp, Ollama, LM Studio hay vLLM đang chạy trên máy của bạn. Một LLM client, một bộ hội thoại, mô hình nào trả lời cũng được.

15 nhà cung cấp
Cộng thêm endpoint dịch vụ chuyển tiếp (Relay) và máy chủ mô hình cục bộ.
Mặc định là cục bộ
Cuộc trò chuyện, ghi chú, thư mục, kỹ năng và tệp đính kèm nằm trên thiết bị.
Một hành vi, ba client
Một bản đặc tả trong shared/, ba bộ test kiểm chứng nó.
Không cần tài khoản
Không có gì gửi dữ liệu về cho chúng tôi.
Tự vận hành
Client web chạy trên máy của bạn.
16 ngôn ngữ
Bố cục phải-sang-trái đầy đủ cho tiếng Ả Rập.

Vì sao nó tồn tại

Không ai được phép đo đếm, ghi log hay cộng giá vào mô hình mà bạn đang trả tiền để dùng.

  • Khóa của bạn, hóa đơn của bạn. Bạn trả đúng giá niêm yết của nhà cung cấp. Không cộng thêm, không đo đếm, không bán lại.
  • Mặc định là cục bộ. Cuộc trò chuyện, ghi chú, thư mục, kỹ năng và tệp đính kèm nằm trên thiết bị. Xuất ra tệp bất cứ lúc nào bạn muốn; không có bản sao trên đám mây nào để bạn mất quyền truy cập.
  • Một hành vi, ba client. Cách dựng một yêu cầu cho một nhà cung cấp, một transport và một khả năng cụ thể được ghi lại đúng một lần trong shared/, và cả ba client đều kiểm chứng với cùng bộ JSON fixture. Một điểm kỳ quặc nằm trong chính dữ liệu đó chỉ phải sửa một lần; một điểm kỳ quặc nằm trong bộ phân tích thì bị cả ba bộ test bắt cùng một lúc.
  • Thứ duy nhất mà nó tải về. Một danh mục mô hình công khai, chỉ đọc, để một mô hình ra mắt hôm nay chạy được ngay mà không cần cập nhật ứng dụng — không kèm khóa, không kèm định danh nào do chúng tôi gắn vào, và có thể trỏ về host của riêng bạn.

Tính năng

  • Chat — streaming, khối suy luận, trích dẫn nguồn, tệp đính kèm (ảnh và video, PDF, Office (docx, xlsx, pptx), OpenDocument, EPUB, RTF, HTML, cùng mọi tệp văn bản thuần hay tệp mã nguồn), trích dẫn đoạn được chọn, thử lại, tạo lại, viết tiếp sau khi câu trả lời bị ngắt
  • Nhà cung cấp — 15 nhà cung cấp tích hợp sẵn, mỗi nhà dùng khóa của chính bạn; ghi đè mô hình và tham số sinh nội dung theo từng nhà cung cấp, cùng lựa chọn endpoint theo khu vực ở nơi nhà cung cấp có sẵn
  • Dịch vụ chuyển tiếp — bất kỳ endpoint nào tương thích OpenAI, Anthropic hoặc Gemini, cùng API gốc của llama.cpp, kể cả endpoint trong mạng LAN của bạn
  • Máy chủ mô hình cục bộ — llama.cpp, Ollama, LM Studio, vLLM, Open WebUI; iOS và Android dò tìm chúng trong mạng nội bộ qua mDNS khi engine tự quảng bá, còn lại thì dò các cổng thường dùng
  • Đăng nhập bằng gói thuê bao — dùng gói ChatGPT hay Grok bạn đã có thay cho khóa API, qua chính luồng xác thực thiết bị của từng nhà cung cấp
  • Kỹ năng — các system prompt dùng lại được, kèm mô hình, thiết lập suy luận và tài liệu tham chiếu riêng
  • Công cụ MCP — thêm một máy chủ MCP từ xa bằng địa chỉ của nó, đăng nhập qua trình duyệt hoặc bằng token truy cập, rồi để mô hình gọi các công cụ của máy chủ đó ngay trong chat; mỗi công cụ tự chạy, hỏi bạn trước hay tắt hẳn là tùy bạn thiết lập
  • Ghi chú và thư mục — lưu một câu trả lời thành ghi chú, sắp xếp cuộc trò chuyện, tìm kiếm trên cả hai
  • Kiểm tra bằng mô hình khác — giao một câu trả lời cho một mô hình thứ hai xem lại và giữ cả hai cạnh nhau
  • Ký ức — vài điều về bạn, viết một lần và được mang vào mọi cuộc trò chuyện mới
  • Chi phí — mức chi theo từng tin nhắn và từng nhà cung cấp, tính ngay trên thiết bị từ những gì mỗi phản hồi thực sự báo về, bao gồm cả bậc đọc cache và bậc ghi cache
  • Tạo ảnh — ở những nơi nhà cung cấp hỗ trợ
  • Sao lưu — xuất toàn bộ ra một tệp; các khóa nhà cung cấp trong đó, nếu bạn chọn kèm theo, sẽ được mã hóa bằng một mật khẩu của bạn
  • 16 ngôn ngữ giao diện, gồm cả bố cục phải-sang-trái đầy đủ cho tiếng Ả Rập

Community Edition và Oriveo

Kho mã này là Oriveo Community Edition, phát hành theo AGPL-3.0-or-later. Các ứng dụng trên App Store, Google Play và ứng dụng web được lưu trữ sẵn là Oriveo — một sản phẩm độc quyền riêng biệt, có thêm một lớp tài khoản.

Community Edition Oriveo
Mã nguồn Kho mã này, AGPL-3.0-or-later Độc quyền
Chat bằng khóa nhà cung cấp của bạn Có Có
Dịch vụ chuyển tiếp và máy chủ mô hình cục bộ Có Có
Ghi chú, thư mục, kỹ năng, tệp đính kèm Có Có
Theo dõi chi phí ngay trên thiết bị Có Có
Tài khoản Không Tài khoản Oriveo
Lưu trữ Trên thiết bị; xuất và khôi phục thủ công Ưu tiên cục bộ, kèm đồng bộ đám mây giữa các thiết bị
Thống kê sử dụng và cảnh báo ngân sách — Có
Mô hình do Oriveo trả tiền — Có
Analytics và báo cáo sự cố Không có. Sentry trong gói web vẫn im lặng nếu bạn không đặt một DSN của riêng mình Có

Các bản dựng Community Edition dùng tiền tố định danh ai.oriveo.community, nên một bản có thể nằm trên cùng thiết bị với bản từ cửa hàng mà hai bên không dùng chung keychain hay bất kỳ dữ liệu cục bộ nào. Phiên bản này chấp nhận và không chấp nhận những gì đều được ghi rõ trong COMMUNITY.md.

Oriveo, sản phẩm đầy đủ: iPhone và iPad · Android · Web · oriveoai.com

Nhà cung cấp

Mọi nhà cung cấp bên dưới đều được truy cập bằng khóa do chính bạn tạo ra. Hai trong số đó cũng có thể truy cập bằng cách đăng nhập vào một gói thuê bao bạn đã có, thay cho khóa: OpenAI với một gói ChatGPT, và Grok.

Nhà cung cấp Lấy khóa ở đâu
OpenAI platform.openai.com
Anthropic platform.claude.com
Google Gemini aistudio.google.com
OpenRouter openrouter.ai
DeepSeek platform.deepseek.com
Grok console.x.ai
Mistral console.mistral.ai
Groq console.groq.com
Together AI api.together.xyz
Fireworks AI fireworks.ai
MiniMax platform.minimax.io
Z.ai open.bigmodel.cn
Qwen bailian.console.alibabacloud.com
Kimi (Moonshot) platform.kimi.ai
SiliconFlow cloud.siliconflow.cn
Dịch vụ chuyển tiếp Bất kỳ endpoint nào tương thích OpenAI, Anthropic hoặc Gemini, cùng API gốc của llama.cpp, kể cả endpoint trên máy bạn

Kiến trúc

Ba client native, một định nghĩa duy nhất về cách nói chuyện với nhà cung cấp mô hình.

flowchart LR
    shared["shared/<br/>công thức yêu cầu · contract · fixture đã ghi"]

    subgraph clients ["Ba client native"]
        direction TB
        ios["iOS · SwiftUI"]
        android["Android · Compose"]
        web["Web · Next.js"]
    end

    route["Next.js route handler<br/>trên máy phục vụ ứng dụng"]

    subgraph upstream ["Truy cập bằng thông tin xác thực của bạn"]
        official["15 nhà cung cấp mô hình"]
        relay["Dịch vụ chuyển tiếp tương thích bất kỳ"]
        local["Máy chủ trên máy của bạn"]
    end

    catalog[("Danh mục mô hình công khai<br/>chỉ đọc · không khóa")]

    shared -.->|"mọi client đều kiểm chứng"| clients
    catalog -.->|"khả năng và giá"| clients
    ios & android ==>|"thẳng từ thiết bị"| upstream
    web ==> route ==> upstream
    web -.->|"endpoint cho phép trình duyệt và dịch vụ chuyển tiếp trong LAN"| upstream
Loading

Mỗi client sở hữu giao diện, kho lưu trữ và điều hướng riêng, và chỉ gặp các contract dùng chung tại đúng một đường ghép: lớp biến mô hình này, khả năng này thành một yêu cầu HTTP.

Điểm bất đối xứng duy nhất đáng biết là client web. Phần lớn API của các nhà cung cấp không gửi header CORS, nên trình duyệt không thể gọi thẳng. Những yêu cầu đó đi qua một Next.js route handler chạy trên chính máy đang phục vụ ứng dụng — là máy của bạn, khi bạn chạy nó cục bộ. Số ít endpoint có cho phép trình duyệt (endpoint Trung Quốc của Kimi, và endpoint số dư của OpenRouter, SiliconFlow, DeepSeek và Kimi) cùng với các dịch vụ chuyển tiếp nằm trong mạng của bạn thì được gọi trực tiếp. Client iOS và Android không vướng ràng buộc đó nên luôn đi thẳng tới nhà cung cấp.

Kiến trúc của từng client:

Ngăn xếp README
iOS SwiftUI với transcript bằng UIKit, GRDB ios.md
Android Jetpack Compose, Room, Koin, Ktor/OkHttp android.md
Web Next.js App Router, React, Zustand, TypeScript web.md
macOS Đang được phát triển, sẽ có trong vài tháng tới macos.md
Shared Contract, fixture đã ghi và Swift wire kernel shared.md

Bắt đầu

Ở đây không có bản dựng sẵn nào — không APK, không .ipa. Community Edition là mã nguồn để bạn tự dựng. Client web là con đường ngắn nhất để có một ứng dụng chạy được.

Web — cách nhanh nhất để thử

Cần Node 22.22.2 hoặc bản 22.x mới hơn (xem web/.nvmrc); Node 23 trở lên không được hỗ trợ.

cd web
npm install
npm run dev:app        # http://localhost:3001

Màn hình đầu tiên hỏi khóa API của một nhà cung cấp. Không cần gì thêm. Thêm lệnh và cấu hình: web.md.

iOS — dựng và chạy trên chính iPhone của bạn

Cần một máy Mac có Xcode 26 và một thiết bị chạy iOS 18 trở lên. Tài khoản Apple Developer miễn phí là đủ — ứng dụng không dùng capability trả phí nào.

  1. Mở ios/Oriveo/Oriveo.xcodeproj
  2. Chọn scheme Oriveo
  3. Trong Signing & Capabilities, chọn Team của bạn
  4. Nếu Xcode không đăng ký được ai.oriveo.community, hãy đổi bundle identifier sang một định danh thuộc Team của bạn
  5. Nhấn Run

Hướng dẫn đầy đủ, gồm cả việc phải làm khi Xcode không chịu mở dự án: ios.md.

Android — dựng file APK

Cần JDK 21 và Android SDK. Bản dựng dùng AGP 9.3, Gradle 9.5 và Kotlin 2.3, nên Android Studio phải là bản có thể sync được chúng. Còn từ dòng lệnh thì chỉ cần JDK và SDK.

cd android
./gradlew :app:assembleDebug

Tự phục vụ danh mục mô hình từ host của bạn: android.md.

Quyền riêng tư

  • Khóa nhà cung cấp đi vào iOS Keychain, còn trên Android thì vào EncryptedSharedPreferences dưới một khóa do Android Keystore giữ. Trình duyệt không có cơ chế tương đương, nên trên web khóa nằm không mã hóa trong IndexedDB — đúng như cách các client BYOK chạy trong trình duyệt vẫn làm. Muốn đảm bảo mạnh nhất thì hãy dùng client iOS hoặc Android.
  • Cuộc trò chuyện, ghi chú, thư mục, kỹ năng và tệp đính kèm được lưu trên thiết bị. Không có gì được tải lên bất cứ đâu.
  • Không tài khoản, và không có analytics. Không có gì để đăng nhập, và không có gì đếm những việc bạn làm. Gói web có kèm Sentry để báo lỗi. Nó im lặng cho tới khi bạn đặt NEXT_PUBLIC_SENTRY_DSN trỏ về một dự án của riêng mình, và nếu bạn làm vậy thì nó được cấu hình để thu cả bản ghi lại phiên bên cạnh stack trace. Client iOS và Android không chứa bất kỳ SDK báo cáo nào.
  • Trên iOS và Android, yêu cầu chat đi thẳng từ thiết bị tới nhà cung cấp. Trên web, phần lớn chúng đi qua máy chủ Next.js đang phục vụ ứng dụng, vì phần lớn API của các nhà cung cấp không cho phép trình duyệt gọi trực tiếp. Máy chủ đó không lưu lại khóa hay tin nhắn, và khi bạn chạy ứng dụng cục bộ thì đó chính là máy của bạn.
  • Hai yêu cầu của riêng chúng tôi: một danh mục mô hình chỉ đọc, đọc qua hai lượt gọi. Một lượt cho biết mỗi mô hình muốn được gọi ra sao; lượt kia cho các dữ kiện về từng mô hình, mà iOS chỉ đọc sau khi đăng nhập bằng gói thuê bao. Nhờ hai lượt đó, một mô hình ra mắt hôm nay chạy được ngay mà không cần bản dựng mới. Không lượt nào kèm khóa, kèm cuộc trò chuyện hay kèm định danh nào do chúng tôi gắn vào. Host chỉ thấy User-Agent mặc định của nền tảng, và thứ duy nhất client gửi lại là ETag của chính danh mục, dưới dạng If-None-Match. Client web (NEXT_PUBLIC_BACKEND_URL) và bản dựng Android (-PORIVEO_METADATA_BASE_URL) có thể trỏ về host của riêng bạn; trên iOS, tùy chọn ghi đè đó chỉ là một tiện lợi của bản dựng Debug.

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

Oriveo có phải client BYOK cho OpenAI, Claude, Gemini và OpenRouter không?

Bring your own key — mang khóa của chính bạn. Bạn tạo một khóa API trong console của nhà cung cấp — OpenAI, Anthropic, Google, v.v. — rồi dán vào Oriveo. Các yêu cầu được chính nhà cung cấp đó tính tiền theo giá niêm yết của họ. Oriveo là client; nó không phải đại lý bán lại và không ăn phần trăm.

Oriveo có phải một lựa chọn thay ChatGPT miễn phí, mã nguồn mở không?

Client thì đúng vậy: mã nguồn mở, không có gì để đăng ký thuê bao, và không phần nào bị giữ lại sau một khoản thanh toán. Cái bạn trả là giá niêm yết của chính nhà cung cấp mô hình cho những yêu cầu bạn gửi, do họ tính tiền, trên tài khoản mà khóa thuộc về. Oriveo không bao giờ nhìn thấy hóa đơn đó.

Cuộc trò chuyện của tôi có đi qua máy chủ của Oriveo không?

Không. iOS và Android gọi thẳng nhà cung cấp. Trên web, phần lớn yêu cầu đi qua máy chủ Next.js đang phục vụ ứng dụng — chính là máy của bạn khi bạn chạy cục bộ — vì phần lớn API của các nhà cung cấp từ chối lời gọi từ trình duyệt. Không có máy chủ nào do chúng tôi vận hành nằm trên đường đi của chat. Xem Quyền riêng tư.

Nó có dùng được với Ollama, LM Studio hay llama.cpp không?

Có. Thêm một kết nối dịch vụ chuyển tiếp trỏ tới bất kỳ máy chủ nào tương thích OpenAI, Anthropic hoặc Gemini — llama.cpp, Ollama, LM Studio, vLLM, Open WebUI, hay bất cứ thứ gì nói được một trong các giao thức đó. Client iOS và Android tìm thấy một máy chủ như vậy trong mạng nội bộ qua mDNS khi engine tự quảng bá, còn lại thì dò các cổng thường dùng; client web gợi ý địa chỉ thường dùng của từng engine. HTTP cục bộ không dùng thông tin xác thực nào và không bao giờ rời khỏi mạng của bạn.

Tôi có thể tự vận hành Oriveo không?

Được. Client web là phần duy nhất của dự án có phía máy chủ, và nó không lưu khóa cũng không lưu tin nhắn. Trỏ nó tới một máy chủ mô hình trên phần cứng của bạn, tự vận hành danh mục bằng NEXT_PUBLIC_BACKEND_URL (web) hoặc -PORIVEO_METADATA_BASE_URL (Android), và sẽ không còn gì vươn ra ngoài mạng của bạn. Trên iOS, tùy chọn ghi đè đó chỉ tồn tại trong bản dựng Debug. Xem Quyền riêng tư.

Community Edition khác gì với ứng dụng Oriveo trên App Store?

Ứng dụng trên cửa hàng là Oriveo, một sản phẩm độc quyền bổ sung tài khoản, đồng bộ đám mây giữa các thiết bị, thống kê sử dụng và các mô hình do Oriveo trả tiền. Community Edition không có những thứ đó. Xem bảng so sánh đầy đủ tại Community Edition và Oriveo.

Có ứng dụng macOS không?

Một client macOS native đang được phát triển và sẽ ra mắt trong vài tháng tới; macos/ là nơi nó sẽ nằm. Trong lúc chờ, client web dùng như một ứng dụng desktop trên trình duyệt bất kỳ vẫn rất tốt, và bản dựng iOS chạy trên một máy Mac dùng Apple silicon ngay từ Xcode. Gói Swift lo việc nói chuyện với các nhà cung cấp đã khai báo macOS 15, nên lớp giao thức mà một client cho Mac cần đang được kiểm thử ngay hôm nay.

Giao diện có những ngôn ngữ nào?

Mười sáu: Ả Rập, Đức, Anh, Tây Ban Nha, Pháp, Hindi, Indonesia, Nhật, Hàn, Bồ Đào Nha (Brazil), Nga, Thái, Thổ Nhĩ Kỳ, Việt, Trung giản thể và Trung phồn thể. Tiếng Ả Rập có bố cục phải-sang-trái đầy đủ.

Cấu trúc kho mã

ios/           Client iOS (SwiftUI)
android/       Client Android (Jetpack Compose)
web/           Client web (Next.js)
macos/         Client macOS — đang phát triển, sẽ có trong vài tháng tới
shared/        Contract dùng chung, fixture đã ghi và Swift wire kernel
readme_i18n/   Các README này bằng mười lăm ngôn ngữ khác
docs/assets/   Hình ảnh dùng trong các README
llms.txt       Mục lục dạng máy đọc của tài liệu này
.github/       Mẫu issue và pull request

Đóng góp

Rất hoan nghênh báo lỗi và pull request. CONTRIBUTING.md nói về cách dựng từng client và thế nào là một pull request tốt. COMMUNITY.md mô tả phiên bản này sinh ra để làm gì, cùng vài loại thay đổi sẽ không được chấp nhận dù viết hay đến đâu.

Phát hiện một vấn đề bảo mật? Xin đừng mở issue công khai — SECURITY.md hướng dẫn cách báo cáo riêng tư, và nói rõ dự án này coi điều gì là lỗ hổng và điều gì thì không. Mọi người tham gia đều cần tuân theo quy tắc ứng xử.

Giấy phép

AGPL-3.0-or-later. Các đóng góp cũng được nhận theo cùng giấy phép này.

Tên và logo của các nhà cung cấp thuộc về chủ sở hữu tương ứng và xuất hiện ở đây chỉ để chỉ rõ những dịch vụ mà client này có thể được trỏ tới. Chúng không thuộc phạm vi giấy phép của kho mã này, và sự hiện diện của chúng không phải là một sự bảo chứng từ bất kỳ ai. Các phông chữ và thư viện mà các client đóng gói kèm, cùng những điều khoản áp dụng cho chúng, được liệt kê trong THIRD-PARTY-NOTICES.md.