A native iOS client for OpenCode servers, built with SwiftUI and Liquid Glass (iOS 26+).
opencode serve on localhost or remoteRoot-level Bun scripts wrap the common iOS commands:
bun run ios:build
bun run ios:device
# Prerequisites: Xcode 26, iOS 26 simulator
# Build and run
cd ios-app
xcodebuild -project OpenCodeNexus.xcodeproj -scheme OpenCodeNexus \
-destination 'platform=iOS Simulator,name=iPhone 17 Pro' \
-derivedDataPath build/DerivedData/Simulator build
# Or open in Xcode
open OpenCodeNexus.xcodeproj
If .xcodeproj opens in another app, open it with Xcode beta explicitly:
open -a /Applications/Xcode-beta.app /Users/johnferguson/Github/opencode-nexus/ios-app/OpenCodeNexus.xcodeproj
The iOS app includes an SSH-friendly device build script:
bun run ios:device
That command builds with Xcode beta, installs to the paired iPhone, and launches com.agenticcodeflow.opencodenexus. If SSH signing fails because the login keychain is locked, prepare signing first:
bun run ios:device:prepare-signing
See ios-app/README.md for the full device workflow, Xcode beta checks, signing certificate notes, and troubleshooting.
The app connects to an OpenCode server via REST + SSE:
# Start a server
opencode serve --port 4096
# Then in the app, connect to http://localhost:4096
See OpenCode Server Docs for full API reference.
| Layer | Technology |
|---|---|
| UI | SwiftUI + Liquid Glass (iOS 26) |
| Networking | URLSession async/await + SSE |
| State | @Observable (Swift 6.2) |
| Platform | iOS 26.0+, no dependencies |
ios-app/OpenCodeNexus/
├── Models/ # Codable API models
├── Services/ # OpenCodeClient (HTTP + SSE)
├── ViewModels/ # @Observable state management
├── Views/ # SwiftUI views
├── Extensions/ # Date formatting helpers
└── Assets.xcassets/ # Icons and colors