Privacy Policy
Lectern for macOS and iOS · Effective July 9, 2026
Overview
Lectern is a macOS and iOS application for composing and cross-posting content to multiple social media platforms. It is designed with a local-first architecture: your drafts, schedules, and logs stay on your device, except when temporary hosted media URLs are needed for publishing and when Apple sync services are used for your own devices.
Data Storage
Post content, drafts, media files, scheduling data, and application logs are stored locally on your device using SwiftData. Connected account metadata syncs through the user's private iCloud CloudKit database so the same accounts can appear on the user's own Apple devices. Authentication tokens for connected social media accounts are stored in the Apple Keychain and may sync through iCloud Keychain when enabled by the user.
Lectern does not maintain a server-side account database and does not store your drafts, schedules, local logs, or connected-account records on a Lectern server. Server-side data is limited to temporary media hosting for platforms that require public media URLs and short-lived operational event logs described below.
Data Transmitted to Third Parties
When you publish a post, Lectern sends your content directly to the social media platforms you have selected. This may include text, images, and videos. Each platform's own privacy policy governs how they handle that content once received.
The platforms Lectern can connect to include:
- Bluesky
- Mastodon (user-configured instance)
- Threads
- Tumblr
- Google Business Profile
- Pixelfed
For platforms that require a publicly accessible media URL, including Threads, Instagram, and Pinterest image Pins, Lectern temporarily uploads the media file to Lectern's Cloudflare R2 bucket served from cdn.lectern.work. If you enable Use custom R2 bucket in Settings, Lectern uploads the media to your own Cloudflare R2 bucket instead. Lectern schedules normal deletion after publishing and retries failed deletions. Objects in Lectern's bucket also expire automatically under a bucket lifecycle rule.
Pinterest Integration
When you connect a Pinterest account, Lectern uses Pinterest's OAuth 2.0 API to authenticate and publish Pins on your behalf. Lectern requests the following Pinterest scopes: pins:read, pins:write, boards:read, boards:write, and user_accounts:read. Your Pinterest access token is stored in the Apple Keychain and is used only for Pinterest API requests you initiate. Lectern reads your boards only so you can choose a destination board for publishing, then stores the selected board identifier and name with your account credentials so future Pins publish to the board you chose. Lectern does not store Pinterest board lists, store Pinterest Pins, share Pinterest API data, or use Pinterest data for analytics, advertising, resale, scraping, or any purpose other than publishing content you explicitly initiate.
Data We Do Not Collect
Lectern does not collect advertising analytics, behavioral usage statistics, crash reports, contacts, precise location, or tracking data. There are no third-party analytics SDKs, advertising frameworks, or data brokers integrated into the application. Lectern never sends post text, account names, social-profile URLs, authentication tokens, or raw platform responses to its operational logging service.
OAuth & Authentication
Lectern authenticates with social platforms using OAuth 2.0 or platform-specific app passwords. OAuth tokens and refresh tokens are stored in the Apple Keychain. For platforms that require a confidential client secret, Lectern sends OAuth authorization codes or refresh tokens to a Lectern token-exchange worker at lectern.work; that worker forwards the request to the platform, returns the token response to the app, and does not persist tokens.
Logging
Lectern maintains local diagnostic logs to help with troubleshooting. These logs include network request metadata, publish status, and cleanup status; authorization headers are automatically redacted. Local logs are stored in SwiftData and can be cleared from within the application.
Lectern also sends metadata-only operational events to its Cloudflare Worker so recent publishing and temporary-media cleanup can be diagnosed. These events are limited to random operation and task identifiers, platform type, event type, timestamp, temporary object key, and a non-content error category. Like other web services, Cloudflare processes standard request metadata such as IP address, user agent, and IP-derived country or region. Cloudflare Workers Logs retain the event and request metadata for no more than 7 days. They are used only for reliability, security, and support, not advertising or user profiling.
Data Deletion
You are in full control of your data. You can remove any connected account from Lectern at any time, which deletes the associated tokens from Keychain and cascades deletion to related posts and media references. Uninstalling Lectern removes all locally stored data.
Children's Privacy
Lectern is not directed at children under the age of 13. We do not knowingly collect any information from children.
Changes to This Policy
If this policy is updated, the revised version will be posted at this URL with an updated effective date.
Contact
For questions about this privacy policy, contact david@daviddegner.com.