<div align="center">
<img src="https://raw.githubusercontent.com/oriveo/oriveo/HEAD/docs/assets/logo.png" width="104" height="104" alt="Oriveo logo">
모든 모델, 하나의 앱.
Open-source 방식으로 iOS, Android 및 웹에서 사용자가 직접 API 키를 가져와 사용할 수 있는 AI 채팅 기능을 제공하며, 네이티브 macOS 클라이언트가 개발 중입니다. 계정 생성이나 구독이 필요 없으며, 채팅 요청 경로에 저희 서비스는 포함되지 않습니다.
<a href="LICENSE"><img alt="License AGPL-3.0-or-later" src="https://img.shields.io/badge/license-AGPL--3.0--or--later-8B5CF6?style=flat-square&labelColor=black"></a>
<a href="ios/README.md"><img alt="iOS 18 및 이후 버전" src="https://img.shields.io/badge/iOS-18+-A78BFA?style=flat-square&labelColor=black&logo=apple&logoColor=white"></a>
<a href="android/README.md"><img alt="Android 8 및 이후 버전" src="https://img.shields.io/badge/Android-8+-A78BFA?style=flat-square&labelColor=black&logo=android&logoColor=white"></a>
<a href="web/README.md"><img alt="Next.js로 구축된 웹" src="https://img.shields.io/badge/Web-Next.js-A78BFA?style=flat-square&labelColor=black&logo=nextdotjs&logoColor=white"></a>
<a href="macos/README.md"><img alt="개발 중인 macOS 클라이언트" src="https://img.shields.io/badge/macOS-in_development-6D5FA6?style=flat-square&labelColor=black&logo=apple&logoColor=white"></a>
<a href="https://github.com/oriveo/oriveo/releases/latest"><img alt="최신 릴리스" src="https://img.shields.io/github/v/release/oriveo/oriveo?style=flat-square&labelColor=black&color=8B5CF6"></a>
<a href="https://github.com/oriveo/oriveo/stargazers"><img alt="GitHub 스타" src="https://img.shields.io/github/stars/oriveo/oriveo?style=flat-square&labelColor=black&color=8B5CF6"></a>
Oriveo 이용하기:
<a href="https://oriveoai.com"><b>oriveoai.com</b></a> ·
<a href="https://apps.apple.com/app/oriveo/id6775370458">App Store</a> ·
<a href="https://play.google.com/store/apps/details?id=com.kenny.oriveo">Google Play</a> ·
<a href="https://app.oriveoai.com">웹 앱</a>
<sub class="mt-4 text-sm text-gray-600">
스토어에서 빌드하는 것은 상업용 에디션인 <b>Oriveo</b>입니다. 이 저장소는 소스에서 빌드한 <a href="#community-edition-and-oriveo">Community Edition</a>입니다.</sub>
<a href="#get-started">소스에서 빌드하기</a> ·
<a href="#architecture">아키텍처</a> ·
<a href="#community-edition-and-oriveo">에디션</a> ·
<a href="#faq">FAQ</a> ·
<a href="CONTRIBUTING.md">기여하기</a>
<sub class="mt-4 text-sm text-gray-600">
English ·
<a href="readme_i18n/ar/README.md">العربية</a> ·
<a href="readme_i18n/de/README.md">Deutsch</a> ·
<a href="readme_i18n/es/README.md">Español</a> ·
<a href="readme_i18n/fr/README.md">Français</a> ·
<a href="readme_i18n/hi/README.md">हिन्दी</a> ·
<a href="readme_i18n/id/README.md">Indonesia</a> ·
<a href="readme_i18n/ja/README.md">日本語</a> ·
<a href="readme_i18n/ko/README.md">한국어</a> ·
<a href="readme_i18n/pt-BR/README.md">Português</a> ·
<a href="readme_i18n/ru/README.md">Русский</a> ·
<a href="readme_i18n/th/README.md">ไทย</a> ·
<a href="readme_i18n/tr/README.md">Türkçe</a> ·
<a href="readme_i18n/vi/README.md">Tiếng Việt</a> ·
<a href="readme_i18n/zh-Hans/README.md">简体中文</a> ·
<a href="readme_i18n/zh-Hant/README.md">繁體中文</a>
</sub
<img src="https://raw.githubusercontent.com/oriveo/oriveo/HEAD/docs/assets/hero.webp" width="100%" alt="Oriveo Community Edition: every model, one app. 15 providers, 700+ models, iOS, Android and web.">
</div>
Oriveo란 무엇인가</div>
Oriveo Community Edition은 iOS, Android 및 웹용으로 설계된 오픈 소스, Bring-Your-Own-Key (BYOK) 방식의 멀티 모델 AI 채팅 클라이언트이며, 네이티브 macOS 클라이언트를 개발 중입니다. 이 클라이언트는 사용자가 어떤 서비스가 앞에 놓여 있든 관계없이 모델 제공업체에 직접 비용을 지불하는 것을 선호하는 사람들을 위한 호스팅된 ChatGPT 또는 Claude 플랜의 대안(alternative)입니다. 사용자가 이미 소유한 API 키를 공급하면, 클라이언트가 해당 키로 제공업체와 통신하며, 웹 클라이언트는 자체 호스팅이 가능합니다. Oriveo 계정이 필요하지 않으며, 아무것도 우리에게 보고되지 않습니다.
OpenAI, Anthropic, Google Gemini, OpenRouter, DeepSeek, Grok, Mistral, Groq, Together AI, Fireworks AI, MiniMax, Z.ai, Qwen, Kimi (Moonshot)를 포함한 15개 모델 제공업체와 네이티브하게 통신하며 — 또한 llama.cpp, Ollama, LM Studio 또는 vLLM을 사용자가 직접 실행하는 등 OpenAI-, Anthropic- 또는 Gemini-호환 엔드포인트라면 어떤 것이든 연결할 수 있습니다. 하나의 LLM 클라이언트로 모든 대화 기록을 관리하고, 어느 모델이 답변하더라도 일관성을 유지합니다.
<table>
<tr>
<td width="33%" valign="top"><b>15개 제공업체</b><br>릴레이 엔드포인트 및 로컬 모델 서버 추가 지원.</td>
<td width="33%" valign="top"><b>기본적으로 로컬(Local) 작동</b><br>대화, 메모, 폴더, 스킬 및 첨부 파일은 장치에 저장됩니다.</td>
<td width="33%" valign="top"><b>하나의 동작 방식, 세 가지 클라이언트</b><br><code class="shared/">shared/</code>에서 하나의 사양(spec)을 정의하고, 세 개의 제품군이 이를 구현합니다.</td>
</tr>
<tr>
<td valign="top"><b>계정 불필요</b><br>아무것도 우리에게 보고되지 않습니다.</td>
<td valign="top"><b>자체 호스팅(Self-host) 가능</b><br>웹 클라이언트는 사용자의 장치에서 실행됩니다.</td>
<td valign="top"><b>16개 언어 지원</b><br>아랍어를 위한 완벽한 오른쪽-왼쪽 레이아웃을 제공합니다.</td>
</tr>
</table>
존재 이유 (Why it exists)
사용자가 비용을 지불하는 모델에 대해 누구나 측정(meter), 기록(log)하거나 주석을 달 수 있게 해서는 안 됩니다.
- 사용자 키, 사용자 청구. 제공업체의 리스트 가격을 지불합니다. 어떠한 것도 할증되거나 측정되거나 재판매되지 않습니다.
- 기본적으로 로컬. 대화, 메모, 폴더, 스킬 및 첨부 파일은 장치에 저장됩니다. 원할 때 언제든지 파일로 내보낼 수 있으며, 접근 권한을 잃을 클라우드 사본이 없습니다.
- 하나의 동작, 세 개의 클라이언트. 특정 제공업체, 전송 계층(transport), 기능에 대해 요청이 어떻게 구성되는지는
shared/에 한 번 작성되며, 세 클라이언트 모두 동일한 JSON 픽스처를 기반으로 검증합니다. 해당 데이터에 존재하는 버그는 한 번 고치면 되지만, 파서에 존재하는 버그는 세 개의 테스트 스위트에서 동시에 포착됩니다.
- 가져오는 유일한 것. 공개적이고 읽기 전용 모델 카탈로그입니다. 따라서 오늘 배포된 모델도 앱 업데이트 없이 작동하며, 우리가 첨부하는 키나 식별자가 필요 없고 사용자의 호스트를 가리킬 수 있습니다.
주요 기능 (Features)
- 채팅(Chat) — 스트리밍, 추론 블록, 인용(citations), 첨부 파일(이미지 및 비디오, PDF, Office(docx, xlsx, pptx), OpenDocument, EPUB, RTF, HTML 및 모든 일반 텍스트 또는 소스 파일), 선택 구절 인용, 재시도, 재생성, 중단된 답변 후 계속하기
- 제공업체 (Providers) — 자체 키를 가진 15개 내장 제공업체; 제공업체별 모델 및 생성 매개변수 오버라이드, 그리고 제공업체가 지원하는 지역 엔드포인트 선택 기능
- Relay — 모든 OpenAI-, Anthropic- 또는 Gemini-호환 엔드포인트와 llama.cpp의 네이티브 API를 포함하며, LAN에 있는 것도 포함합니다.
- 로컬 모델 서버 (Local model servers) — llama.cpp, Ollama, LM Studio, vLLM, Open WebUI; iOS 및 Android는 엔진이 자신을 광고하는 mDNS를 통해 또는 일반 포트를 탐색하여 로컬 네트워크에서 이를 찾습니다.
- 구독 로그인 (Subscription sign-in) — API 키 대신 이미 보유하고 있는 ChatGPT 또는 Grok 구독을 사용하여 각 제공업체의 자체 장치 승인 흐름을 거칩니다.
- 스킬 (Skills) — 자체 모델, 추론 설정 및 참조 문서를 가진 재사용 가능한 시스템 프롬프트
- MCP 도구 (MCP tools) — 주소로 원격 MCP 서버를 추가하고 브라우저 또는 [원문 생략]으로 로그인합니다.
액세스 토큰을 사용하여 모델이 채팅에서 도구를 호출하도록 하고, 각 도구는 독립적으로 실행되거나 먼저 요청하거나 비활성화 상태를 유지할 수 있습니다.
- 노트 및 폴더(Notes and folders) — 답장을 노트로 저장하고, 대화를 정리하며, 둘 모두에서 검색할 수 있습니다.
- 교차 확인(Cross-check) — 답변을 두 번째 모델에 검토하도록 맡기고 두 결과를 함께 보관합니다.
- 메모리(Memory) — 자신에 대한 몇 가지 사실을 한 번 작성하여 모든 새로운 대화로 가져갈 수 있습니다.
- 비용(Cost) — 메시지당 및 제공업체별 지출액으로, 캐시 읽기 및 쓰기 계층을 포함하여 각 응답이 실제로 보고한 내용을 기반으로 기기에서 계산됩니다.
- 이미지 생성(Image generation) — 제공업체가 지원하는 경우
- 백업(Backup) — 모든 것을 파일로 내보냅니다. 사용자가 선택할 경우, 제공업체 키는 비밀번호로 암호화됩니다.
- 16개 인터페이스 언어에는 아랍어를 위한 완전한 오른쪽에서 왼쪽 레이아웃이 포함됩니다.
이 저장소는 AGPL-3.0-or-later 라이선스가 적용된 Oriveo Community Edition입니다. App Store, Google Play, 그리고 호스팅되는 웹 앱의 앱들은 계층을 추가하는 별도의 독점 제품인 Oriveo입니다.
| Community Edition | Oriveo |
|---|
| 소스(Source) | 이 저장소, AGPL-3.0-or-later | 독점(Proprietary) |
| ... | | |
Community Edition 빌드는 ai.oriveo.community 식별자 접두사를 사용하므로, 두 제품이 키체인이나 로컬 데이터를 공유하지 않으면서 같은 기기에 설치될 수 있습니다. 이 에디션이 허용하는 것과 허용하지 않는 것은 COMMUNITY.md에 명시되어 있습니다. | | |
Oriveo, 전체 제품: iPhone 및 iPad · Android · Web · oriveoai.com
제공업체(Providers)
아래의 모든 제공업체는 사용자가 직접 생성한 키로 연결됩니다. 그중 두 곳은 키 대신 이미 보유하고 있는 구독으로 로그인하여 접속할 수도 있습니다: ChatGPT 플랜을 사용하는 OpenAI와 Grok입니다.
아키텍처
세 개의 네이티브 클라이언트와 모델 제공업체와 통신하는 방법을 정의하는 하나의 방식.
flowchart LR
shared["shared/<br/>request recipes · contracts · recorded fixtures"]
...
각 클라이언트는 자체 UI, 스토리지 및 탐색 기능을 가지고 있으며, 단 하나의 접점(seam)에서 공유된 계약을 충족합니다. 이 접점은 이 모델, 이 기능을 HTTP 요청으로 변환하는 계층입니다.
알아두면 좋은 유일한 비대칭성은 웹 클라이언트입니다. 대부분의 제공업체 API는 CORS 헤더를 보내지 않기 때문에 브라우저가 직접 호출할 수 없습니다. 이러한 요청은 앱을 서비스하는 모든 기계에서 실행되는 Next.js 라우트 핸들러를 통과합니다. 즉, 로컬에서 실행할 때 사용자 자신의 컴퓨터입니다. 브라우저가 허용하는 소수의 엔드포인트(Kimi의 중국 엔드포인트, OpenRouter, SiliconFlow, DeepSeek 및 Kimi의 밸런스 엔드포인트)와 자체 네트워크에 의존하는 요청은 직접 호출됩니다. iOS 및 Android 클라이언트는 그러한 제약이 없으며 항상 제공업체로 바로 연결됩니다.
각 클라이언트의 아키텍처:
시작하기
사전 빌드된 바이너리는 없습니다. APK나 .ipa 파일도 없습니다. Community Edition은 사용자가 직접 구축해야 하는 소스 코드입니다. 웹 클라이언트가 실행되는 앱으로 가는 가장 짧은 경로입니다.
<details open>
<summary><b>웹</b> — 시도해 볼 수 있는 가장 빠른 방법</summary>
<br>
Node 22.22.2 또는 그 이후 버전의 22.x가 필요합니다(여기 web/.nvmrc 참조); Node 23 이상은 지원되지 않습니다.
cd web
npm install
npm run dev:app
첫 화면에서 제공업체 API 키를 요청합니다. 그 외에는 아무것도 필요하지 않습니다. 더 많은 명령어와 구성은 web/README.md를 참조하세요.
</details>
<details>
<summary><b>iOS</b> — 자신의 iPhone에서 빌드하고 실행하기</summary>
<br>
Mac에 Xcode 26과 iOS 18 이상 장치가 필요합니다. 무료 Apple Developer 계정만으로 충분하며, 이 앱은 유료 기능을 사용하지 않습니다.
ios/Oriveo/Oriveo.xcodeproj를 엽니다.
Oriveo 스킴을 선택합니다.
- Signing & Capabilities에서 본인의 팀(Team)을 선택합니다.
- Xcode가
ai.oriveo.community를 등록할 수 없다면, 번들 식별자(bundle identifier)를 팀이 소유한 것으로 변경합니다.
- 실행합니다.
Xcode가 프로젝트를 열지 않겠다고 거부하는 경우에 대한 내용까지 포함된 전체 가이드라인은 ios/README.md를 참고하세요.
</details>
<details>
<summary><b>Android</b> — APK 빌드하기</summary>
<br>
JDK 21과 Android SDK가 필요합니다. 이 빌드는 AGP 9.3, Gradle 9.5 및 Kotlin 2.3을 사용하므로, Android Studio는 이를 동기화할 수 있는 릴리스 버전이어야 합니다. 명령줄에서는 JDK와 SDK만 필요합니다.
cd android
./gradlew :app:assembleDebug
사용자 자신의 호스트에서 모델 카탈로그를 제공하는 방법은 android/README.md를 참고하세요.
</details>
개인정보 보호(Privacy)