# iPhone and iPad (/docs/apps/ios)

codai for iOS is a native SwiftUI app — chat, voice, transcripts, Studio, vault approvals and real terminals into your environments, desktops, sandboxes and SSH servers.

codai for iOS is a native SwiftUI app for iPhone and iPad (iOS 18 or newer). It uses the same `codai` model and the same account as every other client. It is in internal testing: it reaches testers through TestFlight, and until then as a sideloaded build.

## Sign in [#sign-in]

The app never asks for your password. Tap **Sign in**: the approval page opens in Safari on the same phone (passkeys work there), you approve, and the app receives its own API key for this device, kept in the Keychain. **Sign out** deletes it from the phone.

## What it does [#what-it-does]

| Area | What you get |
| --- | --- |
| **Chat** | Server-synced sessions (the same conversations as desktop and web), typed cards, voice input with on-device speech recognition and read-aloud. |
| **Transcripts** | Records Ogg Opus, uploads while you record and shows live captions; the transcript is ready on every device. |
| **Studio** | Creatives and the Music Room. |
| **Vault** | Approve agent access with a Secure Enclave key and Face ID (tier-3 requests; tier 4 stays on Android or desktop for now). |
| **Account** | Usage, billing, keys, team and settings open the hub in Safari; heartbeats and environments are native screens under Account › Tools. |
| **Terminals** | Real terminals (SwiftTerm, a real pty on the other side) — see below. |

## Terminals [#terminals]

Every terminal is a full pty: colours, `vim`, `top`, resizing and the on-screen extra keys (Esc, Tab, Ctrl, arrows) work the same everywhere.

| Target | How it connects |
| --- | --- |
| **Environments** | Your BYO and managed [environments](../environments/index.mdx), over codai-relay — the same terminal as the hub and `codaid env shell`. |
| **Desktop hosts** | PCs running codai desktop with *Serve as remote host* on. The desktop enrols its own environment once and serves a `pty` stream over codai-relay; it appears in the [hosts list](../sessions/hosts.mdx) with cap `pty`. |
| **Cloud sandboxes** | A shell in a running sandbox over [`wss://ai.codai.ro/v1/sandboxes/{id}/pty`](../api/gateway/sandboxes.mdx); it counts as the sandbox's one exec and is billed as exec seconds. |
| **SSH** | Any SSH server. The key is a **Secure Enclave P-256 key** (`ecdsa-sha2-nistp256`) created on the phone: it cannot be exported or copied, and each use can require Face ID. Optionally add a password instead. For codai environments the app asks the environment's SSH CA for a 12-hour [certificate](../environments/api.mdx) for that key, so there is no long-lived key to install. |

To use the Secure Enclave key on a server outside codai, copy its public key line (`ecdsa-sha2-nistp256 AAAA…`) from the app into that server's `~/.ssh/authorized_keys`.

## Control an iPhone from elsewhere [#control-an-iphone-from-elsewhere]

The iOS app itself cannot drive other apps — iOS does not allow it. To control an iPhone remotely (from the hub, Android or an agent), use the [codai iPhone bridge](./iphone-remote.mdx) on the PC the phone is paired with.

## Install [#install]

| Channel | Status |
| --- | --- |
| **TestFlight** | Internal testers, as soon as the Apple developer account is active; you get an e-mail invitation. |
| **Sideload** | An unsigned build installed with Impactor and a free Apple ID; the signature lasts 7 days, after which you reinstall. |
