YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

PromptGarage for macOS

Native, local-first PromptGarage for Apple Silicon. The app is written in SwiftUI, uses the existing SQLite/FTS5 data model through GRDB, and does not start a Python process, web server, or network service.

Product contract

  • macOS 26, arm64 only
  • German native macOS UI
  • One-time migration from an existing prompts.db
  • Search, filters, CRUD, star, rating, copy/use count, statistics
  • Seven import formats across Claude, Codex, Hermes, ChatGPT, and Gemini
  • Forward-only browsing by original prompt day
  • Read-only topic browsing from existing tags
  • No sync, cloud account, AI relabeling, CLI, or MCP in V1

The approved product and state contract lives in wireframes/2026-07-15-promptgarage-mac/WIREFRAME_PACKET.md.

Build on the Mac

Requirements:

  • Apple Silicon Mac
  • macOS 26
  • Xcode 26 command-line tools
  • Internet access once for resolving the pinned GRDB Swift package
swift package resolve
swift test
./scripts/build-app.sh

The build script fails unless it is running on macOS 26+, Xcode/Swift 6.2 and an Apple Silicon host. It creates an ad-hoc signed, exact-arm64 personal app in dist/; it does not launch or install it and does not create a DMG or App Store package.

First launch and data safety

  1. Choose the transferred prompts.db, or start with an empty garage.
  2. PromptGarage opens the selected source read-only and checks SQLite integrity, required tables, columns, FTS triggers, and row-count parity.
  3. SQLite's online backup creates a separate database under ~/Library/Application Support/PromptGarage/.
  4. Only the Mac copy receives the nullable prompted_at column.
  5. Existing rows remain NULL; the app never invents historical dates or topics.

New Mac prompts receive prompted_at. Provider timestamps are used when present; otherwise one stable import time is used for that preview. “Nach Topics” derives groups from stored comma-separated tags without rewriting those tags.

Verification

Linux can verify the repository and source database contract, but cannot compile SwiftUI:

python3 verification/verify_contract.py \
  --source-db /home/smlflg/Projekte/PromptGarage/prompts.db

The release gate must run on the Mac:

./scripts/verify-mac.sh

With a transferred real database, use the guarded integration path:

./scripts/verify-mac.sh --source-db /path/to/transferred/prompts.db

--source-db exports PROMPTGARAGE_SOURCE_DB to both SwiftPM and Xcode package tests. The script hashes the source database plus any SQLite sidecars before and after every gate and fails if any byte or sidecar presence changed.

Installation and launching are intentionally separate, explicit authorities:

# Build/test/sign, then launch dist/PromptGarage.app and verify a new process
./scripts/verify-mac.sh --source-db /path/to/prompts.db --launch

# Build/test/sign, replace /Applications/PromptGarage.app, launch, verify process
./scripts/verify-mac.sh --source-db /path/to/prompts.db --install

Without --launch or --install, the app is not opened. Without --install, nothing is written to /Applications; the script never invokes sudo. The full manual acceptance pass is verification/MAC_UI_SMOKE_CHECKLIST.md.

Done means SwiftPM and Xcode package tests pass, the packaged binary is exactly arm64 (not universal), code signing verifies, a newly launched process remains alive, source bytes remain unchanged, migrated prompt/FTS counts match, and every manual smoke item passes after a relaunch.

Repository map

  • Sources/PromptGarageCore/ — SQLite schema, repository, migration, importers
  • Sources/PromptGarageApp/ — SwiftUI application and views
  • Tests/PromptGarageCoreTests/ — synthetic fixtures and data-contract tests
  • AppBundle/ and scripts/ — personal .app packaging and Mac verification
  • verification/ — static contract checks and the required Mac UI smoke record
  • wireframes/ — owner-approved views, states, risks, and acceptance contract
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support