The project / SOURCE v3.5.7
Development
Build the Swift targets, find the shared core, and check a change without replacing your installed app.
Get the source#
git clone https://github.com/sriinnu/portpilot.git
cd portpilotCLI/TUI work requires Swift 5.9+. The macOS app targets macOS 13+ and uses Xcode 15+; XcodeGen regenerates the project from project.yml. Read AGENTS.md and mission.md before changing behavior.
Three products, one shared core#
- Sources/PortPilot
- SwiftUI and AppKit macOS app.
- Sources/PortKillerCLI
- The portpilot executable, using swift-argument-parser.
- Sources/PortPilotTUI
- The portpilot-tui executable.
- Sources/PortManagerLib
- Shared discovery, process control, cron and proxy logic.
- Sources/TerminalTUI
- The reusable terminal UI engine.
Build without installing#
swift build --product portpilot
swift build --product portpilot-tui
swift testSwiftPM may resolve dependencies on an initial build. With dependencies already cached, the repository’s offline-oriented checks are:
swift test --disable-automatic-resolution --skip-update
swift build --product portpilot --disable-automatic-resolution --skip-updateThese flags are not a network sandbox. Stop if a dependency needs fetching in a restricted environment.
Check the macOS app target#
xcodebuild -project PortPilot.xcodeproj -scheme PortPilot \
-configuration Debug -destination 'platform=macOS' \
-disableAutomaticPackageResolution \
-onlyUsePackageVersionsFromResolvedFile -skipPackageUpdates \
CODE_SIGNING_ALLOWED=NO buildThis checks compilation without producing a signed release. Do not launch a test app automatically: restored Guard settings can affect real processes. The Xcode CLI scheme is PortPilotCLI; the SwiftPM product is portpilot.
Contribute a small, inspectable change#
Preserve existing work. Use synthetic connections, temporary directories and disposable loopback fixtures. Keep source/test checks distinct from installed-app acceptance. Include the change, its reason, and the checks actually performed.