OpenClient connects you directly to your own AI server — no subscriptions, no data collection, no third parties.
Works with LiteLLM, Ollama, and any OpenAI-compatible server. Point the app at your URL and start chatting with any model: GPT, Claude, Llama, Gemini, Mistral, and hundreds more.
Chat
- Real-time streaming responses with Markdown and code block rendering
- Collapsible Thinking block for reasoning models (DeepSeek, o1, Gemini Thinking, and more)
- Attach photos, camera shots, and PDF documents for multimodal conversations
- Drag and drop text, images, and files from any app directly into the chat (Split View, Stage Manager, Finder on macOS)
- Dictate messages with Speech-to-Text; have responses read aloud with Text-to-Speech
- Generate images directly from chat
- Web search powered by your server's configured provider (Brave, Firecrawl, and more)
- Agentic tool-calling loop for models that support function calling
- Favourite any message to bookmark it and jump back instantly
- Custom system prompt and model parameters (temperature, max tokens, top-p) per conversation
Conversations
- Full conversation history with search, pins, and tags
- Branch from any message to explore alternative responses; edit and regenerate
- Media & Files gallery: browse all attached images and documents in one place
- Share content from any app (Safari, Telegram, Photos, Files…) directly into a new conversation via the system Share sheet
- Deep-link into the app with
openclient://chat?text=…,openclient://chat?url=…, oropenclient://conversation?id=…for third-party automation - Apple Shortcuts integration: "New Chat", "Search Chats", and "Send File to Chat" actions available in the Shortcuts app and via Siri
- Control Center toggle (iOS 18+): add a "New Chat" button to the iOS Control Center for instant one-tap access from any screen or the lock screen
- Home-screen widgets: New Chat (small), Search (small), Quick Actions (medium), and Recent Conversations (medium/large) — tap any widget to jump directly into the app
- iCloud sync across all your Apple devices
- Export conversations to JSON
- Token usage per message and estimated conversation cost
Models
- Browse all available models with capability badges (vision, tools, JSON mode, image generation...)
- Model detail sheet: context window, pricing (per token), provider, mode, and capabilities at a glance
- Voice selector for Text-to-Speech models
- Switch models per conversation
Personalization
- Prompt template library: save and reuse system prompts for any workflow
- User profile: set your name and context so every model addresses you personally
- Memory: save facts and preferences (manually or let the model save them automatically); injected into every conversation's system prompt and synced via iCloud
macOS
- Menu bar companion for instant access without opening the main window
macOS: Download the latest signed and notarized .dmg directly from the Releases page.
| Technology | Purpose |
|---|---|
| Swift 6+ | Language |
| SwiftUI | UI Framework |
| Liquid Glass | Design language (iOS 26+) |
| async/await | Concurrency |
| URLSession + SSE | Networking & streaming |
| Keychain | Secure storage |
| SwiftLint | Code linting |
| SF Symbols | Iconography |
| AppIntents | Apple Shortcuts, Siri & Control Center integration |
| WidgetKit | Control Center toggle and home-screen widgets (New Chat, Search, Quick Actions, Recent Conversations) |
| Votice | In-app feedback & feature requests |
This project was developed entirely with Xcode, Visual Studio Code and GitHub Copilot (with Claude Opus / Sonnet 4.6).
The project follows MVVM + UseCase + Repository + Manager with Swift strict concurrency and async/await. Code is organized by feature under Shared/, shared across iOS and macOS targets. Platform-specific UI lives in each target's own folder.
See ARCHITECTURE.md for the full project tree and layer responsibilities.
- Clone the repository:
git clone https://github.com/ArtCC/openclient-llm.git
- Open in Xcode:
cd openclient-llm open openclient-llm.xcodeproj - Configure your server URL in the app settings:
- LiteLLM:
http://your-server:4000 - Ollama (direct):
http://your-server:11434/v1
- LiteLLM:
- Run on your device or simulator
- Xcode 26+
- iOS 26+ / macOS 26+
- A running LiteLLM server — recommended backend; proxies Ollama and cloud providers (OpenAI, Anthropic, Google…) under a single endpoint. See LiteLLM.md.
- Or a running Ollama instance directly (OpenAI-compatible
/v1endpoint). See Ollama.md. Note: using Ollama through LiteLLM is preferred as it unlocks multi-provider support, virtual keys, and cost tracking.
OpenClient works with any OpenAI-compatible server. The two most common setups are:
- Ollama only — run open-source models locally on your own hardware.
- LiteLLM + Ollama — add a proxy layer to combine local models with cloud providers (OpenAI, Anthropic, Google…) under a single endpoint.
The guides below cover Docker Compose configurations, reference .env files, and common operational commands:
- Ollama.md — Run Ollama with Docker (CPU and NVIDIA GPU)
- LiteLLM.md — Run LiteLLM with Docker (Postgres, local + cloud models)
This project is licensed under the GNU Affero General Public License v3.0.
Contributions are welcome. Please read CONTRIBUTING.md for guidelines on how to report issues, propose features, and submit pull requests.
To suggest features or report bugs from within the app, go to Settings and use the built-in feedback option powered by Votice, another open source project by the same author.
Arturo Carretero Calvo
OpenClient is built on the belief that generative AI should be something you control — not something that controls your data.
Run local models entirely on your own hardware, or route cloud providers through your own self-hosted proxy.
Either way, you decide what gets sent where — no vendor lock-in, no platform middleman, no data you didn't choose to share.
Open source. No tracking. Full control.



