오픈소스AGPL-3.0코드 한 줄 한 줄을 모두 읽을 수 있습니다.
AGPL-3.0-or-later로 공개된 iOS, Android, 웹 클라이언트 전체입니다. 계정도, 구독도, Oriveo로 데이터를 보내는 기능도 없습니다. 코드를 읽고, 고치고, 직접 호스팅할 수 있습니다.
$ git clone https://github.com/oriveo/oriveo.git $ cd oriveo
# Web · Node 22.22+ $ cd web && npm install $ npm run dev:app # localhost:3001
# iOS · Xcode 26, iOS 18+ $ open ios/Oriveo/Oriveo.xcodeproj
# Android · JDK 21 + Android SDK $ cd android && ./gradlew :app:assembleDebug
저장소에는 미리 빌드한 결과물이 없습니다. APK도 .ipa도 없습니다. 커뮤니티 에디션은 소스를 받아 직접 빌드해서 씁니다.
저장소 구성
iOS · SwiftUI
SwiftUI 인터페이스에 UIKit 기반 대화 화면, 저장소는 GRDB입니다. Xcode 26에서 프로젝트를 열고 Signing에서 본인 Team을 선택하면 휴대폰에서 바로 실행됩니다.
Android · Compose
Jetpack Compose, Room, Koin, Ktor, OkHttp로 만들었습니다. JDK 21과 Android SDK가 있으면 assembleDebug 한 번으로 빌드됩니다.
Web · Next.js
Next.js App Router, React, Zustand, TypeScript로 만들었습니다. 프로젝트에서 유일하게 서버가 있는 부분이며, API 키도 메시지도 저장하지 않습니다.
macOS · 개발 중
네이티브 macOS 클라이언트는 개발 중이며 이 디렉터리에 추가될 예정입니다. 그 기반이 되는 Swift 통신 계층은 이미 작성되어 테스트하고 있습니다.
세 클라이언트가 “제공업체를 어떻게 호출할지”를 각자 구현하면 결국 서로 달라집니다. shared/는 그 동작을 데이터로 정리해 둡니다. capabilityrecipe는 요청을 만드는 방법을, model-contracts는 클라이언트가 할 수 있는 일을 정의하고, test-fixtures는 실제 응답을 녹화한 것이며, OriveoProviderKit은 Swift 6.1로 작성한 통신 커널입니다. 세 클라이언트 모두 같은 JSON을 기준으로 검증합니다.
같은 코드, 두 가지 사용 방식
세 클라이언트의 소스는 같습니다. 다른 점은 계정, 클라우드 동기화, 그리고 Oriveo가 비용을 내는 모델입니다.
| 기능 | 커뮤니티 에디션 | 공식 Oriveo |
|---|---|---|
| 소스 코드 | AGPL-3.0-or-later | 상용 빌드 |
| 본인 API 키로 대화 | 지원 | 지원 |
| Relay와 로컬 모델 서버 | 지원 | 지원 |
| 노트, 폴더, Skills, 첨부 파일 | 지원 | 지원 |
| 기기 내 지출 추적 | 지원 | 지원 |
| 계정 | Oriveo 계정 | |
| 저장 | 기기에 저장, 수동 내보내기·복원 | 기본적으로 기기에 저장, 기기 간 클라우드 동기화는 선택 |
| Usage Insights와 예산 알림 | 지원 | |
| Oriveo가 비용을 내는 모델 (Oriveo AI / Oriveo Free) | 지원 | |
| 사용 분석과 오류 보고 | 지원 |
커뮤니티 빌드는 ai.oriveo.community 식별자 접두사를 쓰므로, 같은 기기에 스토어 버전과 함께 설치해도 키체인이나 로컬 데이터를 공유하지 않습니다.
할 수 있는 일부터 시작하기
이슈 골라서 작업하기
버그 수정보다 큰 작업이라면 먼저 이슈를 열어 주세요. 구현 방식에 대한 의견 차이는 코드 리뷰 단계보다 이슈에서 조율하는 편이 훨씬 수월합니다.
취약점 비공개 제보
보안 문제는 공개 이슈로 올리지 말아 주세요. GitHub의 비공개 취약점 제보 기능을 이용하거나, 제목에 SECURITY를 넣어 [email protected]으로 메일을 보내 주시면 며칠 안에 답변드립니다.
언어 추가
앱 인터페이스와 README는 16개 언어로 제공됩니다. 어색한 번역을 발견했거나 새 언어를 추가하고 싶다면 언제든 풀 리퀘스트를 보내 주세요.
저장소는 전체를 clone해야 합니다. 세 클라이언트 모두 저장소 루트에서 shared/의 계약 fixture를 읽기 때문에, 얕은 체크아웃으로는 테스트를 통과하지 못합니다.
서비스로 제공한다면 수정한 코드도 공개해야 합니다.
API 키를 다룰 수 있는 클라이언트에는 이 조건이 딱 맞습니다. 누가 어떤 버전을 호스팅하든, 그 버전이 실제로 무엇을 하는지 누구나 코드로 확인할 수 있기 때문입니다. 직접 빌드해서 본인이 쓰는 경우에는 아무 영향이 없습니다. 기여도 같은 AGPL-3.0-or-later 조건으로 받습니다.