harborDocumentation

Start here

Overview

Harbor brings Slipway and Porthole into one workspace for Mac app testing. Slipway gives agents their own desktop; Porthole lets you watch the work.

Clone Harbor and set up the pair. Each tool keeps its own source, history and releases.

Open documentation →
↑ ↓ navigate↵ open
On this page

Porthole

Configuration

Slipway and Porthole share ~/.config/slipway/config. For settings both tools read, use literal KEY=value lines, optionally single- or double-quoted, with comments on separate lines. Do not use variable interpolation, export, shell commands or inline comments in shared settings. Slipway sources this trusted local file as shell; Porthole parses literal values only.

Terminal
VM=slipway
VM_IMAGE=ghcr.io/cirruslabs/macos-sequoia-base:latest
VM_CPUS=4
VM_MEMORY=8192
VM_DISPLAY=1512x982
TEST_HOST=
TEST_USER=admin

VM, TART, TEST_HOST, TEST_USER and KEY affect both tools. KEY must be an absolute path; its default is ~/.ssh/slipway_ed25519 under your home directory. Image, CPU, memory and display settings configure new VMs during slipway setup. To resize an existing VM, stop it first and use tart set.

For a real remote Mac, set TEST_HOST=mini.local and TEST_USER=your-user. Enable Remote Login on that Mac, authorize Slipway's public key and install cliclick there. Grant SSH the Screen Recording and Accessibility permissions needed by your workflow. An interactive desktop session must be logged in. Remote mode does not create, start or stop a Tart VM.

PurposePath
Configuration~/.config/slipway/config
SSH private key~/.ssh/slipway_ed25519
Activity events~/Library/Logs/slipway/activity.jsonl
Captured command output~/Library/Logs/slipway/runs/<id>.txt
Screenshots/tmp/slipway
Shared SSH socket/tmp/slipway-ssh-%C
VM launch agent~/Library/LaunchAgents/io.smeltery.slipway.plist

Tart through Flox

The pinned Flox environment includes Tart on Apple silicon Macs. Use flox activate -- slipway status (or ./slipway from its checkout). Porthole launched from Finder does not inherit a terminal's PATH. To use the same Flox-provided Tart, add its absolute path as a literal TART setting:

Terminal
flox activate -- which tart

Copy the printed path into TART=/absolute/path/to/tart in the shared config. Update that setting if you move the checkout or change its environment. Launching Porthole's executable from an activated Flox shell also inherits PATH.

Migration

The ports use new paths and a new default VM name. They do not overwrite the upstream tools. To reuse an existing mac-test VM, set VM=mac-test and set KEY to the absolute path of its authorized key. Stop its previous launch agent before starting it through Slipway; never run two controllers for one VM. Copy only settings you understand. Keep historical logs separate if their screenshot or output paths still reference the old locations.

Privacy

Activity logs can contain command arguments, typed text, AppleScript and output. Porthole also reads the first prompt from supported local agent transcripts. Keep credentials out of test commands. Neither tool uploads this history. Porthole contacts GitHub for update checks; SSH connects to the configured Mac. Disable automatic update checks with:

Terminal
defaults write io.smeltery.porthole AppUpdaterAutomaticChecks -bool false
Continue readingArchitecture →
Edit on GitHub
Open in chat

Opens with this page’s documentation in the prompt.