CodeAgentsMobile

agent
Security Audit
Pass
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.

SUMMARY

Mobile client for Claude Code.

README.md

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

Screenshot 1 Screenshot 2 Screenshot 3 Screenshot 4
Screenshot 5
Screenshot 6
Screenshot 7
Screenshot 8

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.sh validates the app with XcodeBuildMCP 2.5.0+ structured JSON
    diagnostics by running deterministic CodeAgentsMobileTests simulator unit
    tests; live SSH integration suites are skipped unless run explicitly.
  • scripts/ios-simulator-evidence.sh captures simulator screenshots and demo
    video for native visual validation and demo evidence.
  • scripts/artifact.sh builds a review simulator .app.zip by default and
    emits the controller published_artifacts JSON contract; set
    OPENCODE_ARTIFACT_MODE=testflight to publish a production build through
    asc publish testflight. Production artifact automation runs this mode with
    Phase app 6abec477-1930-4e2e-bd18-554059958ccd and emits release metadata
    so the controller can attach the IPA and checksum to the matching Gitea
    Release.
  • VERSIONS.TXT stores 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 or
ASC_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 by
ClaudeToOpenCodeMigrationService (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)

No results found