Engineering Issue Router

Find the right step first, then fix your Cloud Mac issue

From order provisioning and node connections to iOS builds, storage expansion, and billing checks, inspect each step where an issue may occur. Every section provides decision points, commands, and the information to retain for a support ticket.

01 / First Provisioning

Configure in the right order to minimize rework after delivery

When renting for the first time, start by assessing your memory and storage needs, then choose a node close to your code repository, team members, or target distribution market. Do not pay first and work backward; verify the model, node, term, and add-ons together before confirming the order.

  1. 01

    Choose a model from the three tiers

    ZoneMini M4 Core features M4, 16GB memory, and a 256GB SSD for lightweight iOS builds and single-project automation; ZoneMini M4 Plus features M4, 24GB memory, and a 512GB SSD for everyday development and multi-project pipelines; ZoneMini M4 Pro features M4 Pro, 64GB memory, and a 2TB SSD for high-memory inference and demanding parallel workloads. All three tiers are dedicated physical Cloud Mac Hosts, not virtual machines.

  2. 02

    Choose a location from five available nodes

    Available locations include Singapore, Japan (Tokyo), South Korea (Seoul), Hong Kong, and the US East Coast. Prioritize the location of your code repository and primary operators, then consider your distribution market and team time zones. All five nodes support all three models; live availability is shown in the console.

  3. 03

    Choose a daily, weekly, monthly, or quarterly term

    Schedule short compatibility tests by the day; compare weekly terms for a full iteration; and choose monthly or quarterly terms for fixed runners, long-term archiving, or ongoing inference. Prices are not converted or rounded; the order total is calculated directly from the selected model, add-ons, and term.

  4. 04

    Complete USD payment and verify the order

    We support only USDT-TRC20 and Visa / Mastercard / Amex (via Stripe). Before submitting, verify the model name, node, term, storage add-ons, number of Thunderbolt 5 links, and contact details. Available payment gateways are determined by the console.

  5. 05

    Retrieve connection details and complete the initial verification

    After delivery, verify the node address, username, temporary credentials, and connection instructions. After the first successful connection, update the temporary credentials, record the host fingerprint, and verify both the SSH command line and macOS screen sharing separately. Connection details are sensitive and should not be pasted into public repositories or ordinary chat messages.

Minimum information to prepare before provisioning

List the project type, number of concurrent tasks, Xcode version range, typical archive duration, dependency cache size, target node, and expected rental term. If you still cannot choose a model, review the three specifications and term prices first, then share your workload data with your team for confirmation.

02 / Connection Diagnostics

Troubleshoot layer by layer, from instance status to your local network

When a connection fails, do not change credentials, ports, and firewall rules at the same time. Check status, identity, network, port, and service settings in that order, retaining each result so you can locate the issue in your local environment, the network path, or the target node.

CONNECTION CHECK Six checks in order
  1. 01

    Confirm instance status

    Log in to the console and confirm that the instance associated with the order is connectable. Verify that you are viewing the correct node and model. After a recent delivery, rely on the console information rather than addresses in old emails or records.

  2. 02

    Verify access credentials

    Distinguish the purposes of the username, password, and SSH key. Check key-file permissions, input-method settings, and whether copied values contain spaces. After repeated authentication failures, stop retrying and verify the credential source.

  3. 03

    Rule out local network restrictions

    Switch to a trusted backup network for comparison, and confirm that corporate egress policies, proxies, or security software are not blocking the destination. Do not treat disabling all security protections as a long-term solution.

  4. 04

    Check the SSH port

    First test whether TCP port 22 is reachable, then run verbose SSH logging. A port timeout usually indicates a network path or rule issue; if the port is reachable but authentication fails, continue checking the username, key, and permissions.

  5. 05

    Verify screen-sharing settings

    Confirm that you are using the address and authorization details from the delivery information. If you see a black screen or abnormal resolution, disconnect the old session before reconnecting, and record the client OS, display count, and scaling settings.

  6. 06

    Check firewall rules

    Check the local firewall, team egress rules, and the node-side allowlist. Apply the principle of least privilege to rule changes, and retain records of the source, port, time, and person who made each change.

Network and port checks
nc -vz <NODE_ADDRESS> 22
ssh -vvv -o ConnectTimeout=10 USERNAME@NODE_ADDRESS
route -n get <NODE_ADDRESS>

Replace the placeholders with the node address and username from the delivery information.

How to interpret results

First distinguish timeouts from authentication failures

Connection timed out
First check local egress, proxies, firewalls, and reachability of the destination port.
Connection refused
Record the time, node, and complete error line, then confirm that the destination address and port are correct.
Authentication failed
Verify the username, key path, file permissions, and delivery credentials. Do not repeatedly guess the password.
Host fingerprint changed
Pause the connection and submit a support ticket for verification. Do not delete the recorded fingerprint and continue.
Read the complete connection steps
03 / Build Environment

Break build failures into toolchain, signing, dependencies, and artifacts

When the same pipeline succeeds in an interactive session but fails in a CI Runner, the cause is often different environment variables, keychain context, working directories, or cache permissions. Troubleshoot using the same user and execution entry point as the failed task.

A

Confirm Xcode and Command Line Tools

Record the system version, Xcode version, and current developer directory. If multiple Xcode versions are installed, confirm that the path invoked by the pipeline matches the project requirements; do not check only the version open in the graphical interface.

  • xcodebuild -version Get the actual build-tool version
  • xcode-select -p Get the current developer directory
  • swift --version Verify the Swift toolchain
B

Check certificates and provisioning profiles

Confirm that signing materials are accessible to the current execution user and that the target, configuration, and export method reference the correct entries. Record only certificate names, validity status, and match results; never upload certificate private keys or complete provisioning profiles to a ticket.

  • Verify the project Team, Bundle Identifier, and signing method
  • Check that the provisioning profile used by the build configuration matches the target
  • Compare the signing identities visible to the local and Runner sessions
C

Verify the keychain access context

When a CI task must access signing materials in a non-interactive environment, confirm that the keychain is unlocked as designed for the pipeline and limit the automated account’s access. Never write the unlock password directly into repository scripts or ordinary logs.

  • Confirm that the execution user matches the user who imported the signing materials
  • Check whether the Runner launch method changes the session context
  • Remove passwords, tokens, and private-key paths from logs
D

Isolate dependency-cache issues

First confirm that lock files have not changed, then check CocoaPods, Swift Package Manager, Node.js, or Flutter dependencies separately. When a cache is abnormal, clear only directories related to the current project instead of deleting shared team caches across the host.

  • Save lock-file hashes and dependency-resolution output
  • Compare dependency versions between failed and successful branches
  • Record cache-directory ownership, permissions, and current size
E

Collect reproducible archive logs

Retain the complete command, working directory, Scheme, Configuration, SDK, Destination, and exit code. Logs should include context before and after the first error, not just the final line.

  • Save the current build output in a dedicated result directory
  • Record the trigger method, commit identifier, and Runner label
  • Redact sensitive data before attaching key excerpts to the console ticket
F

Start with a minimal command check

Before running a full archive, verify the version, project structure, and Scheme visibility. If the minimal command fails, continue fixing the toolchain; if it succeeds but archiving fails, investigate signing, dependencies, and export configuration.

Get help with build configuration
Collect build-environment information
sw_vers
xcodebuild -version
xcode-select -p
swift --version
xcodebuild -list -workspace <PROJECT_WORKSPACE>

The commands do not read project secrets, but check the output for internal paths or repository names before submitting it.

04 / Storage & Linking

Confirm the capacity’s purpose before checking mounts and task boundaries

Additional storage is suitable for dependency caches, build intermediates, model files, and short-term asset processing. It should not replace the project’s version-control or long-term archiving strategy. Thunderbolt 5 linking is billed per host and is intended for tasks explicitly designed for multi-host collaboration; it does not automatically turn two independent tasks into one parallel job.

Published prices for storage and linking add-ons
Add-on Daily Weekly Monthly Quarterly Best for
+1TB SSD $2 $5.5 $10.1 $27.5 Dependency caches, build artifacts, and medium-sized assets
+2TB SSD $4 $11 $20.2 $55 Model files, batch assets, and larger archive worksets
Thunderbolt 5 linking (per host) $1.7 $4.6 $8.6 $23.4 Splitting multi-host tasks and high-speed data collaboration between nodes
Mount Check

Confirm that the system recognizes the target disk

Use diskutil list to view disks and partitions, then use df -h to verify the actual mount point and available space. If you see the device but no correct mount point, record the command output and submit a support ticket. Do not format an unknown disk directly.

Space Monitoring

Watch total capacity and growing directories together

Before an archive fails, check the workspace, DerivedData, dependency caches, and temporary directories. “No space left” in build logs may refer to the system volume or a temporary directory, not necessarily the volume containing the project directory.

Task Splitting

Define host responsibilities by inputs, execution, and artifacts

A multi-host workflow should specify which host pulls code, which runs builds or inference, where artifacts are written, and how failures are retried. Avoid having multiple hosts modify the same working directory or shared mutable cache simultaneously.

Disk and cache checks
diskutil list
df -h
du -sh ~/Library/Developer/Xcode/DerivedData
du -sh ~/Library/Caches

Large-directory scans may take time. Review the output first; do not delete a directory before confirming its purpose.

05 / Billing & Payments

Verify the model, term, and add-ons by order number

All ZoneMini orders are settled in USD. We support only USDT-TRC20 and Visa / Mastercard / Amex (via Stripe). Available payment gateways are determined by the console. Billing questions should reference a specific order; do not provide only a payment screenshot or an approximate transaction time.

Settlement currency USD

Models, terms, and add-ons are calculated using the published USD prices, with no currency conversion on the page.

Digital-asset payment USDT-TRC20

Before paying, verify the network, amount, and order details returned by the console. When reporting an issue, provide the order number and a redacted transaction ID.

Card payment Visa / Mastercard / Amex

Card transactions are processed by Stripe. If a payment fails, record the console error, time of occurrence, and order number; do not submit complete card details.

Why must the final amount be checked against the model, term, and add-ons?

The order total combines the selected model’s price for the chosen term with storage or Thunderbolt 5 linking add-ons for that same term. Compare the model name, node, daily, weekly, monthly, or quarterly term, added capacity, and number of linked hosts item by item.

What information should I retain when payment is incomplete?

Retain the order number, payment method, time of occurrence, complete error text shown in the console, and a redacted transaction ID. Do not send full card numbers, verification codes, wallet private keys, recovery phrases, or complete account passwords.

Where should I check an existing order?

Log in to the console to view the order, instance, and billing status. If the display does not match the payment record, submit a ticket from that order’s context and include the order number. Avoid creating multiple requests for the same issue without linked information.

06 / Support Tickets

A support ticket that can be handled needs six types of context

A ticket is not meant to prove that “something is wrong”; it should help support determine the impact, reproduction path, and expected result. Consolidating key information in one request reduces back-and-forth questions.

01

Node

Name Singapore, Japan (Tokyo), South Korea (Seoul), Hong Kong, or the US East Coast, and include the instance ID shown in the console.

02

Model

Specify ZoneMini M4 Core, ZoneMini M4 Plus, or ZoneMini M4 Pro; do not write only “M4 host.”

03

Time of occurrence

Provide a time range with its time zone and state whether the issue is new, consistently reproducible, or intermittent.

04

Reproduction steps

Starting from entering the working directory or initiating the connection, list the commands, input conditions, actual results, and exit codes step by step.

05

Redacted logs

Retain context around the error and remove repository tokens, signing materials, internal addresses, and personally identifying information.

06

Expected result

Describe the correct behavior and whether the issue blocks connection, testing, archiving, payment, or artifact delivery.

Remove sensitive data before submitting

Do not upload certificate private keys, repository tokens, or complete passwords

Provide only the certificate name and validity status for signing certificates; describe only the token type and permission scope; for credential issues, provide the error and a redacted identifier. Redact email addresses, repository URLs, internal hostnames, and file paths from logs as needed.

  • Include the order number for billing issues
  • Include command output and client environment for connection issues
  • Include the Xcode version, Scheme, exit code, and key logs for build issues
  • Include the mount point, capacity, and relevant directory growth for storage issues
Once your diagnostic information is ready

Submit a ticket from the order context

For an existing order, log in to the console first and submit a ticket with the order number, node, model, time of occurrence, reproduction steps, redacted logs, and expected result. For pre-purchase selection advice, contact the team by support email.