Coincide Get Coincide

Guide

Build Coincide from source

Coincide is open source under the MIT license. You can build it yourself with Xcode, to try a change or to contribute. The release on the download page is the same code, signed and notarized.

Updated

Requirements

Building

brew install xcodegen
git clone https://github.com/apoorvdarshan/coincide.git
cd coincide
xcodegen generate
open Coincide.xcodeproj

Then build and run the Coincide scheme in Xcode. A few things happen along the way:

Coincide has two package dependencies, SwiftTerm (the terminal) and WhisperKit (Whisper dictation, with no bundled models).

The Debug app

Debug builds, whether from Xcode, the tests or an agent, are a separate app called Coincide Debug, so they never touch your installed Coincide:

Installed CoincideCoincide Debug
Bundle IDcom.apoorvdarshan.coincidecom.apoorvdarshan.coincide.debug
Data folder~/Library/Application Support/Coincide~/Library/Application Support/Coincide Debug
Keychain items, background jobs, macOS permissionsIts ownIts own
AgentsIn the background agent hostIn the app, unless you launch it with COINCIDE_AGENT_HOST=1
Terminal’s coincideInstalled by this appLeft to the installed app; agents the Debug app starts still get its own tool

Set COINCIDE_DATA_DIR to run a build against a scratch folder instead. Xcode registers every app it builds with Launch Services, and macOS can pick any registered copy for a notification’s icon or click. When you’re done with a build you won’t install, unregister it:

scripts/unregister-builds.sh ~/Library/Developer/Xcode/DerivedData/<folder>

Signing your builds

Builds are signed ad hoc by default, as in CI. That works, but every build gets a new identity, so macOS asks again for permissions such as access to a protected folder your agent configuration lives in. To keep your answers, sign with your own identity: create a gitignored Local.xcconfig in the repository root, as Signing.xcconfig describes, and run xcodegen generate.

// Local.xcconfig
CODE_SIGN_IDENTITY = Developer ID Application
DEVELOPMENT_TEAM = ABCDE12345

Some features need more than a signature:

Tests

The unit tests use Swift Testing and run in CI on every pull request. To run them yourself, as CI does:

xcodebuild -project Coincide.xcodeproj -scheme Coincide -skipPackagePluginValidation test

Live provider tests drive the real agent CLIs with your own accounts and spend a little of your quota, so they run only when you set TEST_RUNNER_COINCIDE_LIVE_TESTS=1. The fuzzers for Coincide’s parsers live in Fuzz/.

Contributing

Read CONTRIBUTING.md before opening a pull request: it covers the project layout, code style, tests, user-facing text and the pull request checklist. Changed text needs translating too; see Translations. Releases are built, signed and notarized by GitHub Actions from a version tag, as docs/releasing.md describes.