OCTO — the open workplace built for humans × AI agents.
Let Lobsters (OpenClaw-powered digital doubles) do the thinking and doing. You focus on taste.
🏠 OCTO Home · 🚀 Quickstart · 📦 Ecosystem · 🤝 Contributing
🌐 Read in: English · 简体中文
OCTO iOS
Native iOS client for the OCTO messaging platform — Swift / Objective-C, talking to
octo-serverover REST + WebSocket.
octo-ios is the official iOS front-end for OCTO. It is a native Swift /
Objective-C app (not a webview wrapper) that talks to
octo-server over REST +
WebSocket, and drives the same Lobster-agent conversation surface as
octo-web and
octo-android.
🌟 Why OCTO iOS
- Native, not a webview. UIKit + SwiftUI hybrid, uses platform features (APNS push, Share / Notification / Widget extensions, Universal Links, Shortcuts) rather than shipping a browser shell. First-class mobile UX for Lobster conversations.
- Ships without secrets. No
GoogleService-Info.plist, no signing certificates, no provisioning profiles bound to the upstream team. You bring your own Apple Developer team, your own Bundle Identifier (com.example.octoplaceholder →com.yourcompany.octo), your own Firebase project, your own certificates. All stripped by theocto-releasepipeline before this repo is published. - Mirrors the web surface. Same REST + WebSocket protocol as
octo-web/octo-android, same i18n resource keys (English · 简体中文), same Lobster identity / streaming / typing indicators — so feature work can land on three clients without a protocol fork.
🚀 Quickstart
⚠️ Mandatory pre-flight — this fork will not build a signed or
distributable .ipa until you swap four placeholder artefacts:
- Bundle Identifier — see
README-BUNDLE-ID.mdfor the full rename checklist across the.pbxproj, entitlements, and every extension target (com.example.octo→ your reverse-DNS). - Firebase configuration — see
firebase-template.mdfor how to obtain and drop in your ownGoogleService-Info.plist. - Provisioning / certificates — use your Apple Developer team's own signing certificate and provisioning profile; the upstream fork references none.
- Universal Links — see
universal-link-setup.mdfor theapple-app-site-associationfile that your domain must host before deep-links resolve to your build.
Once those are done, open in Xcode:
git clone https://github.com/Mininglamp-OSS/octo-ios.git
cd octo-ios
# CocoaPods (if used):
pod install
# Or Swift Package Manager — handled by Xcode on open.
open OCTO.xcworkspace # or OCTO.xcodeprojFrom CLI, a development build after signing is configured:
xcodebuild -workspace OCTO.xcworkspace \
-scheme OCTO \
-configuration Debug \
-destination 'generic/platform=iOS Simulator' \
buildBy default the app points at http://localhost:8080 for octo-server.
Edit OCTO/Config/Config.plist (or the flavour-specific equivalent) to
aim at your own deployment.
📦 Modules / Architecture
Top-level layout (typical OCTO iOS tree):
| Path | Purpose |
|---|---|
OCTO/ | Main app target — view controllers, SwiftUI views, app delegate |
OCTO/UI/ | Screen surfaces: chat, channels, org, settings |
OCTO/Data/ | REST + WebSocket client, local cache, Core Data / Realm models |
OCTO/Agent/ | Lobster-aware UI components (streaming, tool-call previews, agent identity) |
OCTO/Push/ | APNS registration + push routing + notification-service extension |
OCTO/Resources/ | Assets, localisations (en.lproj, zh-Hans.lproj), launch storyboards |
ShareExtension/ | Share-sheet target for forwarding content into OCTO |
NotificationExtension/ | Rich-notification + encryption-aware decryption target |
WuKongSDK/ | WuKongIM iOS client wrapper (real-time messaging transport) |
Pods/ or Packages/ | CocoaPods / SPM dependencies |
Runtime pillars:
- Auth — token / refresh-token stored in Keychain.
- Transport —
URLSessionfor REST; WuKongIM iOS SDK for the persistent WebSocket. - Persistence — Core Data (or Realm, depending on flavour) for message cache and offline drafts; file attachments under the app container.
- Push — APNS device token →
octo-server→ Firebase fan-out (optional) → Notification-Service extension decrypts the payload before display. - UI — UIKit navigation skeleton + SwiftUI screens where it pays off; Dynamic Type + Dark Mode supported by default.
🔗 OCTO Ecosystem
graph TD
subgraph Clients[Clients]
Web[octo-web<br/>Web / PC]
Android[octo-android<br/>Android]
iOS[octo-ios<br/>iOS]
end
subgraph Core[Core Services]
Server[octo-server<br/>Backend API]
Matter[octo-matter<br/>Task / Todo]
Summary[octo-smart-summary<br/>AI Summary]
Admin[octo-admin<br/>Admin Console]
end
subgraph Shared[Shared Libraries & Integrations]
Lib[octo-lib<br/>Core Go Library]
Adapters[octo-adapters<br/>Third-party Adapters]
end
Web --> Server
Android --> Server
iOS --> Server
Admin --> Server
Server --> Matter
Server --> Summary
Server --> Adapters
Server -.uses.-> Lib
Matter -.uses.-> Lib
Adapters -.uses.-> Lib| Repository | Language | Role |
|---|---|---|
octo-server | Go | Backend API · business orchestration · Lobster agent scheduling |
octo-matter | Go | Task / Todo / Matter micro-service |
octo-smart-summary | Go | LLM-powered conversation summarisation |
octo-web | TypeScript / React | Web & PC (Electron) client |
octo-android | Kotlin / Java | Native Android client |
octo-ios | Swift / Objective-C | Native iOS client |
octo-admin | TypeScript / React | Admin console (tenant / org / user / channel management) |
octo-lib | Go | Shared core library (protocol, crypto, storage, HTTP) |
octo-adapters | TypeScript / Python | Third-party integrations (IM bridges, AI channels) |
🧭 Philosophy
OCTO ships under three shared principles that apply to every repository in this matrix:
- Local-first. Anything that can run on the user's own box — chats, embeddings, agents — should. Your data stays yours; cloud is a choice, not a requirement.
- Humans judge, AI thinks and acts. Humans focus on taste (what matters, what's right, what to ship). Lobster agents — OpenClaw-powered digital doubles — carry the thinking and execution load.
- Release-as-product. Every open-source cut is shipped as a self-contained product, not a code dump: one squash per release, Apache 2.0, no internal baggage, reproducible from this repo alone.
🤝 Contributing
We love pull requests! Before you open one, please read:
- CONTRIBUTING.md — workflow, branch model, commit style
- CODE_OF_CONDUCT.md — community expectations
For security issues please follow SECURITY.md instead of the public tracker.
📄 License
Apache License 2.0 — see LICENSE for the full text and NOTICE for third-party attributions.
🙏 Acknowledgments
octo-ios owes its original scaffolding to:
- TangSengDaoDaoiOS — our upstream, by the TangSengDaoDao team.
- WuKongIM — the real-time messaging core that
octo-serverdrives behind this client.
See NOTICE for the full attribution list and third-party component licenses.
Made with 🐙 by OCTO Contributors · Mininglamp-OSS