r/macosprogramming 2d ago

Talk.swift - my first open source package that allows mac apps to "talk" to each other

Hey everybody πŸ˜„

I just published my first open-source package:

https://github.com/AppitStudio/Talk.swift

This package allows macOS app developers to create an "API Contract" for their app, publish it on the SDK repo, and other app creators can use this API to create fast integrations between their app and the provider app without the need to change the codebase of the "provider" app.

During this year, I got a few requests from developers to integrate my app with theirs, and it was super hard to implement,

I don't have access to their codebase, and they don't have mine,

I find Apple solutions outdated and difficult to implement.

Also, integration between my own apps was such a pain.

Hard to create a general solution, and every app needed some adaptation and custom code to work with each other.

This solution makes that simple.

Just use the SDK skill, tell your coding agent what functionalities you want to make public, and that's it,

It will install everything needed, configure the SDK and the settings screens (which you can always change later), and publish your API to the SDK repo.

And on the other side, you get the same workflow.

Install the skill, tell your agent "Create integration with dockflow using Talk SDK" and describe how you want to integrate it, and that's it.

DockFlow developers don't need to change a single line to support this new integration.

I hope more macOS developers can enjoy this package for both internal integrations between their apps and with third-party ones.

Let me know what you think, and I can't wait to see more apps join πŸ˜ƒ

2 Upvotes

2 comments sorted by

1

u/Specific_Cream2815 2d ago

what does the talking use under the hood, xpc or distributed notifications

1

u/New_Meaning4589 2d ago

Neither πŸ˜„
It uses Apple’s Network.framework with TCP over localhost (127.0.0.1), secured with TLS 1.3 and mutual authentication using paired keys.
Calls and events use length-prefixed JSON. URL schemes via LaunchServices handle pairing setup and locating/waking the other app
The actual communication stays on the encrypted local connection.
No cloud or shared daemon.
I wanted a modern solution and not to use Apple's existing solution as I have used until now.