OpenAssistant

A SwiftUI iOS App built for the OpenAI Assistants API

OpenAssistant brings the full power of OpenAI's Assistants API directly to your iPhone. Built entirely with SwiftUI and the Combine framework, OpenAssistant provides comprehensive assistant management, vector stores, file management, and real-time conversations in a native iOS experience, all using your own OpenAI API Key.

Swift SwiftUI Combine OpenAI API
App Screenshot

Project Overview

OpenAssistant comes with a full SwiftUI interface with reactive Combine data flows. It unlocks the full spectrum of the OpenAI Assistants API, empowering you to orchestrate dynamic conversations, manage intelligent vector stores, and perform advanced file ingestion and processing — all within a sleek iPhone app.

🏗️

MVVM Architecture

Built with a robust Model-View-ViewModel pattern that ensures clean separation of concerns, exceptional testability, and maintainable code.

Reactive Programming

Harnesses the full power of the Combine framework to deliver real-time UI updates, seamless async operations, and responsive user interactions throughout the application lifecycle.

🔧

Modular Architecture

Organized into specialized modules including API services, chat functionality, assistant management, and vector store operations for maximum code reusability and maintainability.

📱

Native iOS

Crafted exclusively with SwiftUI to deliver a truly native iOS experience. No dependencies outside of the Apple ecosystem.

Key Features

🤖

Comprehensive Assistant Management

Full lifecycle management of OpenAI Assistants with advanced configuration options including GPT-4o, o-series models, fine-tuned temperature and reasoning effort controls, and custom user-provided instruction sets.

  • Full assistant creation and management
  • Advanced model selection (GPT-4o, 4.1, 4.5 / o1, 03-mini, o4-mini)
  • Dynamic parameter tuning (temperature & Top-P (workhorses), reasoning effort (reasoning models))
  • Real-time configuration updates
🛠️

Dynamic Tool Integration

Enable and configure AI tools including Code Interpreter for coding queries and File Search for document-based knowledge retrieval with advanced vector store integration.

  • Code Interpreter with execution capabilities
  • Advanced File Search with vector embeddings
  • Runtime tool configuration
  • Context-aware tool selection
🗂️

Advanced Vector Store Management

Enterprise-grade vector store operations with full CRUD functionality. Create knowledge bases from documents and associate them with assistants for intelligent, context-aware responses.

  • Complete vector store lifecycle management
  • Intelligent assistant-store associations
  • Document-based knowledge retrieval
  • Configurable embedding strategies
📄

Intelligent File Processing

Upload and process multiple file formats (PDF, TXT, DOCX, and more) with sophisticated chunking strategies. Advanced metadata management and seamless vector store integration.

  • Multi-format file support with smart processing
  • Configurable chunking (size and overlap control)
  • Rich file metadata and status tracking
  • Automated vector store association
💬

Real-Time Chat Interface

Engage in sophisticated conversations with rich Markdown rendering, persistent message history, and intelligent thread management. Features loading states and real-time conversation updates.

  • Rich Markdown rendering with syntax highlighting
  • Persistent conversation history across sessions
  • Intelligent OpenAI thread lifecycle management
  • Real-time message streaming and updates
🔒

Enterprise-Grade Security & Persistence

Secure API key management using iOS secure storage, with robust local data persistence and privacy-focused design principles throughout the application.

  • Secure @AppStorage-based API key storage
  • Local message persistence with MessageStore
  • Cross-session data integrity
  • Privacy-first architecture design

Architecture Overview (MVVM)

Built using the Model-View-ViewModel (MVVM) pattern, the application provides a scalable and maintainable foundation for complex SwiftUI development.

View Layer (SwiftUI)

Declarative UI built with SwiftUI components

ChatView AssistantManagerView VectorStoreDetailView SettingsView
↕️

ViewModel Layer (Business Logic)

Manages state and coordinates between View and Model

ChatViewModel AssistantManagerViewModel VectorStoreManagerViewModel ContentViewModel
↕️

Service Layer (API & Persistence)

Handles external API calls and data persistence

OpenAIService FileUploadService MessageStore @AppStorage
↕️

Model Layer (Data Structures)

Codable structs mirroring OpenAI API entities

Assistant Message Thread VectorStore

Core Application Flow

Understanding how data flows through the application and how users interact with different features.

1

App Initialization

The application starts with OpenAssistantApp, which initializes environment objects and checks for API key presence.

@StateObject private var assistantManagerViewModel = AssistantManagerViewModel()
2

API Key Management

The app securely stores the OpenAI API key using @AppStorage and prompts for setup if missing.

@AppStorage("OpenAI_API_Key") private var apiKey: String = ""
3

Main Navigation

MainTabView provides tab-based navigation between Assistants, Management, Vector Stores, and Settings.

TabView { ForEach(Tab.allCases, id: \.self) { tab in ... } }
4

Data Fetching

ViewModels interact with OpenAIService to fetch assistants, create vector stores, and manage chat threads.

assistantManagerViewModel.fetchAssistants()
5

Real-time Updates

The app uses NotificationCenter and Combine publishers for decoupled, real-time UI updates.

NotificationCenter.default.post(name: .settingsUpdated, object: nil)

Technical Implementation

🔄 Asynchronous Operations

Built with Swift's modern concurrency model using async/await and Combine publishers for reactive programming.

🗃️ Data Persistence

Local message storage with MessageStore and secure API key persistence using @AppStorage.

🌐 API Integration

Comprehensive OpenAI API integration with dedicated service extensions for different endpoints.

🎨 Adaptive UI

Support for Light, Dark, and System appearance modes with responsive design principles.