Open sourceAGPL-3.0Every line of it is readable.
The full iOS, Android and web client, under AGPL-3.0-or-later. No account, no subscription, nothing reporting back to us. Read it, change it, host it yourself.
$ 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
The repository ships no prebuilt artifacts — no APK, no .ipa. The Community Edition is source you build yourself.
What is in the repository
iOS · SwiftUI
A SwiftUI interface with a UIKit transcript and GRDB storage. Open the project in Xcode 26, pick your own team under Signing, and it runs on your phone.
Android · Compose
Jetpack Compose, Room, Koin, Ktor and OkHttp. With JDK 21 and the Android SDK, one assembleDebug produces a build.
Web · Next.js
Next.js App Router, React, Zustand, TypeScript. It is the only part of the project with a server, and it stores neither keys nor messages.
macOS · in development
The native macOS client is in development and will land in this directory. The Swift wire layer it builds on is already written and under test.
Three clients each implementing “how to call a provider” will drift apart. shared/ writes that behaviour down as data — capabilityrecipe defines how a request is built, model-contracts defines what a client may do, test-fixtures are recorded real responses, and OriveoProviderKit is the Swift 6.1 wire kernel. All three clients assert against the same JSON.
One codebase, two ways to run it
The three clients are the same source. The difference is accounts, cloud sync, and the models we pay for.
| Capability | Community Edition | Official Oriveo |
|---|---|---|
| Source code | AGPL-3.0-or-later | Commercial build |
| Chat with your own provider keys | Yes | Yes |
| Relay and local model servers | Yes | Yes |
| Notes, folders, Skills, attachments | Yes | Yes |
| On-device spend tracking | Yes | Yes |
| Account | Oriveo account | |
| Storage | On the device; manual export and restore | Local-first, plus cross-device cloud sync |
| Usage Insights and budget alerts | Yes | |
| Models Oriveo pays for (Oriveo AI / Oriveo Free) | Yes | |
| Analytics and crash reporting | Yes |
Community builds use the ai.oriveo.community identifier prefix, so they can live alongside the store build on the same device without sharing keychain or local data.
Start where you are
Pick up an issue
For anything larger than a bug fix, open an issue first. Disagreeing about an approach in an issue is much cheaper than disagreeing in a diff.
Report a vulnerability privately
Do not open a public issue for security problems. Use GitHub’s private vulnerability reporting, or email [email protected] with SECURITY in the subject. You will get a reply within a few days.
Add a language
The interface ships in 16 languages and so does the README. If a translation reads badly, or you want to add a language, pull requests are welcome.
Clone the whole repository — all three clients resolve the shared/ contract fixtures from the repository root, and a shallow checkout will not pass the tests.
Offer it as a service, and your changes go out too.
That is exactly the right constraint for a client that can hold your API keys: whoever hosts a version of it, you can read what that version actually does. Building it for yourself and using it yourself is unaffected. Contributions are accepted under the same AGPL-3.0-or-later terms.
Every model. One app. Your keys.
Free to start · no credit card · no markup