A feature-rich AI chat client for iOS β works on any iPhone running iOS 15.0 through iOS 26, with no subscription and no App Store required.
EZCompleteUI was built with a simple goal: bring a genuinely capable, modern AI chat experience to iPhones that mainstream AI apps have abandoned. Whether you're on an iPhone 8 running iOS 15 or the latest device on the iOS 26 developer beta, EZCompleteUI runs natively and supports the same full feature set. Chat with GPT models, generate images, edit images, transcribe audio, generate video with Sora, and more β all from one app with persistent chat history and intelligent memory.
- Full conversation support with GPT-5 Pro, GPT-5, GPT-5 Mini, GPT-4o, GPT-4o Mini, GPT-4 Turbo, GPT-4, and GPT-3.5 Turbo
- 4-tier intelligent routing β simple questions are answered instantly by a lightweight helper model without burning tokens on a full API call; complex queries with memory needs automatically inject the right context
- Web search powered by OpenAI's Responses API β toggle with the π button, optionally set a location hint in Settings
- Persistent AI memory β key facts from every conversation are summarized and recalled automatically in future chats
- Full chat history β every conversation is saved to disk and can be browsed, restored, or deleted from the history panel
- DALL-E 3 text-to-image generation
- DALL-E 2 image editing β attach any image and describe changes; the app routes to the edit API automatically
- Smart follow-up awareness β "try that again but darker" correctly references the previous image prompt
- Generated images saved locally for session persistence
- Sora 2 and Sora 2 Pro video generation
- Configurable resolution (
1280x720,1792x1024,720x1280,1024x1792) and duration - Async job polling with live status updates in chat β survives app backgrounding and resumes on return
- Generated videos saved locally and presented via QuickLook
- Voice dictation using Apple's on-device Speech Recognition framework
- Instant VOICE CLONES CLone any voice using a few seconds of audio in mp3 format. For higher quality upload multiple mp3 files or one long file. Uses Elevenlabs API Key, and the cloned voices live in the in-app settings for voice selection. (for TTS Responses)
- Whisper transcription β attach any audio or video file for accurate AI transcription
- Text-to-speech via Apple TTS (built-in, no key needed) or ElevenLabs for high-quality voices
- PDF text extraction and analysis via PDFKit
- ePub reading and Q&A
- Plain text, HTML, RTF, CSV, JSON file analysis
- Vision β attach images for GPT-4o visual analysis
- All attached files saved locally for session replay
- Shake to debug β shake the device to view helper stats, routing tier breakdown, and recent log entries; tap Copy to grab the full log to clipboard
- Detailed logging to
Documents/ezui_helpers.logwith automatic rotation at 512 KB - Per-conversation thread files stored in
Documents/EZThreads/ - Attachments stored in
Documents/EZAttachments/
- iPhone running iOS 15.0 through iOS 26 (including the iOS 26 developer beta)
- Installation via any of the methods below β no jailbreak required
- An OpenAI API key (required)
- An ElevenLabs API key (optional, for premium TTS voices)
EZCompleteUI can be installed several ways depending on your device and iOS version. No jailbreak is required for any of the primary methods.
The easiest no-jailbreak option for supported iOS versions.
- Install TrollStore on your device
- Build the IPA using the instructions below, or download a pre-built release
- Open TrollStore, tap +, and select the
.ipafile - Tap Install
Run EZCompleteUI as a containerized app alongside other sideloaded apps without using an additional signing slot.
- Install LiveContainer on your device
- Import the
.ipainto LiveContainer - Launch from the LiveContainer home screen
Works on any iPhone without a paid developer account β re-signs automatically every 7 days.
- Install AltStore or SideStore on your device
- Open AltStore/SideStore and tap +
- Select the
.ipafile - App installs and is valid for 7 days; AltStore re-signs automatically when on the same Wi-Fi as your Mac
- Open Sideloadly or Xcode on your Mac
- Connect your iPhone
- Drag the
.ipain and sign with your Apple ID - Trust the developer certificate in Settings β General β VPN & Device Management
make package
scp packages/*.deb mobile@<device-ip>:/tmp/
ssh mobile@<device-ip> "dpkg -i /tmp/*.deb; uicache"
- macOS with Xcode and Xcode Command Line Tools
- Theos installed
- iPhone SDK (iPhoneOS16.2 or later)
- Python 3 (included with macOS)
git clone https://github.com/tweaker177/EZCompleteUI.git
cd EZCompleteUI
./build.sh
The build.sh script runs make clean && make stage, injects required permission keys into the Info.plist, packages everything into EZCompleteUI.ipa, and prints EZCompleteUI.ipa ready when done.
- Go to platform.openai.com
- Sign in or create an account
- Navigate to API Keys and create a new key
- Copy the key β it starts with
sk-
β οΈ API usage is billed to your OpenAI account. Set a spending limit at platform.openai.com/account/limits to avoid surprises.
- Open EZCompleteUI
- Tap the βοΈ gear icon in the top bar
- Paste your OpenAI API key into the API Key field
- Optionally set a System Message (e.g. "You are a helpful assistant")
- Tap Done
- Type a message and tap Send
- Tap the model name button to switch between GPT models
- Tap the π globe to toggle web search on/off
- Tap the π paperclip to attach files, images, or audio
For high-quality AI voices instead of Apple's built-in TTS:
- Create a free account at elevenlabs.io
- Go to Profile β API Key and copy your key
- In EZCompleteUI Settings, paste it into ElevenLabs API Key
- Tap Get Voices next to the Voice ID field to browse and select a voice
- Tap the π speaker button after any AI response to hear it spoken
If no ElevenLabs key is set, the app falls back to Apple TTS automatically.
- Ensure your OpenAI account has Sora API access
- In Settings, choose your Sora model (
sora-2orsora-2-pro), resolution, and duration - Select
sora-2orsora-2-profrom the model picker - Type a video prompt and tap Send
- Watch the status update in chat: β³ queued β βοΈ processing β β completed
- The video opens in QuickLook when ready β tap Share to save to Photos
Duration constraints:
| Model | Valid durations |
|---|---|
| sora-2 | 4s, 8s, 12s, 16s |
| sora-2-pro | 5s, 10s, 15s, 20s |
The app automatically snaps your selected duration to the nearest valid value.
| Button | Action |
|---|---|
| βοΈ Green pencil | Save current chat and start a new one |
| π Clock | Browse and restore past conversations |
| π Copy | Copy the last AI response to clipboard |
| π Speaker | Speak the last AI response aloud |
| π Globe | Toggle web search (green = on) |
| βοΈ Gear | Open Settings |
| π Trash | Delete the current chat (confirms before deleting) |
- All conversation data is stored locally on your device in the app's Documents directory
- Your API key is stored in
NSUserDefaultson-device only β it is never transmitted anywhere except directly to OpenAI's and ElevenLabs' APIs - AI memory summaries are stored in
Documents/ezui_memory.logβ clear them anytime from Settings β Clear All Memories - No analytics, no tracking, no third-party SDKs
EZCompleteUI/
βββ ViewController.h / .m # Main UI, all API calls, routing
βββ helpers.h / helpers.m # Logging, memory, thread store, context routing
βββ ChatHistoryViewController.h / .m # Past conversations browser
βββ SettingsViewController.h / .m # Settings for the app including API Keys, Resolution for video gen, etc
βββ MemoriesViewController.h / .m # An in-app browser of stored memories, attachments and generated images.
βββ AppDelegate.h / .m # App lifecycle, Sora job resume on foreground
βββ Info.plist # Bundle metadata and permission descriptions
βββ entitlements.plist # Code signing entitlements
βββ Makefile # Theos build configuration
βββ build.sh # One-command IPA builder
App crashes on launch
- Ensure
NSMicrophoneUsageDescriptionandNSSpeechRecognitionUsageDescriptionare present in the bundledInfo.plist. Run./build.shβ the script injects these automatically.
"No API Key" error
- Open Settings (βοΈ) and paste your OpenAI key starting with
sk-
Sora returns an error
- Verify your OpenAI account has Sora API access at platform.openai.com
- Check that duration matches the model's valid values (see table above)
- Sora jobs can take 1β5 minutes β the app polls automatically and resumes if you background it
Dictation button does nothing
- Go to iOS Settings β Privacy β Microphone and ensure EZCompleteUI is enabled
- Go to iOS Settings β Privacy β Speech Recognition and ensure EZCompleteUI is enabled
Shake gesture not working
- The shake gesture requires the app to be the active first responder β tap anywhere in the chat first
Pull requests welcome. The codebase is intentionally kept in a small number of files to stay auditable and easy to modify on-device.
MIT License β see LICENSE for details.
If EZCompleteUI saves you time or you just want to say thanks:
Built to bring modern AI to every iPhone β from iOS 15 to iOS 26 and beyond.