---
title: Install (iOS)
description: Add the Extentos iOS SDK with Swift Package Manager from github.com/extentos/swift-glasses — Xcode, Package.swift, or xcodegen.
type: guide
platform: ios
related:
  - /docs/getting-started/ios
  - /docs/getting-started/with-agent
  - /docs/sdk/ios/initialization
  - /docs/sdk/ios/info-plist
  - /docs/sdk/android/install
---

The Extentos iOS SDK is distributed as a Swift package from
[`github.com/extentos/swift-glasses`](https://github.com/extentos/swift-glasses).
The current version is `2.0.0` — the Android and iOS SDKs version in lockstep on
the same shared core.

## Add the package

**Xcode** — *File → Add Package Dependencies…*, paste
`https://github.com/extentos/swift-glasses`, and set the dependency rule to
**Up to Next Major Version** starting at `2.0.0`.

**`Package.swift`:**

```swift
dependencies: [
    .package(url: "https://github.com/extentos/swift-glasses", from: "2.1.2"),
],
targets: [
    .target(
        name: "MyApp",
        dependencies: [
            .product(name: "GlassesCore", package: "swift-glasses"),
            .product(name: "GlassesUI", package: "swift-glasses"),
        ]
    ),
]
```

**xcodegen (`project.yml`):**

```yaml
packages:
  Extentos:
    url: https://github.com/extentos/swift-glasses
    from: 2.1.2
```

Then link the products your target uses:

| Product | What it is |
|---|---|
| `GlassesCore` | The SDK — connection, camera, audio, voice, assistant, toggles, telemetry |
| `GlassesUI` | The drop-in SwiftUI connection page (`ExtentosConnectionPage`) and theming |
| `GlassesLocal` | On-device text models for the [local tier](/docs/concepts/local-models). Optional; raises the package's deployment floor to **iOS 17** |
| `GlassesLocalVoice` | On-device speech (Kokoro) for the local tier. Optional |
| `GlassesDebug` | Scaffolding today — the debug-console API surface is reserved; the current panel is a placeholder |
| `GlassesLifecycle` | Scaffolding today — the `extentosListening` scene-phase modifier is a passthrough; API surface reserved |
| `GlassesTesting` | Scaffolding today — `FakeExtentosGlasses` doesn't implement the sub-clients yet; stub the protocols yourself for unit tests |

The compiled Rust core (`extentos_coreFFI.xcframework`) is a binary target that SPM
resolves automatically from the GitHub Release by URL and checksum — device arm64, a
universal arm64/x86_64 simulator slice, and macOS arm64. There is nothing to download
or verify by hand.

## Agent-driven install

The [agent-driven flow](/docs/getting-started/with-agent) remains the fastest path:
install [`@extentos/mcp-server`](https://www.npmjs.com/package/@extentos/mcp-server)
in your AI coding agent and ask it to add smart-glasses capabilities to your iOS app —
`generateConnectionModule(platform: "ios")` emits the bootstrap, the
[`Info.plist` keys](/docs/sdk/ios/info-plist), and the `ExtentosConnectionPage`
placement. The scaffold's dependency step emits the published package coordinates
above.

## Requirements

| Requirement | Value |
|---|---|
| Deployment target | iOS 16.0+ — but **iOS 17.0+ if you link `GlassesLocal`** (the local tier's floor). Pick 17 up front if on-device models are anywhere in your plan; raising it later is an app-wide change. |
| Swift toolchain | Swift 6 (`swift-tools-version: 6.0`) |
| Language mode | Swift 5 (`.swiftLanguageMode(.v5)` on `GlassesCore`) |
| Meta DAT (iOS) | `meta-wearables-dat-ios` from `0.8.0` (resolved transitively). Unlike Android, iOS does **not** split the vendor SDK into a separate product — DAT is a dependency of `GlassesCore` on every iOS app. A voice app links it but never initializes it, so it still needs no Meta account, no credentials, and none of the DAT Info.plist keys. |

After install, continue with the [`Info.plist` setup](/docs/sdk/ios/info-plist) and
[initialization](/docs/sdk/ios/initialization) — or follow the
[iOS quickstart](/docs/getting-started/ios) end to end.
