OpenAI Codex deneyimini Android telefonuna taşıyan, yerel native runtime kullanan yapay zekâlı geliştirici çalışma alanı.
⬇️ En güncel APK'yı indir · ⭐ Depoyu yıldızla · 🐞 Hata bildir
Durum: Codex Mobile aktif geliştirme aşamasındadır. GitHub Releases bölümündeki en üstte bulunan
stableetiketli sürüm, o an için indirilmesi ve denenmesi önerilen güncel APK'dır; yine de geliştirme sürdüğü için bazı cihazlarda veya akışlarda hata görülebilir. Her gün hata düzeltmeleri, performans iyileştirmeleri ve yeni özellik güncellemeleri yapılır. Gerçek anlamda feature-frozen production sürümüne ulaşıldığında depoya ayrıca belirgin bir Stable bayrağı çekilecek ve sürüm numarası sabitlenecektir.
Bu proje telefonundan kod yazmak, fikirlerini test etmek ve OpenAI Codex iş akışını yanında taşımak isteyen geliştiriciler için hazırlanıyor. İşine yarıyorsa ⭐ GitHub'da yıldız bırak. Bir yıldız; görünürlüğü, geri bildirimi ve projenin geliştirme motivasyonunu doğrudan artırır.
- Bu proje nedir?
- Öne çıkan özellikler
- Uygulama içindeki deneyim
- Mimari ve teknik yaklaşım
- Güvenlik ve veri davranışı
- Güncel APK'yı indirme
- Android'e kurulum
- Kaynak koddan derleme
- Bilinen sınırlamalar
- Sorun giderme
- Geliştirme yol haritası
- Katkıda bulunma
- Hata bildirimi ve iletişim
- Lisans ve teşekkürler
Codex Mobile, OpenAI Codex iş akışını masaüstünden çıkarıp Android cihazına taşımayı amaçlayan yerel bir Android uygulamasıdır. Uygulama, yalnızca bir sohbet ekranı değildir: Codex'in native ARM64 runtime'ını Android uygulamasının içine alır, her konuşmaya izole bir çalışma alanı verir, komut/derleme gibi adımların durumunu kullanıcıya gösterir ve uzun süren işleri Android foreground service üzerinden yönetir.
Telefonundan bir projeyi açıp:
- doğal dille ne yapmak istediğini anlatabilir,
- kaynak dosyaları konuşmaya ekleyebilir,
- kod yanıtlarını Markdown ve kopyalanabilir code block'lar olarak okuyabilir,
- aynı konuşmayı daha sonra thread devamlılığıyla sürdürebilir,
- GitHub hesabını bağlayabilir,
- uygulamanın hafızasını, tonunu ve kişisel talimatlarını değiştirebilir,
- Codex'in gerçek bir çalışma alanında komut çalıştırmasını izleyebilir,
- işlemi gerektiğinde durdurabilir
ve bütün bunları tek bir Android arayüzünden yönetebilirsin.
Codex Mobile'ın hedefi “telefonda küçültülmüş bir chat uygulaması” yapmak değil; AI destekli Android developer workspace oluşturmaktır.
- OpenAI/Codex hesabıyla onboarding üzerinden giriş.
- Codex native executable'ını uygulama paketinin içinde çalıştırma.
codex exec --jsontabanlı yapılandırılmış event akışı.- Aynı thread'i
codex exec resumeile devam ettirme. - Agent mesajı, reasoning, komut, dosya değişikliği, test, build ve tamamlanma adımlarını gerçek event'lerden ayırma.
- Uzun süren native işlemleri Android foreground service içinde yaşatma.
- Çalışan süreci durdurma ve kapanış durumunu kullanıcıya aktarma.
- Modern Jetpack Compose sohbet arayüzü.
- Kullanıcı ve Codex mesajlarının kalıcı olarak saklanması.
- Konuşma başlığı değiştirme.
- Konuşmaları sabitleme.
- Konuşma geçmişinden başka bir oturuma geçme.
- Yeni konuşma başlatma.
- Silme akışında kullanıcıyı koruyan kontroller.
- Mesaj yazarken durumun ve yüklenme adımının görünür olması.
- Asistan çıktısını Markdown biçiminde okuma.
- Kod bloklarını tek dokunuşla kopyalama.
- Kaynak kartlarını açma.
- Kullanıcı seçtiği dosyayı çalışma alanına ekleme.
Codex çalışırken ekranın üstünde dekoratif olmayan, event tabanlı bir durum şeridi görünür:
Düşünüyor → Komut çalıştırıyor → Dosya düzenliyor → Proje derliyor → Testleri çalıştırıyor → İşlemi tamamlıyor
Bu şerit gerçek Codex event'lerinden beslenir. Uygulama rastgele bir “loading” yazısı göstermez; bildiği adımı söyler, bilmediği adımda dürüstçe genel çalışma durumuna geri döner. Aktif adımda hafif shimmer animasyonu bulunur.
- OpenAI kimlik bilgilerinin uygulama içindeki yetkilendirme akışı.
- GitHub Device Flow ile GitHub bağlantısı.
- GitHub access token'ının Android
EncryptedSharedPreferencesile saklanması. - Secret Vault ekranında kullanıcı tanımlı gizli değerler.
- Token'ların
AGENTS.md, prompt metni veya log içine yazılmaması. - GitHub bağlantısını tek dokunuşla kesebilme.
- Logout sırasında uygulama state'inin gerçekten sıfırlanması.
GitHub ekranı, Android'e uygun Device Flow kullanır:
- Uygulama bir device code ister.
- Kullanıcı GitHub'ın doğrulama adresini açar.
- Kısa kodunu GitHub'a girer.
- Uygulama yetkilendirme sonucunu güvenli depolamaya alır.
- Codex çalışma sürecine gereken token'ı çevre değişkeni olarak aktarır.
Uygulamanın içine GitHub client secret gömülmez. Native uygulamalar için uygun olan akış kullanılır; OpenAI login ve GitHub login birbirinden ayrı tutulur.
- Kullanıcı adı ve kısa bio.
- Dengeli, sıcak, profesyonel veya esprili konuşma tonu.
- Kullanıcının yazdığı özel talimatlar.
- Konuşma başlamadan önce güncellenen
AGENTS.md. - Codex'in her turda dikkate alacağı kullanıcı bağlamı.
- Konuşmaya özel izole workspace.
- Memory ekranından AGENTS içeriğini görme ve güncelleme.
- İlk kullanımda dil seçimi.
- Dil arama.
- Uygulama tercihinin kalıcı saklanması.
- İsim ve bio adımları.
- Bio adımını atlayabilme.
- İlk kurulum tamamlandığında otomatik olarak sohbet ekranına geçiş.
Tek bir ayarlar ekranından:
- kişiselleştirme,
- memory,
- dil,
- storage,
- GitHub bağlantısı,
- bildirim ayarları,
- hesap durumu,
- logout
ekranlarına ulaşılır.
Uygulamanın cihazda ne kadar alan kullandığını anlamayı kolaylaştıran storage ekranı:
- Codex home,
- konuşma verileri,
- conversation workspace'leri,
- cache,
- toplam kullanım
gibi alanları kullanıcıya daha anlaşılır bir şekilde sunar.
- Android document picker üzerinden dosya seçme.
- Seçilen dosyayı konuşmanın workspace'ine kopyalama.
- Konuşma bazlı çalışma alanı izolasyonu.
- Bir konuşmanın dosyalarının diğer konuşmayla karışmaması.
- Dosya yolu ve komut bağlamının Codex'e kontrollü aktarılması.
İlk açılışta uygulama kullanıcıyı boş bir chat ekranına bırakmaz. Dil seçimi, OpenAI/Codex login'i, isim ve isteğe bağlı bio adımlarıyla kişisel bir başlangıç alanı oluşturulur. Daha sonra bu bilgiler Codex'e giden AGENTS.md içeriğinin bir parçası olarak kullanılabilir.
Chat ekranı Codex Mobile'ın merkezidir. Kullanıcı mesajını yazar, dosya ekler ve gönderir. Native Codex process'i JSON event'leri üretirken UI bunları mesajlara, sistem adımlarına ve kaynak kartlarına dönüştürür. Yeni mesaj geldiğinde kullanıcı geçmişi okuyorsa ekran zorla aşağı çekilmez; kullanıcı zaten aşağıdaysa yeni mesaja akıllı şekilde kayar.
Her konuşma kendi kimliğine, başlığına, mesajlarına, sabitleme durumuna ve Codex thread id'sine sahiptir. Veriler atomik yazma yaklaşımıyla kalıcı depolamaya kaydedilir. Uygulama kapatılıp açıldığında geçmiş mümkün olduğunca kaldığı yerden devam eder.
Codex bir şey düşünürken, dosya değiştirirken veya komut çalıştırırken kullanıcı karanlık bir spinner'a mahkûm edilmez. Samurai strip gerçek event tipine göre anlaşılır bir etiket gösterir. Hata, durdurma ve başarı durumları birbirinden ayrılır.
Kullanıcı uygulamayı kendi çalışma biçimine göre ayarlayabilir. Ton seçimi ve özel talimatlar AGENTS.md üzerinden her Codex turunun bağlamına taşınır. Böylece ayar yalnızca ekranda kalan bir tercih değil, modelin çalışma davranışını etkileyen bir bağlama dönüşür.
| Katman | Kullanılan yaklaşım |
|---|---|
| Dil | Kotlin |
| UI | Jetpack Compose |
| Tema | Material 3 tabanlı özel koyu tema |
| Android | Native Android application |
| Minimum SDK | Android 8.0 / API 26 |
| Target SDK | API 35 |
| ABI | arm64-v8a |
| Build | Gradle + Android Gradle Plugin |
| Async | Kotlin Coroutines + Flow |
| Kalıcı tercihler | DataStore Preferences |
| Şifreli değerler | AndroidX Security Crypto |
| Ağ | OkHttp |
| Native runtime | Paket içindeki ARM64 Codex executable |
| CI | GitHub Actions |
| Büyük dosya | Git LFS |
Codex binary'si normal bir JNI kütüphanesi gibi dlopen edilmez. Uygulama, binary'yi Android'in native library alanından gerçek bir child process olarak başlatır. Bu yaklaşım:
- CLI davranışına daha yakın kalır,
- stdout ve stderr akışlarını ayrı izlemeyi sağlar,
- JSON event'lerini satır satır almayı mümkün kılar,
- bir turu timeout ile sınırlamayı,
- devam eden process'i durdurmayı,
CODEX_HOME,HOME,TMPDIRveLD_LIBRARY_PATHgibi ortam değişkenlerini kontrollü vermeyi
kolaylaştırır.
Her konuşma için:
files/
└── codex_workspace/
└── conversations/
├── conversation_1/
├── conversation_2/
└── conversation_3/
gibi izole bir çalışma alanı kullanılır. Konuşma kimliği dosya yolu için güvenli bir ada dönüştürülür. Böylece farklı projelerin dosyaları aynı klasörde birbirine karışmaz.
Android, Activity yaşam döngüsü dışındaki uzun işlerde süreci sonlandırabilir. Codex Mobile bu nedenle Codex process'ini CodexProcessService üzerinden çalıştırır. Activity servise bağlanır, servisin gerçek runtime'ını ViewModel'e aktarır ve kullanıcı uygulamayı arka plana alsa bile Android kuralları içinde işi sürdürmeye çalışır.
ThreadEvent parser'ı Codex event şemasındaki:
thread.started,turn.started,turn.completed,turn.failed,item.started,item.updated,item.completed
olaylarını ayrıştırır. Agent message, reasoning, command execution ve file change içerikleri gerçek JSON alanlarından okunur. Bilinmeyen event türleri kontrollü biçimde Unknown olarak tutulur.
Bu proje kişisel hesaplar, token'lar ve kullanıcı dosyalarıyla çalıştığı için aşağıdaki prensipler önemlidir:
- GitHub access token'ı şifreli Android preferences içinde tutulur.
- Token'lar prompt'a,
AGENTS.mddosyasına veya kullanıcı arayüzündeki normal metne yazılmaz. - OpenAI ve GitHub girişleri ayrı yöneticiler üzerinden yürütülür.
- Conversation workspace'leri birbirinden ayrılır.
- Logout sırasında OpenAI, GitHub ve onboarding state'leri temizlenir.
- Uygulama yalnızca desteklenen Android ABI'sini paketler.
- Native process ortam değişkenleri kontrollü biçimde oluşturulur.
- Dosya seçimi Android document picker ile kullanıcı onayına bağlıdır.
Bu proje bir güvenlik ürünü veya kurumsal compliance sertifikası değildir. APK'yı yalnızca güvendiğin kaynaklardan indir, uygulama izinlerini kontrol et ve hassas production token'larını test sürümlerinde kullanmadan önce riskleri değerlendir.
Her zaman GitHub Releases sayfasındaki en güncel sürümü indir. Üstteki stable etiketli sürüm, geliştirme devam ederken o an için kullanılabilir ve önerilen APK snapshot'ıdır.
- Her başarılı CI build'inde APK artifact'i oluşur.
- Kullanılabilir olduğu doğrulanan sürüm Releases bölümünde görünür.
- Geliştirme aşamasındaki sürümlerde yeni özellikler ve düzeltmeler birlikte bulunabilir.
- Bir APK'nın “stable” etiketli olması, bu projenin artık geliştirilmediği anlamına gelmez.
- Büyük kararlı sürüm kilometre taşında ayrıca belirgin bir
Stablebayrağı, sürüm notu ve sabit sürüm işareti yayınlanacaktır. - Hata bulursan önce Issues veya Telegram üzerinden AltayHR ile bildir.
- Releases sayfasını aç.
- En üstteki
CODEX-MOBILE-STABLE.apkveya güncel APK asset'ini indir. - Android sorarsa kullandığın tarayıcıya “bilinmeyen uygulama yükleme” izni ver.
- APK'yı aç ve kurulumu tamamla.
- Uygulamayı açıp onboarding adımlarını takip et.
adb install -r CODEX-MOBILE-STABLE.apkMevcut uygulama imzası farklıysa Android güncelleme yerine yeni kurulum isteyebilir. Böyle bir durumda eski uygulamayı kaldırmadan önce cihazdaki yerel konuşma ve preference verilerinin silinebileceğini hesaba kat.
- Android 8.0 veya üzeri.
- ARM64 cihaz (
arm64-v8a). - Codex runtime için yeterli boş alan.
- Login ve GitHub bağlantısı için internet.
- Native process ve büyük model çıktıları için makul RAM.
Çok eski, 32-bit-only veya ARM64 desteği olmayan cihazlarda bu APK çalışmayabilir.
- JDK 17
- Android SDK Platform 35
- Android SDK Build Tools
- Git
- Git LFS
- ARM64 Android cihaz veya emulator
git clone https://github.com/ThT0AltayHR/Codex-Mobile.git
cd Codex-Mobile
git lfs install
git lfs pullchmod +x gradlew
./gradlew assembleDebugAPK çıktısı:
app/build/outputs/apk/debug/app-debug.apk
Bu depodaki GitHub Actions workflow'u her push'ta native binary kontrolü yapar, Gradle wrapper'ı hazırlar ve APK üretir. Büyük libcodexcore.so dosyası Git LFS ile tutulur; LFS olmadan eksik pointer dosyasıyla build başlatma.
./gradlew clean
./gradlew assembleDebug --stacktraceCheckout
↓
Git LFS pull
↓
JDK 17 + Android SDK
↓
Gradle wrapper bootstrap
↓
Native binary boyut doğrulaması
↓
assembleDebug
↓
GitHub Actions artifact
- Şu an yalnızca
arm64-v8anative runtime paketlenir. - APK aktif geliştirme snapshot'ıdır; bazı ekranlar veya cihaz kombinasyonları beklenmeyen davranabilir.
- Native binary büyük olduğu için clone ve CI işlemleri normal Android projelerinden daha uzun sürebilir.
- GitHub Device Flow için internet bağlantısı gerekir.
- Uygulama bir desktop IDE değildir; Android'in dosya, process, arka plan ve izin kurallarına tabidir.
- Bazı Codex özellikleri kullanılan native binary sürümüne bağlıdır.
- Debug artifact, dağıtım sertifikasıyla imzalanmış bir Play Store paketi değildir.
- Google Play yayınlama, cihaz uyumluluğu ve üretim imzalama ayrı süreçlerdir.
Bu sınırlamalar gizlenmez. Amaç, kullanıcıların hangi noktada test yaptığını bilmesini ve hata bildirimlerinin daha işe yarar olmasını sağlamaktır.
- Cihazın ARM64 olup olmadığını kontrol et.
- Eski farklı imzalı sürümü kaldırıp tekrar kur.
- Android sürümünün API 26 veya üzeri olduğundan emin ol.
- Hata ekranı veya Logcat çıktısıyla issue aç.
- İnternet bağlantısını kontrol et.
- Sistem tarayıcısında login akışını tamamla.
- Uygulamayı kapatıp aç.
- Hangi adımda kaldığını ve cihaz modelini Telegram'da bildir.
Device Flow birkaç saniye bekleyebilir. Kodu süresi dolmadan GitHub doğrulama sayfasına gir. Daha önce bağlandıysan Settings → GitHub ekranından bağlantıyı kesip yeniden bağlan.
- Native binary'nin APK'da bulunduğundan emin ol.
- Cihaz ABI'sini kontrol et.
- Storage'da yeterli alan bırak.
- Uygulama logundaki ilk gerçek hata satırını sakla; yalnızca “çalışmadı” demek yerine onu paylaş.
git lfs install
git lfs pull
git lfs ls-filesDosya bir LFS pointer'ı olarak kalıyorsa gerçek binary indirilmemiştir. git lfs ls-files çıktısında native dosyanın görünmesi gerekir.
- Telefon modeli.
- Android sürümü.
- APK sürüm/tag'i.
- Hatanın tekrarlanma adımları.
- Beklenen davranış.
- Gerçek davranış.
- Varsa ekran görüntüsü veya Logcat'in ilgili kısmı.
- Token, şifre veya kişisel dosya içeriği ekleme.
- Build kararlılığını artırmak.
- Native process yaşam döngüsünü daha sağlam yönetmek.
- Android cihaz çeşitliliğinde login ve foreground service testlerini artırmak.
- Conversation resume ve workspace izolasyonunu geliştirmek.
- Hata mesajlarını daha anlaşılır hale getirmek.
- Daha fazla Android ABI desteği için araştırma.
- Release imzalama ve sürümleme akışını production seviyesine taşımak.
- Daha iyi offline/queued action deneyimi.
- Daha kapsamlı proje dosyası önizlemeleri.
- Daha ayrıntılı build/test sonuçları.
- Kullanıcı geri bildirimlerinden beslenen yeni kişiselleştirme seçenekleri.
- Kararlı sürüm kilometre taşında sabit
Stablebayrağı.
Bir yıldız bırakmak, gerçek cihazında denemek, tekrar üretilebilir bir bug bildirmek ve küçük bir dokümantasyon düzeltmesi göndermek projenin görünürlüğünü doğrudan artırır.
-
Depoyu fork'la.
-
Kendi branch'ini aç:
git checkout -b fix/your-improvement
-
Değişikliğini küçük ve açıklanabilir tut.
-
Build'i çalıştır:
./gradlew assembleDebug
-
Commit mesajında neyi neden değiştirdiğini yaz.
-
Pull request aç ve cihaz/build bilgilerini ekle.
Kod katkılarında özellikle şu alanlar değerlidir:
- Kotlin/Compose UI iyileştirmeleri.
- Android lifecycle ve service davranışı.
- Codex event parser testleri.
- Conversation persistence.
- GitHub Device Flow hata yönetimi.
- Türkçe ve İngilizce dokümantasyon.
- Gerçek Android cihaz testleri.
Hata, fikir veya cihaz uyumluluğu geri bildirimi için:
Mesajında mümkünse Codex Mobile, sürüm/tag, telefon modeli ve hatanın tekrar adımlarını belirt. Şifre, access token, private key veya kişisel dosya gönderme.
Tekrarlanabilir teknik hatalar için GitHub Issues daha iyi yerdir. Issue açarken başlığı kısa, gövdeyi teknik ve adım adım yaz.
Bu proje Apache License 2.0 lisansı altında dağıtılır. Ayrıntılar için LICENSE dosyasına bak.
Codex Mobile; Android, Kotlin, Jetpack Compose, OkHttp, Kotlin Coroutines, DataStore ve GitHub Actions ekosisteminden yararlanır. Bu projeyi geliştirirken kullanılan upstream/native bileşenlerin kendi lisans ve bildirimlerini de kontrol et.