SwiftUI chat app for iPhone, iPad, and Mac Catalyst built on the MeshLLM SDK.
- Shared
iOSapp target withMac Catalyst - Auto-joins a public mesh by default
- Lets you override the default mesh with a specific invite token in Settings
- Streams chat responses through the MeshLLM Swift SDK
- Updates available models from SDK mesh events
- Uses
stream-chat-swift-aifor the composer, suggestions, typing indicator, and streaming markdown UI - Persists multiple conversations locally
- Includes a model picker in the composer
- If the invite token field in Settings is empty, MeshChat tries to join a public mesh automatically
- If you enter an invite token, MeshChat uses that mesh instead
- The connection badge in the sidebar reflects the current mesh state
Both packages are vendored locally because this project currently depends on local fixes:
MeshLLMincludes the current Swift SDK + XCFramework used by the appstream-chat-swift-aiincludes local packaging/UI adjustments for this app
- project.yml: XcodeGen project definition
- MeshChatApp.swift: app entry point
- AppSettings.swift: persisted settings and mesh connection state
- ChatStore.swift: conversation state and send flow
- MeshLLMService.swift: MeshLLM client integration
- ChatRootView.swift: sidebar, transcript, and settings presentation
Generate the project and open it in Xcode:
xcodegen generate
open MeshChat.xcodeprojBuild from the command line for Mac Catalyst:
xcodebuild -project MeshChat.xcodeproj -scheme MeshChat -destination 'platform=macOS,variant=Mac Catalyst' build- The app target is
iOSwithMac Catalyst, not a native macOS target stream-chat-swift-aiis iOS-oriented, which is why the Mac app runs through Catalyst- The vendored
MeshLLMFFI.xcframeworkcurrently builds and links for Catalyst, but Xcode may still print non-fatal linker warnings depending on the local SDK/toolchain version