Get the app
The iOS viewer is a TestFlight beta. It is a viewer, not a host: the shell, files, processes, and credentials stay on the Mac or Linux machine. Join with the TestFlight public link or from wrapper.sh. The public App Store listing is not available yet. The app requires iOS or iPadOS 18 or later and a shared host session.Requirements
- iOS or iPadOS 18 or later
- a Wrapper account
- the Wrapper CLI installed on a Mac or Linux host
- an active wrapped shell
- Pro (15/month), to attach from another device
Prepare the desktop host
Sign in and share a session (does not patch your shell config):Ctrl+\ and then s to share the current session. Wrapper prints the
session ID and share code. Unshare at any time with Ctrl+\ and then u.
Sign in on mobile
- Open Wrapper and choose Continue securely.
- Confirm the code on the wait screen, then open the approval page.
- Sign in if needed, approve the device, and return to Wrapper.
- Pull to refresh if the session list was already open.
Open your own session
A shared session owned by the signed-in account appears in the session list. Select it to request a fresh, single-use viewer ticket and open the terminal. Sessions that are offline or not shared cannot be opened. Share them from the host first.Join a guest session
Choose Join, then enter the session ID and share code supplied by the host. Share codes are case-insensitive. The mobile app does not retain the share code for reconnect. If the guest connection closes, return to Join and enter the code again.Terminal controls
The bottom control bar stays inside the device safe area and provides common terminal keys:- show or hide the software keyboard
- Control modifier
- Escape
- Tab
- arrow keys
- explicit paste
- detach
P2P and relay status
Wrapper keeps an authenticated WebSocket relay for signaling and fallback, then attempts an encrypted WebRTC data channel.
If relay or P2P connectivity drops, owner sessions request fresh one-time
tickets with bounded retries. A failed P2P negotiation does not prevent relay
fallback.
Direct P2P exposes peer IP addresses. Relay fallback is encrypted in transit,
but the relay processes terminal frames after TLS termination. See
Security and privacy and
Transports.
Privacy lock
Terminal content is covered when the app is inactive or captured. Returning after a longer background interruption requires Face ID, Touch ID, or the device passcode. Canceling authentication keeps the terminal locked. Locking or backgrounding the app must not crash the process. The relay or P2P link may drop; returning reconnects or asks you to open the session again. If device-owner authentication is unavailable, Wrapper keeps content covered and offers safe sign-out rather than revealing the terminal.Account controls
Settings includes:- Privacy Policy, Terms, and Support
- Sign out
- permanent account deletion
Troubleshooting
If the app remains on Connecting securely:- Confirm the host still reports the session as shared.
- Refresh the mobile session list.
- Check whether the host or mobile network changed.
- Close the terminal and open it again to request a fresh ticket.
- For a guest session, re-enter the original share code.