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 · 简体中文
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.
- 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.
.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.
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.
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) |
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.
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.
Apache License 2.0 — see LICENSE for the full text and NOTICE for third-party attributions.
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

