Oval
No description available
Install / Use
/learn @shreyaspapi/OvalREADME
Oval
A native macOS client for Open WebUI. Chat with your self-hosted AI — right from your Mac.
Download · Report Bug · Request Feature
<br> </div>Features
Core
- Real-time streaming chat with full markdown rendering (headings, bold, italic, code blocks with syntax highlighting and copy)
- Model selection from all models on your Open WebUI server
- Conversation management — search, time-grouped sidebar (Today / Yesterday / Previous 7 Days / etc.)
- Chat persistence — conversations saved to your server, synced with the web UI
- Auto-generated titles for new conversations
- Multi-server support — add, switch, and manage multiple Open WebUI servers
Quick Chat
- Global hotkey (
Ctrl+Shift+Space) — Spotlight-style floating chat window, always accessible - Paste to chat (
Ctrl+Shift+V) — paste clipboard content into a new quick chat - Compact input mode that expands into a full conversation view
Attachments & Input
- File and image attachments — drag & drop, Cmd+V paste, or file picker
- Web search toggle for retrieval-augmented generation
- Voice input with on-device speech-to-text (Apple Speech framework)
Voice Mode
- Floating voice window — ChatGPT-style compact window, draggable, stays on top
- Text-to-speech — native macOS TTS for assistant responses
- Chat play button — hear any assistant message read aloud
- Instant stop — TTS stops mid-sentence when you hit stop
macOS Integration
- Light and dark mode matching Open WebUI's design system
- Liquid Glass UI effects (macOS Tahoe)
- Always on top mode
- Launch at login
- Menu bar icon with quick access
- Esc to close windows
- Keyboard shortcuts throughout (Cmd+N, Cmd+F, Cmd+Shift+C, etc.)
Screenshots
| Login | Sidebar & Conversations |
|:---:|:---:|
|
|
|
| Chat with Markdown & Code | Quick Chat (Ctrl+Shift+Space) |
|:---:|:---:|
|
|
|
| Voice Mode |
|:---:|
|
|
Requirements
- macOS 26.0 (Tahoe) or later
- An existing Open WebUI server
- Oval does not host or provide AI models — it connects to your server
Installation
Download
Download the latest .dmg from the Releases page, open it, and drag Oval to your Applications folder.
The app is signed with Developer ID and notarized by Apple. It should open without any Gatekeeper warnings.
Mac App Store
<!-- [Download on the Mac App Store](https://apps.apple.com/app/oval-for-open-webui/idXXXXXXXXXX) -->Coming soon.
Build from Source
- Clone the repository:
git clone https://github.com/shreyaspapi/Oval.git
cd Oval
- Open in Xcode:
open OpenwebUI/OpenwebUI.xcodeproj
-
Select the OpenwebUI scheme, set your signing team, and build (Cmd+B).
-
Run (Cmd+R).
Note: Requires Xcode 26.2+ with the macOS 26 SDK.
Keyboard Shortcuts
| Shortcut | Action |
|---|---|
| Ctrl+Shift+Space | Toggle Quick Chat |
| Ctrl+Option+Space | Toggle main window |
| Ctrl+Shift+V | Paste clipboard into new Quick Chat |
| Cmd+N | New conversation |
| Cmd+F | Search conversations |
| Cmd+Shift+C | Copy last assistant response |
| Cmd+Option+T | Toggle always on top |
| Cmd+, | Settings |
| Esc | Close window |
Architecture
Native SwiftUI app with macOS native TTS for voice playback.
OpenwebUI/
├── OpenwebUIApp.swift # App entry point, window & menu config
├── ContentView.swift # Root router (loading → connect → chat)
├── Models/
│ └── DataModels.swift # All data models
├── Services/
│ ├── AppState.swift # Main app state (@Observable)
│ ├── OpenWebUIClient.swift # HTTP client (auth, models, chats, streaming)
│ ├── ConfigManager.swift # Disk persistence for server configs
│ ├── VoiceModeManager.swift # Voice conversation pipeline
│ ├── VoiceModeWindowManager.swift # Floating NSPanel for voice mode
│ ├── TTSManager.swift # TTS playback (native macOS)
│ ├── SpeechManager.swift # On-device speech-to-text (Apple Speech)
│ ├── HotkeyManager.swift # Global keyboard shortcuts (CGEvent tap)
│ ├── MiniChatWindowManager.swift # Floating NSPanel for Quick Chat
│ ├── LaunchAtLoginManager.swift # SMAppService wrapper
│ ├── TrayManager.swift # Menu bar status item
│ └── NotificationManager.swift
├── Theme/
│ └── AppColors.swift # Adaptive color system (light/dark)
└── Views/
├── Chat/ # Main chat UI
│ ├── ChatView.swift # Layout (ServerRail | Sidebar | Detail)
│ ├── ChatAreaView.swift # Messages + input + drag/drop
│ ├── ChatInputView.swift # Input bar with attachments, mic, web search
│ ├── VoiceModeView.swift # Voice conversation UI (floating window)
│ ├── MiniChatView.swift # Quick Chat UI
│ ├── MessageBubbleView.swift
│ ├── MarkdownTextView.swift
│ └── ...
├── InstallationView.swift # Login/connect screen
└── Controls/
└── VoiceModelSettingsView.swift # Voice model download & selection
Security & Privacy
- No data collection — no analytics, no telemetry, no tracking
- All network traffic goes directly between your Mac and your Open WebUI server
- Credentials stored locally in the app's sandboxed container
- Voice TTS uses macOS native speech synthesis
See PRIVACY_POLICY.md for the full privacy policy.
Contributing
Contributions are welcome! Here's how to help:
- Bug reports — Create an issue with steps to reproduce
- Feature requests — Create an issue describing the feature
- Questions & feedback — Use GitHub Discussions
License
This project is licensed under the GNU General Public License v3.0 — see the LICENSE file for details.
Disclaimer
Oval is an independent, third-party application and is not officially affiliated with the Open WebUI project.
Support
Oval is free and open source. If you find it useful, consider supporting development:
<a href="https://buymeacoffee.com/shreyaspapi"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-ffdd00?style=for-the-badge&logo=buy-me-a-coffee&logoColor=black" alt="Buy Me a Coffee"></a> <a href="https://github.com/sponsors/shreyaspapi"><img src="https://img.shields.io/badge/GitHub%20Sponsors-ea4aaa?style=for-the-badge&logo=githubsponsors&logoColor=white" alt="GitHub Sponsors"></a>
Sponsors
Thank you to everyone who sponsors this project:
<!-- SPONSORS:START - Do not remove or modify this section --> <!-- This section is automatically updated -->Become the first sponsor! GitHub Sponsors or Buy Me a Coffee
<!-- SPONSORS:END -->Acknowledgments
- Open WebUI team for creating an amazing self-hosted AI interface
- Apple for SwiftUI and the macOS platform
Related Skills
node-connect
343.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
90.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
343.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
343.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。

