Dependencies for Palmier Pro: Swift Package Manager and Third-Party Libraries

Palmier Pro relies on nine Swift Package Manager dependencies including DSWaveformImage for audio visualization, Sparkle for auto-updates, Sentry for crash reporting, Clerk and Convex for authentication and cloud sync, and swift-transformers for on-device AI transcription.

Palmier Pro is a Swift 6.2 macOS 26 exclusive video editing application that manages its third-party integrations through the Swift Package Manager (SPM). The complete list of dependencies for Palmier Pro is declared in the repository’s Package.swift file, which defines the external libraries required for audio processing, cloud synchronization, authentication, and AI-powered features.

Core Dependency Categories

Audio Visualization and UI Animation

Palmier Pro uses DSWaveformImage (https://github.com/dmrschmidt/DSWaveformImage) to generate high-resolution waveform images for audio tracks in the timeline view. According to the source code in Sources/PalmierPro/MediaPanel/MediaTab/AssetThumbnailView.swift, this library renders audio visualizations by processing AVAsset objects into drawable waveforms. For vector-based animations such as loading spinners and transitions, the app integrates Lottie (https://github.com/airbnb/lottie-ios), which renders After Effects animations efficiently within SwiftUI components defined in Sources/PalmierPro/UI/GeneratingOverlay.swift.

Authentication and Backend Services

The application leverages three interconnected Clerk and Convex packages for user management and cloud functionality. ClerkConvex (https://github.com/clerk/clerk-convex-swift) and ClerkKit (https://github.com/clerk/clerk-ios) handle OAuth-style authentication flows and session management, while ConvexMobile (https://github.com/get-convex/convex-swift) serves as the client SDK for Convex’s backend services. These dependencies enable real-time data queries, mutations, and cloud project storage, as implemented in Sources/PalmierPro/Project/VideoProject.swift.

AI Processing and Data Modeling

For on-device intelligence, Palmier Pro incorporates swift-sdk (MCP) (https://github.com/modelcontextprotocol/swift-sdk.git)—the Model Context Protocol library that powers project serialization and remote synchronization. The Tokenizers package from swift-transformers (https://github.com/huggingface/swift-transformers) provides tokenization utilities that drive the AI-powered transcription and visual search capabilities in Sources/PalmierPro/Search/VisualIndexer.swift.

App Infrastructure and Monitoring

Sparkle (https://github.com/sparkle-project/Sparkle) provides the automatic update mechanism, checking for new releases in the background without disrupting user workflows. The Sentry SDK (https://github.com/getsentry/sentry-cocoa) captures runtime errors and performance data, feeding crash reports back to developers for monitoring. These are initialized in Sources/PalmierPro/App/Updater.swift and Sources/PalmierPro/App/AppDelegate.swift respectively, with the application entry point located in Sources/PalmierPro/App/main.swift.

Implementation Examples

The following code snippets demonstrate how Palmier Pro consumes these dependencies in production code.

Rendering Audio Waveforms

The app generates audio visualizations for the timeline using DSWaveformImage:

import DSWaveformImage

func waveformImage(for audioURL: URL) async throws -> NSImage {
    let asset = try AVAsset(url: audioURL)
    let waveform = try await WaveformImageRenderer.render(
        asset: asset,
        size: CGSize(width: 800, height: 80),
        waveColor: .systemBlue,
        backgroundColor: .clear
    )
    return waveform
}

This function is used in MediaPanel/MediaTab/AssetThumbnailView.swift to display audio track previews.

Configuring Crash Reporting

Sentry is initialized at launch to capture uncaught exceptions and UI-thread hangs:

import Sentry

func configureSentry() {
    SentrySDK.start { options in
        options.dsn = "https://examplePublicKey@o0.ingest.sentry.io/0"
        options.enableAutoSessionTracking = true
        options.debug = true // Enable debug logging during development
    }
}

Called early in App/AppDelegate.swift to initialise error monitoring.

Implementing Automatic Updates

Sparkle’s SUUpdater checks for new releases silently in the background:

import Sparkle

class Updater: NSObject, SUUpdaterDelegate {
    private let updater = SUUpdater()
    
    override init() {
        super.init()
        updater.delegate = self
        updater.checkForUpdatesInBackground()
    }
}

Instantiated in App/Updater.swift to perform silent update checks.

Loading Lottie Animations

Vector animations are rendered within SwiftUI views using the Lottie library:

import Lottie

struct LoadingView: View {
    var body: some View {
        LottieView(name: "loading-spinner", loopMode: .loop)
            .frame(width: 64, height: 64)
    }
}

LottieView is a thin SwiftUI wrapper defined in UI/GeneratingOverlay.swift.

Dependency Architecture and Design

Palmier Pro’s dependency architecture follows a modular design pattern where each third-party library is encapsulated behind its public Swift module (e.g., DSWaveformImage, MCP). By using SPM rather than CocoaPods or Carthage, the application avoids binary incompatibilities and benefits from deterministic builds across development environments.

The integration points are centralized in specific files:

This architecture allows Palmier Pro to remain a lightweight, native macOS binary while delivering modern cloud sync, AI transcription, and real-time collaboration features.

Summary

  • Palmier Pro declares nine Swift Package Manager dependencies in Package.swift to handle audio visualization, authentication, AI processing, and app infrastructure.
  • DSWaveformImage generates audio waveforms for the timeline view, while Lottie renders vector animations for the UI.
  • Authentication and cloud synchronization rely on ClerkConvex, ClerkKit, and ConvexMobile for secure user sessions and real-time backend operations.
  • Sparkle and Sentry provide automatic updates and crash reporting, initialized in Updater.swift and AppDelegate.swift respectively.
  • AI features use swift-transformers (Tokenizers) and the MCP SDK for on-device transcription and data modeling according to the palmier-io/palmier-pro source code.

Frequently Asked Questions

What package manager does Palmier Pro use for dependencies?

Palmier Pro uses the Swift Package Manager (SPM) exclusively to fetch and link third-party libraries. All dependencies are declared in the Package.swift file with specific version constraints, ensuring deterministic builds across development and production environments.

How does Palmier Pro handle automatic updates?

The application integrates Sparkle to check for new releases in the background. The SUUpdater class is instantiated in Sources/PalmierPro/App/Updater.swift, allowing users to install updates without manually downloading new binaries or interrupting their editing workflow.

Which dependencies power the AI transcription features?

On-device AI transcription and visual search rely on the Tokenizers package from swift-transformers and the swift-sdk (MCP) for Model Context Protocol operations. These are utilized in Sources/PalmierPro/Search/VisualIndexer.swift to process and index transcription text locally without sending audio data to external servers.

How is user authentication implemented in Palmier Pro?

Authentication flows through ClerkConvex and ClerkKit, which manage OAuth-style login and session tokens, while ConvexMobile handles the backend communication with Convex’s cloud services. This combination secures user data and enables cloud project synchronization across devices.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →