# How to Build Palmier Pro from Source: Complete Guide for macOS Developers

> Build Palmier Pro from source on macOS with Xcode 16+. Clone, compile with swift build, and run dev script for live logs. Your complete developer guide.

- Repository: [Palmier/palmier-pro](https://github.com/palmier-io/palmier-pro)
- Tags: how-to-guide
- Published: 2026-06-22

---

**Build Palmier Pro by cloning the repository, ensuring you have macOS 26 (Tahoe) and Xcode 16+ on Apple Silicon, then run `swift build` to compile the Swift 6.2 package and [`./scripts/dev.sh`](https://github.com/palmier-io/palmier-pro/blob/main/./scripts/dev.sh) to launch with live log streaming.**

Palmier Pro is an AI-native macOS video editor written in **Swift 6.2** using a hybrid **SwiftUI** and **AppKit** architecture. This guide explains exactly how to build Palmier Pro from source using Swift Package Manager (SPM), targeting macOS 26 on Apple Silicon hardware.

## Prerequisites for Building Palmier Pro

The project requires specific macOS and toolchain versions due to its use of modern Swift features and latest Apple APIs.

### macOS 26 (Tahoe) on Apple Silicon

Palmier Pro exclusively targets Apple Silicon Macs running **macOS 26 (Tahoe)** or later. The [`Package.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Package.swift) manifest declares `platforms: [.macOS(.v26)]`, and the codebase uses UI APIs only available on this release.

### Xcode 16+ or Swift 6.2 Toolchain

You need **Xcode 16** or the standalone Swift 6.2 toolchain to handle the `swift-tools-version:6.2` declared in the package manifest. Verify your installation with:

```bash
swift --version

```

The output should report **Swift 6.2**.

### Command-Line Tools

Ensure you have the macOS Command Line Tools installed to access `swift`, `xcodebuild`, and `git`. These are required for dependency resolution and compilation.

## Step-by-Step Build Process

### 1. Clone the Repository

Fetch the source code and the [`Package.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Package.swift) manifest from the palmier-io organization:

```bash
git clone https://github.com/palmier-io/palmier-pro.git
cd palmier-pro

```

The repository follows standard SPM structure with `Sources/PalmierPro/` containing the main executable code and `Tests/PalmierProTests/` housing the unit test suite.

### 2. Resolve Swift Package Dependencies

The [`Package.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Package.swift) declares several external dependencies including **DSWaveformImage**, **Sparkle**, **Sentry**, **Lottie**, **Convex**, and **swift-transformers**. Resolve these automatically:

```bash
swift package resolve

```

This downloads the required packages from GitHub, caching them locally for subsequent builds.

### 3. Compile the Executable

Build the `PalmierPro` executable target with debug configuration:

```bash
swift build

```

For a production-optimized build, specify the release configuration:

```bash
swift build -c release

```

The compiler produces the binary at `.build/debug/PalmierPro` or `.build/release/PalmierPro` respectively, bundling all resources (fonts, images, and MCP bindings) defined in the target's `resources:` declaration.

### 4. Run the Application

Launch the app directly from the build directory:

```bash
swift run

```

Or open the built app bundle:

```bash
open .build/debug/PalmierPro.app

```

## Development Workflow with Live Reloading

### Using the dev.sh Script

The repository includes [`scripts/dev.sh`](https://github.com/palmier-io/palmier-pro/blob/main/scripts/dev.sh), the recommended workflow for iterative development. This script performs a fast debug build, creates the app bundle, launches it, and streams OSLog output to your terminal:

```bash
./scripts/dev.sh

```

To launch without log streaming:

```bash
./scripts/dev.sh --no-stream

```

Under the hood, [`dev.sh`](https://github.com/palmier-io/palmier-pro/blob/main/dev.sh) calls `scripts/bundle.sh debug --fast` to generate `.build/PalmierPro.app`, then executes `log stream --predicate 'subsystem == "io.palmier.pro"'` to display real-time diagnostic messages from the `io.palmier.pro` subsystem.

### Running the Test Suite

Validate your build by executing the comprehensive test suite covering timeline logic, transcription, and rendering:

```bash
swift test

```

A successful run executes 292+ tests with output similar to:

```

Test Suite 'All tests' passed at 2026-06-22 12:45:00.000.
	 Executed 292 tests, with 0 failures (0 unexpected) in 7.32 seconds

```

## Architecture Highlights

Understanding the codebase structure helps when modifying or debugging the build.

### Design System in AppTheme.swift

All visual constants—colors, spacing, fonts, radii, shadows, and animation timings—are centralized in [`Sources/PalmierPro/UI/AppTheme.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Sources/PalmierPro/UI/AppTheme.swift). UI components reference these static constants rather than hard-coding values, ensuring consistent theming across the SwiftUI and AppKit interfaces.

### Timeline Rendering Engine

The core editing surface lives in [`Sources/PalmierPro/Timeline/TimelineView.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Sources/PalmierPro/Timeline/TimelineView.swift). This `NSView` hosts a `TimelineCanvasView` that handles high-performance CoreGraphics drawing, scroll/zoom logic, and drag-and-drop operations. Input handling is delegated to `TimelineInputController`, which manages mouse events, playhead positioning, and clip snapping.

### AI Agent Integration via MCP

The **Model Context Protocol (MCP)** integration enables external AI agents (Claude, Cursor, Codex) to control the editor. [`Sources/PalmierPro/Agent/AgentService.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Sources/PalmierPro/Agent/AgentService.swift) orchestrates a local HTTP MCP server, while `ToolExecutor` extensions translate natural language commands into timeline edits. This architecture allows programmatic video editing through AI interfaces.

## Key Source Files Reference

| File | Purpose |
|------|---------|
| [`Package.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Package.swift) | Declares the executable target, macOS 26 platform requirement, and external dependencies |
| [`Sources/PalmierPro/UI/AppTheme.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Sources/PalmierPro/UI/AppTheme.swift) | Centralized design system constants for styling |
| [`Sources/PalmierPro/Timeline/TimelineView.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Sources/PalmierPro/Timeline/TimelineView.swift) | Core timeline canvas and rendering logic |
| [`Sources/PalmierPro/Agent/AgentService.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Sources/PalmierPro/Agent/AgentService.swift) | MCP server coordination and AI agent management |
| [`Sources/PalmierPro/Export/ExportService.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Sources/PalmierPro/Export/ExportService.swift) | Project export logic for XML and custom formats |
| [`scripts/dev.sh`](https://github.com/palmier-io/palmier-pro/blob/main/scripts/dev.sh) | Development helper for fast builds and log streaming |
| [`Tests/PalmierProTests/Timeline/ClipMathTests.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Tests/PalmierProTests/Timeline/ClipMathTests.swift) | Unit tests for timeline geometry calculations |

## Summary

- **Palmier Pro requires macOS 26 (Tahoe) on Apple Silicon** and Xcode 16+ to build successfully
- **Clone the repository** and run `swift build` to compile the Swift 6.2 package with automatic dependency resolution
- **Use [`./scripts/dev.sh`](https://github.com/palmier-io/palmier-pro/blob/main/./scripts/dev.sh)** for the optimal development workflow with fast builds and live OSLog streaming
- **Execute `swift test`** to run the full test suite covering timeline, rendering, and transcription logic
- **Key architectural components** include [`AppTheme.swift`](https://github.com/palmier-io/palmier-pro/blob/main/AppTheme.swift) for UI constants, [`TimelineView.swift`](https://github.com/palmier-io/palmier-pro/blob/main/TimelineView.swift) for the editing canvas, and [`AgentService.swift`](https://github.com/palmier-io/palmier-pro/blob/main/AgentService.swift) for AI integration

## Frequently Asked Questions

### What are the minimum system requirements for building Palmier Pro?

You need a Mac with Apple Silicon (M1, M2, M3, or later) running **macOS 26 (Tahoe)** and **Xcode 16** or newer. The [`Package.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Package.swift) explicitly targets `macOS(.v26)`, and the codebase uses Swift 6.2 language features unavailable in earlier toolchains. Intel-based Macs are not supported due to Apple Silicon-specific optimizations in the rendering pipeline.

### How do I run Palmier Pro after building it from source?

After running `swift build`, launch the app using `swift run` for immediate execution, or open the generated bundle with `open .build/debug/PalmierPro.app`. For development, use [`./scripts/dev.sh`](https://github.com/palmier-io/palmier-pro/blob/main/./scripts/dev.sh) instead, which builds the app, launches it, and streams diagnostic logs from the `io.palmier.pro` subsystem to your terminal window.

### Can I build Palmier Pro without Xcode?

Yes, you can build using the standalone **Swift 6.2 toolchain** if you prefer not to install the full Xcode IDE. Ensure you have the Command Line Tools installed so that `swift` and `xcodebuild` are available in your PATH. However, Xcode 16 provides the easiest setup as it bundles the correct Swift version and macOS SDK automatically.

### How do I debug Palmier Pro during development?

Use the [`./scripts/dev.sh`](https://github.com/palmier-io/palmier-pro/blob/main/./scripts/dev.sh) script to launch the app with OSLog streaming enabled. This displays real-time diagnostic messages including track loading, clip rendering status, and MCP server communications. You can also set breakpoints in Xcode by opening the [`Package.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Package.swift) as a project, or use `swift run` with LLDB debugging attached for command-line debugging.