1. Cloud Hosting
  2. Support
04 Support

SSH Access, Xcode Builds & Runner Setup: Self-Serve Support Docs

Check the docs before opening a ticket. Connection, signing, and VNC — the three most common issues — can usually be resolved yourself in under 10 minutes with this page. If you're still stuck, the bottom of the page shows you how to file a ticket our engineers can act on right away.

Quick Start

Get Started in Three Steps

Your credentials email arrives about 5 minutes after checkout. Follow these three steps and your first connection will take under 3 minutes.

01

Get your credentials email

The email includes your node address (e.g. hk1.oncemini.com), SSH port 22, your initial username dev, an initial password, and a VNC password. If it hasn't arrived, check your spam folder, then look under your instance details in the portal.

02

SSH in and change your password

Run ssh -p 22 dev@your-node-address, then run passwd right away to change the initial password. We recommend uploading your public key with ssh-copy-id afterward and disabling password login.

03

Connect over VNC for the GUI

Use macOS Screen Sharing or any VNC client to connect to your-node-address:5900 and enter your VNC password to reach the full macOS desktop. This is where you handle first-time Xcode pairing and approve any system dialogs.

Every instance ships with root access — sudo works everywhere, and you're free to reconfigure the system as needed. If something breaks, you can reinstall macOS yourself from the portal — see the guide below.
Terminal

From Login to Upload: The Full Workflow

Below is a real output excerpt from a Hong Kong Mini M (M4 / 24GB) node: SSH login, an Xcode build, and a fastlane upload to App Store Connect. Copy any command from the panel on the right.

dev@mini-hk1 — zsh — 96×28
ssh -p 22 dev@hk1.oncemini.com
Last login: Mon Jul 27 09:12:33 2026 from 203.0.113.24
sw_vers
ProductName:    macOS
ProductVersion: 15.5
BuildVersion:   24F74
xcodebuild -scheme App -configuration Release -destination 'generic/platform=iOS' build
▸ Compiling AppDelegate.swift
▸ Linking App
▸ Signing App.app
** BUILD SUCCEEDED ** [128.4s]
bundle exec fastlane release
[10:24:08] Login to App Store Connect (API key)
[10:26:41] Upload progress: 100%
Successfully uploaded package to App Store Connect
dev@mini-hk1 ~ % 

Common Commands · Click to Copy

ssh -p 22 dev@hk1.oncemini.com
passwd
ssh-copy-id -i ~/.ssh/id_ed25519.pub dev@hk1.oncemini.com
sudo xcode-select -s /Applications/Xcode_16.4.app
xcodebuild -scheme App -configuration Release build
security unlock-keychain login.keychain-db

Just swap hk1 for your node's prefix — see all node domains on the Regions page. Any CI script that runs locally will run here without changes.

Guides

Common Task Guides

The four tasks we're asked about most, laid out step by step. Every guide below has been verified on real hardware.

Multiple Xcode Versions & Switching

  1. Every image ships with two stable Xcode versions pre-installed, named by version at /Applications/Xcode_16.4.app and /Applications/Xcode_15.4.app.
  2. Check the active version with: xcodebuild -version.
  3. Switch globally with: sudo xcode-select -s /Applications/Xcode_15.4.app.
  4. Don't change the global setting in CI — set it per-run with an environment variable instead: DEVELOPER_DIR=/Applications/Xcode_16.4.app xcodebuild ….
  5. Need a different version (including betas)? Open a ticket with the version number. Our library covers every stable release from 15.0 onward, and it's typically pushed to your machine within 2 hours during support hours.

Configure a GitHub Actions Self-Hosted Runner

  1. In your repo, go to Settings → Actions → Runners → New self-hosted runner, and select macOS with ARM64 as the architecture.
  2. Download and unpack the runner package using the commands shown on that page, then run ./config.sh --url … --token … to register it.
  3. Register it as a persistent service with ./svc.sh install && ./svc.sh start — launchd will bring it back up automatically after a reboot.
  4. In your workflow, add runs-on: [self-hosted, macOS, ARM64]. If you run multiple machines, custom labels help you target the right one.
  5. For reference: a Mini M (24GB) handles 2 concurrent jobs comfortably. For higher concurrency, look at the Mini Pro (64GB) — see Plans & Pricing.

Attach a Physical Device for Remote Debugging

  1. If your test iPhone isn't on the same network as the cloud Mac, use a tool like WireGuard to put both devices on the same subnet first.
  2. First-time pairing happens in Xcode's Devices and Simulators window — do this once over VNC.
  3. Enable network debugging during pairing, and from then on you can target the physical device directly with xcodebuild -destination 'platform=iOS,name=your-device-name'.
  4. If you're only running unit tests or simulator UI tests, you don't need a physical device at all — it works out of the box, no networking setup required.

Reinstall macOS

  1. In the portal, go to Instance Details → Reinstall OS and choose either macOS 14 or 15.
  2. Reinstalling wipes the entire disk and can't be undone — download a snapshot from the portal first.
  3. The whole process is self-serve and takes about 10 minutes to get you back to a login prompt, with new credentials generated and emailed automatically.
  4. There's no limit and no extra charge. Use this whenever a config gets broken, you want to switch macOS versions, or you want to wipe the disk yourself before canceling.
Glossary

Quick Glossary

Eight terms that come up constantly in our docs and support threads — here's exactly what we mean by each one.

Dedicated hardware
You get an entire physical Mac mini, running its OS directly on real hardware with no virtualization layer — and no performance overhead.
Dedicated
Each machine belongs to exactly one tenant at a time. CPU, memory, SSD, and 1Gbps bandwidth are never shared with anyone else.
VNC
A remote graphical desktop protocol. Once connected, you see the full macOS desktop — used for device pairing and clicking through system dialogs.
Self-hosted runner
A CI executor registered on your own machine. macOS jobs from GitHub Actions or GitLab CI run directly on this Mac instead of waiting in the official hosted queue.
Unified memory
On Apple Silicon, the CPU and GPU share a single memory pool. A 64GB machine can load large quantized models directly, without a separate VRAM ceiling.
Apple Silicon
Apple's own ARM-based chips (M4 / M4 Pro on this platform). It's the native target for real-device iOS builds and MLX/CoreML experiments.
Snapshot
A full disk image you can create and download from the portal at any time — your safety net before a reinstall, cancellation, or region migration.
SLA
Our uptime commitment, set at 99.9%. If we fall short, you're credited according to our published terms — see Trust & Security for details.
Troubleshoot

Troubleshooting Checklists

These three issue types account for roughly 70% of all support tickets. Work through them in order — most are resolved by step 2 or 3.

Can't Connect via SSH

  1. Check the portal to confirm your instance status is "running" and the power indicator is normal.
  2. Run ping or mtr against your node's domain locally. High packet loss usually means a network issue on your end — try switching networks, or use the test IP on the Regions page to double-check the route.
  3. Double-check port 22 and the username dev. Run ssh -v to see exactly where the handshake stalls.
  4. If you edited sshd_config yourself and locked yourself out, force a restart from the portal, then go in over VNC to fix the config.
  5. Still stuck? Paste the full output of ssh -vvv into your ticket.

Code Signing Errors During Build

  1. Getting errSecInternalComponent or a keychain access failure? Run security unlock-keychain login.keychain-db first.
  2. CI sessions don't unlock the keychain by default — add the unlock command at the start of your script, or manage certificates with fastlane match instead.
  3. Confirm your certificate is actually imported: security find-identity -v -p codesigning should list your signing identity.
  4. An "unsupported SDK" error usually means an Xcode version mismatch — switch versions using the guide above and try again.

Black Screen Over VNC

  1. Try SSH first — if you can log in, the system is fine and it's just a display issue. Don't jump straight to a reinstall.
  2. Over SSH, restart the screen sharing service: sudo launchctl kickstart -k system/com.apple.screensharing.
  3. A resolution that's too high can cause a black screen or garbled display — drop your client down to 1920×1080 and reconnect.
  4. If that doesn't help, restart the instance from the portal. The host has a built-in virtual display, so the screen comes back automatically after restart.
Tickets

Support Tickets & Response Times

Our support team rotates across UTC+8 and UTC-8 time zones. There are only two channels — portal tickets and email support. We don't offer phone or live chat.

Portal Ticket (Preferred)

Go to the portal → Tickets → New, and select the relevant instance. Tickets are automatically tagged with instance context, so they're handled fastest. Use this for: instance issues, Xcode version requests, upgrades/downgrades, and reinstall help.

  • Include the instance ID, node, and when the issue started
  • Paste full commands and error output as text, not screenshots
  • List which steps from this page you've already tried, to avoid back-and-forth

Email Support

If you can't log into the portal, have a billing or invoice question, or need pre-sale technical advice, email support@oncemini.com. Use a clear subject line and include your registered email in the message so we can find your account.

  • Send from your registered email address to skip identity verification
  • More contact scenarios and message templates on our Contact Us page
Issue Type First Response Coverage Recommended Channel
Critical outage (instance down, totally unreachable) 30 minutes 24/7 Portal ticket, marked urgent
General technical issues (builds, config, performance) 2 hours Support hours (UTC+8 / UTC-8 rotation) Portal ticket
Billing, invoices, and pre-sale questions 1 business day Support hours support@oncemini.com
Uptime

Uptime & Notification Policy

FAQ

Billing & Account FAQ

For connection and build issues, see the sections above. This is for questions about money and data. Full pricing details are on the Plans & Pricing page.

When does billing actually start?

Billing starts the moment your credentials email arrives, not at checkout. Daily plans count in 24-hour blocks, and the ~5-minute average delivery window isn't billed.

How do renewals work? Is there auto-billing?

You can renew manually anytime from the instance details page in the portal, or turn on auto-renewal. We send reminder emails 72 hours and 24 hours before expiry. If auto-renewal fails (e.g. an expired card), you'll get an email immediately and have a 72-hour grace period.

If I don't renew in time, is my data deleted right away?

No. Your instance is stopped first, and your data is kept for 72 hours — renew during that window and everything comes back exactly as it was. After 72 hours, the APFS encryption keys are destroyed and the disk is fully overwritten, which is unrecoverable. See Trust & Security for the full process.

How do I migrate data from an old machine to a new one?

If both machines are still active, a direct machine-to-machine sync is fastest: rsync -avz -e "ssh -p 22" ~/work/ dev@new-node:~/work/ — internal transfers within the same region can run at full gigabit speed. Alternatively, download a snapshot from the portal and restore it onto the new machine.

What payment methods do you support?

All pricing and billing is in USD. USDT-TRC20 and Visa / Mastercard / Amex (Stripe) are supported — the checkout page in the portal shows exactly what's available. There are no hidden bandwidth fees; your invoice matches the listed plan price exactly.

Can I get an invoice?

Every payment automatically generates a PDF receipt, downloadable anytime from the billing page in the portal. If you need a specific company name or tax ID added, email support@oncemini.com and we'll handle it within 1 business day.

If I upgrade mid-rental, how is it billed?

Upgrades are prorated against the remainder of your current billing period — you only pay the difference, never double. Submit the upgrade request from the portal and your data is migrated to the new machine via snapshot, with your old instance staying available in the meantime. Downgrades take effect at the start of your next billing cycle.

Can I get a refund if I'm not happy with my first order?

You can request a full refund within 24 hours of your first delivery; renewal periods aren't refundable. We recommend starting with a $19.9 one-day rental to run your own build scripts before committing to a monthly plan.

Is reinstalling macOS free? Is there a limit on how often?

It's free, unlimited, fully self-serve from the portal, and takes about 10 minutes on average. The one thing to remember: reinstalling wipes the entire disk, so download a snapshot first.

Can I rent multiple machines on one account? Can I resell access?

Yes, one account can rent multiple machines at once — a common setup is one machine per project, distinguished with runner labels. Reselling or transferring access to a third party violates our Terms of Service and will result in termination if discovered; sharing one machine among your own team members is fine.

$ oncemini ticket new --priority normal

Didn't find what you needed?

Log into the portal and open a ticket — you'll hear back within 2 hours during support hours. Don't have a machine yet? Start with a day rental first.