Skip to content

Implement v1 read-only Crabbox iOS coordinator companion #778

Description

@zozo123

Summary

PR #379 proved there is plausible implementation energy for a native mobile client, but it was closed unmerged on 2026-07-01 because the branch combined too many ownership decisions for one merge contract: product direction, mobile credentials, persistent web session/security, direct-provider behavior, marketplace/payment direction, and permanent Swift/Xcode/mobile CI.

This issue is the requested focused design/roadmap decision. It should decide whether Crabbox wants a first-party mobile client at all, and if yes, what the first shippable slice is.

Recommendation

Start with the narrowest useful mobile companion:

  • SwiftUI shell plus a testable shared core only for URL/policy/state logic.
  • Portal/coordinator-oriented workflows first.
  • No direct provider API keys in the app for v1.
  • No direct islo/OpenComputer/OpenSandbox/etc. lifecycle from the device for v1.
  • No marketplace/payment, on-device LLM, sandbox LLM, map-reduce demo, Android assets, or broad CI ownership in the first PR.
  • CI only proves the accepted slice: Swift package tests plus unsigned iOS build. Device/simulator proof is required only for the UX flows that ship.

This keeps the branch in the mobile product decision lane instead of creating a new provider/security boundary immediately.

Decisions to make

  • Is a first-party mobile client in scope for Crabbox?
  • Which v1 slice do maintainers want?
    • Portal companion: authenticated portal/workspace access, status/read-only views, minimal native shell.
    • Coordinator run companion: launch/list/status/stop through the existing coordinator only.
    • Direct provider client: iOS stores provider credentials and calls provider APIs directly.
    • Portable core only: merge reusable CrabboxKit pieces without an app target yet.
  • Who owns mobile product UX?
  • Who owns mobile credential/session security review?
  • Who owns Swift/Xcode/mobile CI and release maintenance?
  • What visual proof is required for the accepted v1 slice?

Suggested acceptance criteria

  • A maintainer chooses one v1 scope and explicit non-goals.
  • Security model is written down before implementation, including where tokens/session state live and which URLs are trusted.
  • CI contract is written down before implementation, including whether macOS/iOS jobs are required on every PR.
  • A fresh PR is cut from current main after this issue is accepted.
  • The fresh PR does not inherit unrelated surfaces from PR feat: native SwiftUI Crabbox iOS app (crabbox.sh client + on-device/sandbox LLM + islo) #379 unless this issue explicitly includes them.

Non-goals until explicitly accepted

  • Direct provider API-key storage in iOS Keychain.
  • Persistent WebView session ownership beyond the accepted portal/auth design.
  • Direct islo/OpenComputer/OpenSandbox sandbox lifecycle calls from the app.
  • Marketplace/payment direction.
  • On-device MLX/Foundation Models or sandbox LLM chat.
  • Map-reduce demo flows.
  • Android/app-store distribution.
  • Keeping the closed 8k-line branch rebasing indefinitely.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Low-risk cleanup, docs, polish, ergonomics, or speculative feature.clawsweeper:needs-security-reviewClawSweeper marked this issue as needing security-sensitive review.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:auth-providerThis issue is about auth, provider routing, model choice, or SecretRef resolution.impact:securityThis issue is about security boundaries, credentials, authz, sandboxing, or sensitive data.issue-rating: 🌊 off-meta tidepoolIssue quality rating does not apply to this item.

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions