Runline is a native iOS 26+ client for Cursor development on iPhone and iPad. It has two separate experiences: Cursor Chat for SDK-backed conversational workspace sessions, and Cursor Cloud for the structured Cloud Agent workflow.
Runline is independent and is not affiliated with, endorsed by, or connected to Cursor or Anysphere.
Runline is in public beta.
- iOS app: native SwiftUI app for iOS 26+ and iPadOS 26+.
- Runtime: Cursor Chat through the Runline SDK bridge, plus direct Cursor Cloud Agents API from the device.
- Authentication: user-owned Cursor API keys stored in iOS Keychain.
- TestFlight/App Store Connect releases: maintainer-managed.
- Public source: Cloud Agent mode requires no hosted backend, Node service, or private endpoint; Cursor Chat bridge endpoints are supplied by private build configuration.
- Stores the user's Cursor API key in iOS Keychain.
- Lists Cursor repositories and models.
- Starts conversational Cursor Chat sessions from a composer-first screen with repo-backed or general-chat context.
- Tracks Cursor Chat conversations in a slide-over drawer grouped by workspace.
- Continues a General Chat into a repository-backed workspace while carrying the chat topic and prior context.
- Starts Cursor Cloud Agent runs from the structured native Cloud flow.
- Organizes Cursor Cloud into running, review-ready, attention, and archived run queues with compact output indicators.
- Shows Cursor Cloud run-review detail headers with state, repository context, diffs, artifacts, pull requests, and cancel actions.
- Defaults Cursor Cloud and Cursor Chat to Composer 2.5 while preserving explicit model selections.
- Shows agent chats with immediate user bubbles, quiet live activity rows, grouped run events, status, artifacts, and pull request links.
- Shows inline file-change summaries and diff sheets when SDK events include parseable change data.
- Supports follow-up prompts, files, and images, including queued Cursor Chat follow-ups while a run is active.
- Uses the hosted Runline SDK bridge for Cursor Chat, with bridge source included for auditability and maintainer deployment.
- Provides search, iPhone tab navigation, and iPad split-view navigation.
- Supports system appearance, light mode, dark mode, and notification preferences.
- Keeps the non-affiliation disclaimer visible in the app and docs.
Runline has two runtime paths. Cursor Cloud remains fully backendless, while Cursor Chat uses the Runline SDK bridge for the more native conversational workspace loop.
| Mode | Where it runs | Best for | Requirements |
|---|---|---|---|
| Cursor Chat | iOS to the Runline SDK bridge, then @cursor/sdk to Cursor cloud runtime |
Cursor-like live sessions, SDK event streaming, follow-up iteration | Cursor API key |
| Cursor Cloud | Directly from iOS to Cursor Cloud Agents | Repository tasks, artifacts, PR workflows, release checks | Cursor API key |
Runline does not require Node, a Mac relay, or a user-run backend for Cursor Cloud. Official beta builds can include a maintainer-configured Runline bridge for Cursor Chat, but the public source does not publish the live bridge URL.
The iOS beta is distributed through TestFlight by the maintainer. Once installed:
- Open Runline.
- Connect a Cursor API key.
- Select a repository or paste a repository URL.
- Start a conversational Cursor Chat or a structured Cursor Cloud run.
- Continue the session from the chat composer when more context is needed.
Cursor API keys stay on device in Keychain. Cursor Cloud uses the key directly from the app; Cursor Chat sends it over HTTPS to the Runline bridge only for SDK-backed requests.
The SDK bridge source is included in Services/cursor-sdk-bridge for transparency and maintainer deployment. It is not part of the normal iOS setup path, and contributors do not need npm, Node, Fly, or a local bridge to build and inspect the app.
Bridge deployments should keep live Fly configuration, bridge URLs, bridge secrets, and tokens outside git. The service includes fly.example.toml only as a public-safe shape for maintainers or advanced self-hosters. Maintainer builds can supply RUNLINE_SDK_BRIDGE_URL through private local build settings. The bridge does not persist Cursor API keys or prompt text.
Runline/ SwiftUI app source
RunlineTests/ Unit tests for app state, providers, cache, routing, and Cursor API mapping
Services/cursor-sdk-bridge/
Cursor SDK bridge source for auditability and hosted Cursor Chat
DesignAssets/ Public logo and app icon source previews
Legal/ Trademark and branding guidance
Tools/ Maintainer utilities such as build-number updates
.asc/ Sanitized ASC workflow example only; live config is ignored
.github/ CI, issue templates, PR template, Dependabot
docs/ Release and roadmap documentation
AGENTS.md Operating rules for contributors and coding agents
SELF_HOSTING_MODEL.md Public repo and source boundary
Requirements:
- macOS
- Xcode 26 or newer with the iOS 26 simulator runtime
- Swift 6
- XcodeGen, if regenerating the Xcode project from
project.yml
Run iOS tests:
xcodebuild test \
-project Runline.xcodeproj \
-scheme Runline \
-destination 'platform=iOS Simulator,name=iPhone 17,OS=26.4.1'Run metadata checks:
xcodebuild -list -project Runline.xcodeproj
ruby -c Tools/set_build_number.rb
plutil -lint ExportOptions-AppStore.plist ExportOptions-TestFlightUpload.plist Runline/Resources/Info.plist Runline/Resources/PrivacyInfo.xcprivacy Runline/Resources/Runline.entitlementsRun secret scanning before public release work:
gitleaks detect --source . --redact --verbose
gitleaks detect --source . --no-git --redact --verbose| Channel | Current state | Notes |
|---|---|---|
| GitHub | Public repository at parrisdigital/runline |
Source, docs, issues, releases |
| TestFlight | Runline 1.0 (26) in beta testing |
Requires App Store Connect access |
| App Store | Preparing public publishing | Maintainer-managed |
See docs/RELEASES.md for the maintainer release checklist, CHANGELOG.md for public release notes, docs/ROADMAP.md for the beta roadmap, and docs/CURSOR_SDK_CAPABILITIES.md for the verified SDK capability map behind Cursor Chat.
TestFlight and App Store releases are maintainer-only and are not required for contributors.
Local ASC automation expects a private Runline App Store Connect profile in the maintainer's keychain. Keep Apple API keys, signing files, live ASC workflow config, archives, IPAs, and ASC run artifacts out of git.
Use the sanitized example as the starting point for local release work:
cp .asc/workflow.example.json .asc/workflow.jsonThen fill in the local App Store Connect app and TestFlight group IDs. The live .asc/workflow.json file is ignored by git.
Run local preflight checks:
asc workflow run preflightUpload a TestFlight build with an explicit build number:
asc workflow run testflight BUILD_NUMBER:<next-build-number>Use explicit build numbers so TestFlight stays aligned with the active Runline sequence.
- Cursor API keys are stored on iOS in Keychain.
- Cursor Cloud requests go directly from iOS to Cursor's Cloud Agents API.
- Cursor Chat requests send the Cursor API key over HTTPS to the Runline bridge for SDK execution. The bridge is designed not to persist Cursor API keys.
- Official beta users do not need to configure a bridge URL or shared secret when the build includes the maintainer bridge endpoint. Public-source builds should supply
RUNLINE_SDK_BRIDGE_URLprivately before enabling Cursor Chat. - Apple signing material, API keys,
.envfiles, archives, IPAs, and provisioning profiles must never be committed.
Report vulnerabilities privately through SECURITY.md.
See CONTRIBUTING.md, AGENTS.md, SECURITY.md, SUPPORT.md, CODE_OF_CONDUCT.md, and Legal/TRADEMARKS.md.
