CodeAgentsMobile
Health Pass
- License — License: Apache-2.0
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 142 GitHub stars
Code Pass
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Mobile client for Claude Code.
CodeAgents Mobile
An mobile client for OpenCode on iOS.
Connect to any Linux SSH server and chat with your coding agent on the go.
Legacy Claude Code / Claude Proxy chat is retired: existing projects auto-migrate to OpenCode (runtime, MCP servers, optional rules/keys). The agent daemon (:8787) remains for background tasks and push.
TestFlight Beta
https://testflight.apple.com/join/eUpweBZV
AppStore
https://apps.apple.com/app/codeagents-mobile/id6748273716
Screenshots





Features
- A rebuilt chat experience: faster, clearer messages, and a smoother overall feel
- Background tasks: start longer actions and keep using the app while they run
- Skills support: add, manage, and use skills to expand what your agent can do
- Better file tools: browse, preview, create/edit, upload, and share files
- Agent controls: rules, permissions, scheduled tasks, and custom environment variables
- More provider choices: Anthropic, Z.ai, Minimax, or Moonshot
- Provision servers with Digital Ocean / Hetzner (auto SSH key setup + Claude Code install)
- MCP servers support
- Connect to remote servers via SSH
Requirements
- iOS 17.0+
- Xcode 15+
- Swift 5.9+
Getting Started
# Clone the repository
git clone [repository-url]
# Open in Xcode
open CodeAgentsMobile.xcodeproj
# Build and run
# Select your target device/simulator and press Cmd+R
Automation
OpenCode automation uses the repository-owned scripts in scripts/ while the
workflow YAML is generated by the automation controller.
scripts/ci.shvalidates the app with XcodeBuildMCP 2.5.0+ structured JSON
diagnostics by running deterministicCodeAgentsMobileTestssimulator unit
tests; live SSH integration suites are skipped unless run explicitly.scripts/ios-simulator-evidence.shcaptures simulator screenshots and demo
video for native visual validation and demo evidence.scripts/artifact.shbuilds a review simulator.app.zipby default and
emits the controllerpublished_artifactsJSON contract; setOPENCODE_ARTIFACT_MODE=testflightto publish a production build throughasc publish testflight. Production artifact automation runs this mode with
Phase app6abec477-1930-4e2e-bd18-554059958ccdand emits release metadata
so the controller can attach the IPA and checksum to the matching Gitea
Release.VERSIONS.TXTstores the release marketing version. Production builds use
the Gitea run number as the release build number when available.
The runner must provide Xcode, XcodeBuildMCP 2.5.0 or newer, and the asc CLI
for TestFlight publication. XcodeBuildMCP failures print the detected version
plus returned build/runtime/OS log paths when available; scripts do not upgrade
the tool automatically. If DEVELOPER_DIR is not set, the scripts default to/Applications/Xcode.app/Contents/Developer when present. TestFlight mode also
expects App Store Connect credentials through ASC_APP_ID, TESTFLIGHT_GROUP,ASC_KEY_ID, ASC_ISSUER_ID, and either ASC_PRIVATE_KEY_P8 orASC_PRIVATE_KEY_FILE.
Developer Diagnostics
Debug builds emit lightweight chat recovery timing lines with the[ChatRecoveryTiming] prefix when chats are reopened or resumed. These logs are
intended to separate local SwiftData load, Claude→OpenCode migration, OpenCode
hydration, persistence saves, media prefetch, MCP fetch, and resume-streaming
costs before making recovery behavior changes.
Chat is OpenCode-only. Reopen is local-first: persisted SwiftData messages
render before remote recovery. Legacy Claude Proxy projects are promoted byClaudeToOpenCodeMigrationService (idempotent; does not block showing local
messages). The initial OpenCode recovery fetch is bounded and diffed against
stored message/part hydration anchors; full-session refresh can run later in the
background when more history may exist.
Chat open also defers unrelated remote startup work until after local messages
and required active-session recovery are complete. MCP server refresh, managed
rules setup, and broad CodeAgents UI media prefetch should run from explicit
MCP/tool UI actions, just-in-time send/action paths, or the project-scoped
post-ready background queue; project switches cancel that deferred work before
it can update stale chat state.
Focused tests: ClaudeToOpenCodeMigrationTests, ChatDeferredStartupTests,
OpenCode hydration/session suites under MobileCodeTests/.
Timing metadata is limited to runtime names, project identifiers, operation
labels, elapsed milliseconds, statuses, booleans, and counts. Do not add prompts,
message text, raw payloads, credentials, URLs, project paths, attachment paths,
or file contents to these log fields.
Architecture
Built with SwiftUI and SwiftData following MVVM pattern.
Icon - https://tabler.io/icons/icon/brain, edited here https://icon.kitchen
License
This project is licensed under the Apache License, Version 2.0 - see the LICENSE file for details.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found