Oakmini Cloud Mac · Quickstart

From purchase to first build: run your Cloud Mac workflow

This quickstart is for developers and CI/CD engineers using Oakmini for the first time. Choose a dedicated Mac mini physical node, connect over SSH or VNC, restore the Apple Silicon toolchain, complete a reproducible build, and connect a self-hosted runner to your existing pipeline.

01 Choose a configuration Model, term, node, storage
02 Connect to the node SSH or VNC
03 Validate the workflow Build, artifacts, runner
Cloud Mac development workstation use cases
oakmini-bootstrap connected
$ uname -m
arm64
$ sw_vers -productVersion
macOS ready
$ system_profiler SPHardwareDataType
Chip: Apple M4
$ xcodebuild -version
Xcode toolchain detected
$ git --version
git ready
✓ environment baseline recorded
Preparation

Define six inputs before you begin

Clarify compatibility, region, term, and permissions first. This prevents discovering after connection that dependencies use the wrong architecture, storage is insufficient, or the pipeline lacks repository access. Save the results in the project's migration record.

Estimated time: 10–20 minutes

Apple Silicon compatibility

Check whether dependencies provide arm64 versions, focusing on binary tools, container images, native extensions, and legacy scripts. If the project comes from an Intel environment, list components that must be replaced or rebuilt first.

file ./your-binaryConfirm the target architecture

Target node region

Choose from Singapore, Japan (Tokyo), South Korea (Seoul), Hong Kong, or the US West. For interactive VNC use, prefer a location near primary operators; for unattended builds, consider the locations of the code source, artifact storage, and collaboration team.

ping / tracerouteMeasure from the actual office network

Term and task window

Daily terms suit short validation, weekly terms suit migration sprints, and monthly or quarterly terms suit ongoing development and always-on runners. Estimate the full time for setup, builds, acceptance, and artifact export—not just one task run.

day / week / month / quarterDo not mix order terms

Storage capacity

Estimate repositories, dependency caches, simulator data, archives, and exported artifacts separately. Leave headroom in build directories to prevent dependency resolution or archiving from failing when storage runs out. Define a cache cleanup policy for long-running tasks.

df -hVerify again after connecting

Remote access tools

For command-line work, prepare an SSH client and key. When you need the macOS graphical interface, prepare a VNC client. Confirm that your local network permits the connection and record how corporate firewalls, proxies, or VPNs affect the route.

ssh -VVerify the local client first

Account and project permissions

Confirm the permissions required to read repositories, access dependency sources, register a CI runner, use build-signing materials, and upload artifacts. Prefer task-specific credentials and grant automation the minimum required scope.

read / build / uploadMark each permission scope
Before starting, create a baseline record covering project architecture requirements, target node, expected term, storage budget, access method, required permissions, and acceptance owner. Use this record as the reference for every subsequent step.
Step 1 · Purchase

Choose the model for the workload, then set the term and region

Oak Core and Oak Forge are dedicated Mac mini physical nodes, not virtual machines. Choose based on peak memory, concurrent build count, working-set size, and artifact volume—not vague performance multipliers.

Choose a configuration
Oak Core
m4-16-256
Personal development and light builds
ChipM4
Memory16GB
Storage256GB SSD

Suitable for single-project debugging, dependency validation, low-concurrency automation, and short migration checks. Add storage at checkout if repositories, simulators, and archives are large.

$19.5/day$52.5/week$97.3/month$264.7/quarter
Order field Available options Selection basis Confirmation
Billing term Day, week, month, quarter Covers environment setup, task execution, acceptance, and artifact export The start and end dates shown on the order match the plan
Node Singapore, Japan (Tokyo), South Korea (Seoul), Hong Kong, US West Actual network path between users, code sources, and artifact targets Region name matches the baseline record
Storage expansion +1TB SSD or +2TB SSD Total repositories, dependency caches, working directories, archives, and exported artifacts Reserve space for cleanup and temporary files
Parallel option Thunderbolt 5 parallel connection (per machine) Choose only for a planned multi-node workflow Verify quantity and topology for each machine
Checkout:Only USDT-TRC20 and Visa / Mastercard / Amex (via Stripe) are supported. All orders are settled in USD. The payment gateway available to you is determined by the portal.
Step 2 · Connect

Check host status first, then establish an SSH or VNC session

Read the current host status, address, port, and credential instructions from the portal. Do not guess parameters from an old order or local history. Use SSH for command-line work and VNC when you need a graphical interface.

SSH baseline first-session.sh
ssh -p <PORT> <USER>@<HOST>

hostname
sw_vers
uname -m
system_profiler SPHardwareDataType
df -h
systemsetup -gettimezone
date

Save the output in the migration record. At minimum, confirm the hostname, macOS version,arm64 architecture, chip model, storage capacity, time zone, and current time.

  1. 01

    Check the portal status

    The host should be ready for connection. If its status is still changing, wait for the portal to update instead of repeatedly retrying credentials.

  2. 02

    Copy the connection parameters

    Verify the host address, port, username, and access method individually. Store key files only on controlled devices.

  3. 03

    Verify the host fingerprint

    Record the fingerprint on the first SSH connection. If it changes unexpectedly later, stop connecting and verify it through a console ticket.

  4. 04

    Establish a graphical session

    When using VNC, start with a resolution and image quality suited to the current network, then check the keyboard layout, clipboard policy, and sleep settings.

IdentityhostnameMatches the order
Systemsw_versRecord the full version
Hardwarearm64 / M4Verify the selected configuration
Resourcesdf -hConfirm available space
Step 3 · Environment

Restore the toolchain in a fixed order and create a version inventory

Establish a reviewable base environment before installing project dependencies. Do not copy the entire old user directory; migrate inventories, configuration, and lock files first to reduce architecture differences and stale caches.

L1

Homebrew and command-line essentials

Restore the software inventory and run diagnostics, checking the installation prefix and shell environment. Common Apple Silicon paths must match hard-coded script paths or be updated.

brew bundle check && brew doctor
L2

Git and repository configuration

Set the commit identity, line-ending policy, and credential access method. Pull a read-only test repository first to confirm network access and permissions before handling the production project.

git config --list --show-origin
L3

Language runtimes

Restore Ruby, Node.js, Python, or other runtime versions from the lock files. Record the version manager, global tools, and project-level versions; do not rely on “latest version” descriptions.

ruby -v; node -v; python3 --version
L4

Xcode toolchain

Confirm the selected developer directory, Xcode version, SDK, and command-line tools. When projects require different versions, document the switching steps explicitly in the pipeline.

xcode-select -p; xcodebuild -version
L5

Project dependencies

Restore dependencies from the repository's lock files and retain the complete resolution log. If dependencies require native extensions, confirm that the output architecture is arm64.

file ./path/to/native-extension
Environment inventory environment-baseline.txt
date
hostname
sw_vers
uname -m
xcode-select -p
xcodebuild -version
git --version
brew --version
brew list --versions
ruby -v
node -v
python3 --version
df -h

Maintain the inventory with the project

  • Record command output, not just “installation complete.”
  • Keep dependency lock files and package-manager inventories.
  • Document paths and permissions that require manual configuration.
  • Write explicit commands for switching Xcode versions.
  • Never put keys, tokens, or signing materials in the inventory.
First build

Run a minimal test project before the real pipeline

The goal of the first build is not the shortest run time, but proving that dependency resolution, signing permissions, output directories, and logs are reproducible. Test a fixed commit first, then expand to the full project after it succeeds.

01

Pin the inputs

Check out the specified commit or tag and confirm that submodules, private dependencies, and large-file objects are complete. Record the repository commit hash so inputs cannot change during testing.

git rev-parse HEAD
02

Resolve dependencies

Restore dependencies from the lock files and write stdout and stderr to the log. When an architecture issue occurs, identify the specific binary instead of repeatedly clearing the entire environment.

command 2>&1 | tee dependency.log
03

Verify signing permissions

Confirm that the build process can read the signing materials and configuration files it needs. Grant automation accounts only the permissions required by the relevant project and build steps.

security find-identity -v -p codesigning
04

Set the output directories

Place DerivedData, archives, test results, and exported artifacts in clearly defined directories. Avoid uncontrolled temporary paths shared with other tasks.

mkdir -p build logs artifacts
05

Keep complete logs

Logs should include the commit version, Xcode version, SDK, command, start time, end time, and exit code. Redact sensitive fields before uploading.

echo "$?" > logs/exit-code.txt
06

Run it again

Run again with the same commit and configuration to confirm that dependencies, paths, and permissions do not depend on temporary actions from the first session. Both results should be explainable and comparable.

./scripts/verify-build.sh
xcodebuild \
  -project Example.xcodeproj \
  -scheme Example \
  -configuration Release \
  -derivedDataPath ./build/DerivedData \
  build 2>&1 | tee ./logs/first-build.log
Success criteria

The command exits with code 0; logs identify the fixed commit and toolchain versions; expected artifacts exist in the output directory; and a second run requires no undocumented manual actions.

Your migration roadmap

Split migration into data, toolchain, and CI paths

Prepare the three paths in parallel if needed, but bring them together against a shared baseline: pin the repository version, record toolchain versions, define runner labels, then trigger a reproducible validation task.

DATA

Data track

Migrate only data you can explain; do not carry over historical state that cannot be traced.

  1. RepositoryClone the pinned commit and verify submodules and large-file objects.
  2. CacheSeparate caches by package manager and project version; do not migrate expired caches.
  3. Working directoryKeep source, temporary files, logs, and final artifacts separate.
  4. Validation pointgit status / checksum / df -h
TOOL

Toolchain track

Restore tools from the inventory and confirm the result with version output.

  1. HomebrewRestore the software inventory and run diagnostics.
  2. RuntimesInstall Ruby, Node.js, Python, and other versions from the project files.
  3. XcodeVerify the selected path, version, SDK, and build scheme.
  4. Validation pointbrew doctor / xcodebuild -version
CI

CI integration track

Make the scheduling rules target this dedicated physical machine explicitly.

  1. Register runnerUse task-specific registration credentials and record the service account.
  2. Set labelsUse labels for region, architecture, toolchain, and workload type.
  3. Trigger validationRun a minimal build and upload redacted logs and test artifacts.
  4. Validation pointonline / matched / exit 0
MERGE GATE Conditions for merging the three paths
  • The repository commit is pinned
  • The environment inventory is saved
  • Runner labels match the task
  • The validation task exits with code 0
  • Logs and artifacts can be exported from the specified directories
Security wrap-up

Tighten credentials and permissions before connecting production repositories

A working environment is not necessarily ready for long-term use. After the first build, immediately address initial credentials, key storage, repository scope, and sensitive information in scripts.

Least-privilege baseline

  • Replace initial credentials and confirm that old credentials are no longer used for access.
  • Use separate credentials for personal administration, automated builds, and artifact uploads.
  • Store private keys only on controlled devices or in controlled key storage, with strict file permissions.
  • Limit repository access to the actual project; do not grant access to unrelated organizations or repositories.
  • Expose signing materials only to the processes and accounts that need to sign.
  • Never put passwords, private keys, or payment credentials in scripts, environment inventories, logs, or build artifacts.
Script review

Search for common sensitive fields before committing, and inspect shell history, environment files, CI configuration, and logs. If plaintext credentials are found, revoke and replace them first, then clean the file history.

SSH permissions

Restrict private-key file permissions, remove unused public keys, and configure identifiable key names and purpose records for automated connections.

chmod 600 ~/.ssh/private_key
Log redaction

Keep timestamps, commands, versions, exit codes, and error stacks; remove access tokens, private-key contents, signing material, and other information that could directly authorize access.

Acceptance checklist

Use seven results to decide whether the node is ready for daily workloads

Acceptance should be based on reproducible results, not on whether it “works in the current session.” Disconnect and reconnect, then run the key commands again from a clean shell.

All 7 passed
  1. 01

    Remote reconnection

    Disconnect SSH and VNC intentionally, then reconnect using the saved, correct parameters. The host fingerprint, username, port, and graphical session all match the record.

    Repeatable
  2. 02

    Dependency installation

    Restore dependencies from the lock files; the command exits with code 0; native components use the correct architecture; and the installation log is saved without sensitive information.

    Traceable
  3. 03

    Project build

    Build with the pinned commit and toolchain versions, use a clearly defined output directory, and ensure the second run requires no undocumented manual actions.

    Exit code 0
  4. 04

    Artifact export

    Archives, test results, and other target artifacts can be exported from the specified directory, with filenames, versions, and verification methods meeting team conventions.

    Deliverable
  5. 05

    Runner online

    The self-hosted runner is online, its labels match the target task, and it does not accept jobs from unauthorized projects.

    Labels match
  6. 06

    Log retention

    The environment baseline, dependency logs, build logs, exit codes, and artifact paths are archived, with sensitive fields redacted.

    Locatable
  7. 07

    Portal management

    Verify the host status, order information, and management entry point in the portal. All nodes run normally 365 days a year with continuous availability.

    Manageable
Start with a reproducible baseline

Choose a dedicated Mac mini and start your first build

Open the portal to view currently available nodes, then choose Oak Core or Oak Forge, a billing term, and storage options. After ordering, follow this page to complete connection, toolchain restoration, and acceptance.