iOS and macOS apps: record voice notes with live on-device transcription,
sync them between devices via CloudKit, and summarize them with AI. Both
apps share the same composition root (Apps/Shared) and feature packages.
Agent-first codebase: conventions live in AGENTS.md, design docs in docs/. Almost all code is in local Swift packages that test in seconds on the Mac host.
brew install xcodegen # once
xcodegen generate # generates the gitignored Weeve.xcodeproj
open Weeve.xcodeproj # schemes: Weeve (iOS), WeeveMac (macOS)Signing uses DEVELOPMENT_TEAM from project.yml. The shared CloudKit
container iCloud.app.weeve.companion is registered to that team; first
build on a new machine may need -allowProvisioningUpdates.
To see sync in action: run WeeveMac on the Mac and Weeve on an iPhone signed into the same iCloud account, record on one, watch the Library on the other (remote pushes don't reach simulators — use a device, or relaunch the sim app to fetch).
Works out of the box without any setup:
- Simulator uses
MockLiveTranscriber(scripted transcription — no mic). - No
ANTHROPIC_API_KEYin the scheme →MockSummarizer. - No iCloud account → local-only storage, sync silently disabled.
./Scripts/test-all.sh # all packages
cd Packages/WeeveSync && swift test # one package (seconds)Apps/Shared composition root, compiled into both apps (3 files)
Apps/iOS, Apps/macOS generated Info.plist + entitlements per app
Packages/
WeeveCore domain models + store protocol (shared w/ macOS)
WeeveSync file store + CKSyncEngine sync (shared w/ macOS)
WeeveAI transcription + summarization (shared w/ macOS)
WeeveDesignSystem tokens + components
WeeveFeatures CaptureFeature, TranscriptsFeature
project.yml XcodeGen manifest (xcodeproj is generated)