System to host an executable within an XPC service.


Swift Package Manager

dependencies: [
    .package(url: "")


To interact with the service:

import ProcessServiceClient

let userEnv = try await HostedProcess.userEnvironment(with: "com.myxpcservice")

let process = HostedProcess(named: "com.myxpcservice", parameters: params)
let data = try await process.runAndReadStdout()

Here’s now to make an XPC service. Make sure to match up the service bundle id with the name you use.

// main.swift

import Foundation

final class ServiceDelegate: NSObject, NSXPCListenerDelegate {
    func listener(_ listener: NSXPCListener, shouldAcceptNewConnection newConnection: NSXPCConnection) -> Bool {
        do {
            try newConnection.configureProcessServiceServer()
        } catch {
            return false

        return true

let delegate = ServiceDelegate()
let listener = NSXPCListener.service()

listener.delegate = delegate

Suggestions or Feedback

We’d love to hear from you! Get in touch via twitter, an issue, or a pull request.

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.


View Github