Profile
Back to NewsBack
GitHub Trending 5 min
Reader Mode
Ichigo3766/Open-Relay: A beautiful, native iOS client for Open WebUI — the self-hosted AI chat platform

Ichigo3766/Open-Relay: A beautiful, native iOS client for Open WebUI — the self-hosted AI chat platform

13 hours ago

Open Relay App Icon

Open Relay

The best native iOS & iPadOS client for Open WebUI

Chat with any AI model on your self-hosted server — beautifully.

Download on the App Store</a>

GitHub stars</a> License: GPL</a> iOS 18+</a> Swift 6</a> PRs Welcome</a>


Open Relay in action


⭐ Why Star This Repo?

Open Relay is completely free and open source. If it saves you time or brings you joy, a ⭐ star helps other people discover it and motivates continued development. Takes 1 second — star it here. Thank you! 🙏


🚀 Get the App

Download on the App Store

Live on the App Store · iPhone & iPad · iOS 18+


✨ What Is Open Relay?

Open Relay is a 100% SwiftUI native iOS & iPadOS app that connects to your self-hosted Open WebUI server, giving you a fast, polished, truly native experience that the mobile web browser can't match.

Think of it as ChatGPT on your phone — but pointed at your server, running your models, with your data staying private.


🎯 Feature Highlights

| | Feature | Description | |---|---|---| | 🗨️ | Streaming Chat | Real-time word-by-word streaming with full Markdown — code blocks, tables, math, mermaid diagrams, and more | | 📞 | AI Voice Calls | Call your AI like a real phone call via CallKit — animated orb visualization reacts live to your voice | | 🎙️ | On-Device TTS / STT | Marvis Neural Voice (MLX, ~250 MB, fully offline) + Qwen3 ASR for on-device speech recognition | | 🖥️ | Terminal Integration | Give AI direct terminal access; slide-over file panel with directory nav, file upload, mini terminal | | 🧠 | Reasoning Display | Collapsible "Thought for X seconds" blocks for chain-of-thought models (DeepSeek, QwQ, etc.) | | 📐 | SVG & Mermaid | AI-generated SVGs and Mermaid diagrams render as crisp, zoomable inline images | | 🌐 | Rich HTML Embeds | Interactive HTML tools (audio, video, charts, dashboards, forms) render as live inline webviews | | 📁 | Folders & Org | Drag-and-drop folders with per-folder system prompts, models, and knowledge bases | | 💬 | Channels | Topic-based group chat rooms for multiple users and AI models | | 📚 | Knowledge Bases | Type # for a searchable picker for your knowledge collections (RAG) | | 🛠️ | Tools & Workspace | Toggle tools per conversation; manage models, prompts, skills, and tools from within the app | | 🧠 | Memories | View, add, edit, and delete AI memories that persist across conversations | | 🤖 | Automations | Schedule prompts to run automatically at recurring times | | 📅 | Calendar | Schedule events with AI assistance | | 🎨 | Deep Theming | Accent color picker, pure black OLED mode, tinted surfaces — with live preview | | ♿ | Accessibility | Independent font size, UI scaling, and live preview with presets | | 🔐 | Full Auth Support | Username/password, LDAP, SSO, and auth proxy support (Authelia, Authentik, Keycloak, etc.) | | 🔗 | Multi-Server | Save multiple Open WebUI servers, switch instantly | | 🏠 | Widgets & Shortcuts | Home screen widgets and Action Button integration via Shortcuts | | 📱 | iPad Native | Full persistent sidebar, 4-column grids, persistent terminal panel |

Composer Shortcuts

| Trigger | Action | |---|---| | @ | Switch model mid-conversation | | / | Browse & search your prompt library | | $ | Browse & apply skills | | # | Pick a knowledge base / file (RAG) |


📋 Requirements

| | Requirement | |---|---| | 📱 Device | iPhone or iPad | | 🍎 iOS | iOS 18.0 or later | | 🛠️ Build | Xcode 16.0+ / Swift 6.0+ | | 🌐 Server | A running Open WebUI instance |


🔨 Build & Run Locally

1. Clone

git clone https://github.com/ichigo3766/Open-Relay.git
cd Open-Relay

2. Open in Xcode

open "Open UI.xcodeproj"
Xcode will automatically fetch all Swift Package dependencies on first open. This may take a minute.

3. Configure Signing

  1. Select the Open UI target in the Project Navigator
  2. Go to Signing & Capabilities
  3. Choose your Development Team
  4. Update the Bundle Identifier if needed

4. Run

Select an iOS 18+ simulator or connected device → press ⌘R

On first launch, enter your Open WebUI server URL and sign in.


🧱 Tech Stack

| Layer | Technology | |---|---| | UI | SwiftUI (100%) | | Language | Swift 6, strict concurrency | | Architecture | MVVM | | Streaming | SSE (Server-Sent Events) | | Voice Calls | CallKit | | On-Device ML | MLX Swift (Marvis TTS + Qwen3 ASR) | | Persistence | Core Data |


🔗 URL Scheme

Open Relay supports a custom URL scheme (openui://) so you can launch the app and trigger actions from Raycast, Obsidian, Apple Shortcuts, Home Assistant, terminal scripts, or any tool that can open a URL.

Supported URLs

| URL | What it does | |---|---| | openui://new-chat | Open a new chat with focus on the input field | | openui://new-chat?prompt=Hello | Open a new chat with "Hello" pre-filled in the input | | openui://new-chat?prompt=Hello&send=true | Open a new chat, pre-fill "Hello", and send it immediately | | openui://new-chat?model=gpt-4o | Open a new chat and select the specified model | | openui://new-chat?prompt=Hello&model=gpt-4o&send=true | Pre-fill, select a model, and auto-send | | openui://new-chat?mode=voice-recording | Start a new AI voice call | | openui://continue | Resume the last conversation | | openui://chat/{conversationId} | Open a specific conversation by ID | | openui://voice-call | Start a voice call | | openui://new-note | Open the Notes section | | openui://new-channel | Create a new Channel | | openui://note/{noteId} | Open a specific note by ID |

Query Parameters

| Parameter | Values | Description | |---|---|---| | prompt | Any text (max 4,000 chars) | Pre-fills the chat input field | | model | Model ID string | Selects the model by ID (e.g. gpt-4o, llama3.2) | | send | true | Auto-sends the prompt immediately (requires prompt) | | mode | voice-recording | Opens a voice call instead of text chat |

Examples

Raycast Script Command:

open "openui://new-chat?prompt=Summarize%20my%20clipboard&send=true"

Apple Shortcut action: Use the built-in "Ask Open Relay" Shortcuts action (appears in the Shortcuts app under Open Relay) to open a chat with a prompt, optional model, and auto-send — all configurable from the Shortcuts editor.

Home Assistant automation:

service: notify.mobile_app_your_phone
data:
  message: "shortcut"
  data:
    url: "openui://new-chat?prompt=What%27s+the+weather+forecast%3F&send=true"


🤝 Contributing

Pull requests are welcome! Whether it's a bug fix, improvement, or new feature — feel free to open an issue or submit a PR.

  1. Fork the repo
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes
  4. Push to the branch
  5. Open a Pull Request

📄 License

This project is licensed under the GPL License. See LICENSE for details.


Made with ❤️ for the Open WebUI community

⭐ Star this repo · 🐛 Report a Bug · 💡 Request a Feature

Chat with me