Skip to content

ArtCC/openclient-llm

Repository files navigation

OpenClient

OpenClient

Platform Xcode Swift SwiftUI License

Description

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=…, or openclient://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

🌐 Project website

Download on the App Store

macOS: Download the latest signed and notarized .dmg directly from the Releases page.

Screenshots

Models   New Chat   Chat   Chats

Technologies

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).

Architecture

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.

Usage

  1. Clone the repository:
    git clone https://github.com/ArtCC/openclient-llm.git
  2. Open in Xcode:
    cd openclient-llm
    open openclient-llm.xcodeproj
  3. Configure your server URL in the app settings:
    • LiteLLM: http://your-server:4000
    • Ollama (direct): http://your-server:11434/v1
  4. Run on your device or simulator

Requirements

  • 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 /v1 endpoint). See Ollama.md. Note: using Ollama through LiteLLM is preferred as it unlocks multi-provider support, virtual keys, and cost tracking.

Self-hosting guides

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)

License

This project is licensed under the GNU Affero General Public License v3.0.

Contributing

Contributions are welcome. Please read CONTRIBUTING.md for guidelines on how to report issues, propose features, and submit pull requests.

Feedback

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.

Author

Arturo Carretero Calvo

Your AI. Your server. Your rules

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.

About

Native Apple client for LiteLLM, a self-hosted LLM proxy server. Connect to any LLM provider (Ollama, OpenAI, Anthropic, Groq, and more) through a single unified endpoint with a beautiful, native iOS, iPadOS, and macOS experience.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Sponsor this project

 

Packages

 
 
 

Contributors