Skip to content

shreyaspapi/Oval

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

102 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Oval

A native macOS client for Open WebUI. Chat with your self-hosted AI — right from your Mac.

Downloads Latest Release License Platform

Download · Report Bug · Request Feature


Oval Demo

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
Login Sidebar
Chat with Markdown & Code Quick Chat (Ctrl+Shift+Space)
Chat Quick Chat
Voice Mode
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

Coming soon.

Build from Source

  1. Clone the repository:
git clone https://github.com/shreyaspapi/Oval.git
cd Oval
  1. Open in Xcode:
open OpenwebUI/OpenwebUI.xcodeproj
  1. Select the OpenwebUI scheme, set your signing team, and build (Cmd+B).

  2. 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:

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:

Buy Me a Coffee GitHub Sponsors

Sponsors

Thank you to everyone who sponsors this project:

Become the first sponsor! GitHub Sponsors or Buy Me a Coffee

Acknowledgments

  • Open WebUI team for creating an amazing self-hosted AI interface
  • Apple for SwiftUI and the macOS platform

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Sponsor this project

  •  

Packages

 
 
 

Contributors