One sheet, folded into flight.
A calm, local-first PDF workspace for macOS. Drop in up to 50 messy files —
merge, edit, OCR, sign, compress, and protect them — and fold the whole pile
into one clean, searchable, password-protected document. Your documents never leave your Mac.
No account · No upload · No subscription
折 the fold · 鶴 the crane · 間 ma, the margin · 朱 the seal
⚡ Install ✨ Features 🐾 Companion 🔒 Privacy ⚙️ Under the hood 📖 Docs
The workspace — sidebar, canvas, markup toolbar, and your paper companion, all on your Mac.
Note
Orifold is a work-in-progress beta, built in the open. Everyday PDF work — merge, annotate, OCR, sign, protect, export — is solid and gated by 1,000+ tests. Object editing landed in v0.8.8 and is still hardening; a few folds (real redaction, side-by-side compare) are yet to come. Feedback welcome.
Tip
New in v0.10.1: merged workspaces keep stable page positions while showing meaningful source page labels, Recents resumes and recovers more reliably, and localization fixes make status and error flows dependable across all six languages.
A "simple PDF task" is rarely one file. It's six PDFs, two screenshots, a Word document, a
scan, and one determined file named final_final_revised_ACTUAL.pdf. The everyday tools rent
your own files back to you: Preview stops short of the hard parts, and the capable apps hide
them behind a subscription and an upload.
Orifold is the workspace that was missing — native, local, and free. Drag the whole pile in; it repairs broken files on the way, stacks them into one calm workspace, and folds them into a single clean document. Document processing stays on your Mac.
Document processing below runs on your Mac. No document content is uploaded.
| Do this | Get this | |
|---|---|---|
| 📥 | Import anything — PDFs, Word, images, scans, Markdown, HTML, CSV, and CBZ comics — even corrupt files | One workspace instead of a folder of chaos; broken PDFs repaired on the way in |
| 🗂️ | Organize — reorder, rotate, delete pages across documents | A clean packet from messy source files |
| ✏️ | Annotate & edit — highlight, notes, ink, text boxes, edit real PDF text in place | Reviewed documents without a print-sign-scan loop |
| 🧩 | Edit objects (beta) — the Select tool moves, resizes, layers, deletes, or restyles a compatible real page graphic | Fix the layout itself, not just a note stuck on top of it |
| 🖋️ | Sign & fill forms — draw signatures or place a real PAdES digital signature, complete and lock form fields | Finished, tamper-evident paperwork — no third-party e-sign service |
| 🔍 | OCR scans — local Vision OCR makes scanned pages searchable | ⌘F finally works on the thing your printer emailed you |
| 🏷️ | Stamp & label — watermarks, page numbers, Bates labels, hanko seals, barcodes and QR codes | Packets and exhibits that look intentional |
| 🗜️ | Compress — downsample oversized images, then losslessly re-pack the structure | Attachments that stop bouncing off email size limits |
| 🧼 | Sanitize — strip auto-run actions, embedded JavaScript, hidden metadata | A file that carries nothing you didn't mean to send |
| 🔒 | Protect & export — real AES-256 password, or export to DOCX, Markdown, HTML, PNG, JPEG | The format the next person needs, locked when it matters |
| 📖 | Read comfortably — nested Contents, read aloud, Reader Mode, Document Comfort, and read-only on-device translation on macOS 15+ | Long documents that are easier to navigate and absorb |
| 🧭 | Inspect & archive — edit metadata, manage attachments, inspect tagged structure, and check archival-readiness signals | Fewer surprises hidden inside the file |
| 🌐 | Work in your language — full UI in English, Spanish, French, Hindi, Simplified Chinese, Japanese | An app that speaks your language, switchable from the landing screen |
📋 The full capability list, feature by feature
| Area | What you can do |
|---|---|
| Import | PDFs, Word, HTML, Markdown, text, CSV, JSON, XML, common images, and CBZ comic archives converted to PDF in natural page order; up to 50 files per workspace; corrupt PDFs are repaired via qpdf recovery when the native reader gives up |
| Organize | Reorder documents and pages, rotate, delete, add section banners, navigate from the sidebar |
| Read & search | Native PDF canvas, nested bookmark/heading Contents, workspace-wide search, read aloud with follow-along highlighting and speed control, password unlock prompts, Reader Mode, Document Comfort presets, and—on macOS 15+—read-only Apple on-device translation for a selection or current page |
| Recently viewed | An empty-state shelf of the last files you opened, with locally cached thumbnails — nothing about it leaves the machine |
| Annotate | Highlight, notes, ink, underline, strikeout, text boxes, and in-place editing of detected PDF text with continuous spell-check and metric-compatible fallback fonts |
| Object editing (beta) | The Select tool clicks a real graphic on the page — image, logo, line, or shape — then moves, resizes, restacks (Bring to Front / Send to Back), deletes, or restyles existing solid fill/stroke channels and line width on compatible vector paths; object and inline-text edits compose safely, survive save/reopen/export, and share full undo/redo |
| Signatures | Draw and place signatures, or produce standards-based PAdES digital signatures with Keychain and .p12 identities — verifiable anywhere PAdES is understood |
| Forms | Detect PDF form fields, edit answers, reset forms, lock answers during export |
| Scans & OCR | Local Vision OCR makes scans searchable; recognized text survives export |
| Stamps & decorations | Watermarks, page numbers, Bates labels, movable stamps, procedural circle/square hanko seals, and generated barcode/QR placements burned into exported PDFs |
| Metadata & attachments | Edit PDF title, author, subject, and keywords; list, add, extract, or remove embedded files from the Inspector with undo support |
| Structure & archival | Inspect the current page's tagged reading-order tree and alt-text coverage; check encryption, embedded fonts, XMP, output intent, tagging, and active-content signals before long-term storage |
| Compression | Downsample oversized images, then a lossless qpdf object-stream pass repacks the structure; post-compression validation confirms the result |
| Sanitize | Optional export pass strips catalog auto-run actions, embedded JavaScript, embedded files, and (opt-in) document metadata |
| Protection | Real AES-256 (PDF 2.0 / R6) password protection with permission checks and post-export verification |
| Export | PDF, DOCX, Markdown, plain text, HTML, PNG pages, JPEG pages, or print; PDF output can be imposed as booklet, 2-up, or 4-up, and every PDF passes a qpdf structural check before it reaches disk |
| Languages | Full localization in six languages, switchable from the landing screen and persisted across launches — coverage enforced by a test |
| Companion | Gami (dog) or Ori (cat), an optional origami buddy that reacts to highlighting, signing, exporting, and warnings; toggle from the app menu |
| Install & update | One-line installer, Desktop launch/update helpers, clean uninstaller, Homebrew cask, opt-in in-app update check |
Paste this into Terminal and press Return:
curl -fsSL https://raw.githubusercontent.com/udhawan97/Orifold/main/install.sh | zshThat's it. The installer downloads the prebuilt universal app (Apple Silicon + Intel) to
~/Applications/Orifold.app and puts two helpers on your Desktop: Orifold.command (launch +
update) and Uninstall Orifold.command (a clean exit). No Xcode, no GitHub account, no compile
step. Requires macOS 14 Sonoma or newer.
Tip
Never used Terminal? Open Applications → Utilities → Terminal, paste the line above, press Return. You're now a power user.
🍺 Prefer Homebrew?
brew tap udhawan97/orifold https://github.com/udhawan97/Orifold
brew install --cask udhawan97/orifold/orifoldInstalls the same prebuilt app and clears the download quarantine for you.
📥 Prefer a direct download (DMG)?
Grab the disk image — Orifold.dmg (universal: Apple Silicon + Intel). Open it, drag Orifold into Applications, then open Orifold from Applications.
Because release builds aren't notarized by Apple yet, first launch takes one step: right-click
Orifold in Applications → Open → Open. (Prefer zero dialogs? The one-line installer
and Homebrew cask clear the quarantine for you.) The plain Orifold.zip is still published for the installer and cask.
🛠️ Building from source?
Source builds need Apple Command Line Tools with Swift 5.9+. The normal installer never needs them — it downloads a prebuilt app. See Under the hood.
The same fold that opens Orifold's logo blossoms into a small companion that lives in your workspace. Pick Gami (the origami dog) or Ori (the origami cat) on first launch, or switch anytime. Your companion keeps a quiet eye on your document, offers the occasional tip in character, and reacts — visibly — whenever you highlight, sign, export, or fix something.
Gami greets you on the empty-state screen — in the app, in any of six languages.
Tip
Easy to silence when you're not new. Toggle Show Orifold Buddy from the app menu. (Gami: "Highlighted. Future-you will pretend they read the rest." · Ori: "This PDF is under my silent judgment.")
Orifold is local-first by design — not as a setting, as an architecture.
- 🖥️ Document processing runs on your Mac. Import, OCR, compression, encryption, signing, translation, and export never upload your PDF or its text.
- 🛡️ Sandboxed. The app runs under the macOS App Sandbox with user-selected file access only.
- 📡 Zero telemetry. No analytics pipeline. There isn't even a server to send it to — stars are the only telemetry we get.
- 🔔 Explicit, narrow network use. Orifold can check/download updates when you ask, request an optional trusted signing timestamp, and—on macOS 15+ after a first-use disclosure—let macOS download an Apple translation language model. No flow uploads your PDF or its text to an Orifold service.
🔍 The fine print — sandbox entitlements & guardrails
The app enables exactly four entitlements:
| Entitlement | Why |
|---|---|
com.apple.security.app-sandbox |
Runs the whole app inside the macOS sandbox |
com.apple.security.files.user-selected.read-write |
Read/write only the files you choose |
com.apple.security.files.bookmarks.app-scope |
Remember your Recently Viewed files across launches |
com.apple.security.network.client |
User-authorized updates, optional trusted signing timestamps, and system-managed translation language-model downloads |
Practical guardrails: password prompts for protected PDFs, import size limits, local validation before and after compression or encryption, a qpdf structural check gating every export, an optional sanitize pass that strips auto-run actions and embedded JavaScript, form flattening before decoration burn-in, export error reporting for malformed PDFs, and hidden Orifold comment metadata stripped before flat PDF export.
For developers, contributors, and anyone evaluating how this is built.
| Language | Swift 5.9+, 100% SwiftUI interface |
| Codebase | 138 Swift source files in the app, ~52,500 lines |
| Tests | 1,007 tests in the current source tree |
| PDF engines | PDFKit (display/composition) · PDFium (versioned shared page inspection, structural object editing, image compression, text geometry) · qpdf (repair, AES-256, sanitize, structural validation) · Vision (OCR) · Apple Translation (on-device reading aid on macOS 15+) |
| Architecture | Unidirectional flow: views → one observable view model → protocol-seamed local engines → staged export pipeline |
| Distribution | GitHub Actions builds a universal (Apple Silicon + Intel) app and packages a signed-capable DMG (scripts/make-dmg.sh) plus the release zip and a checksummed manifest.json; installer, Homebrew cask, and uninstaller ship from this repo |
📁 Project layout
Orifold/
App/ App entry point and command wiring
DesignSystem/ Shared visual tokens and styling
Document/ macOS document package read/write support
Engine/ PDF/CBZ loading, repair, conversion, OCR, translation, compression, encryption, sanitize, forms, export
Models/ Workspace, page, annotation, comment, export, decoration, recent-file models
Pet/ Gami & Ori, the in-app companions
Resources/ App metadata, entitlements, assets, Localizable.xcstrings (6 languages)
Signing/ Signing identities, CMS construction, timestamping, verification
ViewModels/ Workspace state, document operations, search, export, undo
Views/ SwiftUI interface components
Packages/ Vendored binary engines — PDFiumBinary, QPDFBinary (universal static libs)
Tests/ Test suites run in the release gate
scripts/ install-mac.sh (installer/packager), make-dmg.sh (universal DMG), uninstall-mac.sh
install.sh Hosted one-line bootstrap
Casks/orifold.rb Homebrew cask
🔨 Build, test, and package
open Orifold.xcodeproj # or: swift build && swift test
# Build & test from the command line
xcodebuild build -quiet -project Orifold.xcodeproj -scheme Orifold -destination 'generic/platform=macOS' CODE_SIGNING_ALLOWED=NO
xcodebuild test -quiet -project Orifold.xcodeproj -scheme Orifold -destination 'platform=macOS' CODE_SIGNING_ALLOWED=NO
# Build the same release zip GitHub Releases ships, then the universal DMG
ORIFOLD_UNIVERSAL=1 ./scripts/install-mac.sh --package-only --package /tmp/Orifold.zip
zsh scripts/make-dmg.sh --from-zip /tmp/Orifold.zip --version 0.10.1
# Install from the current source checkout without opening the app
./scripts/install-mac.sh --no-openApp metadata: CFBundleShortVersionString 0.10.1, CFBundleVersion 24.
✍️ Signed & notarized release builds
ORIFOLD_SIGNING_IDENTITY="Developer ID Application: Your Name (TEAMID)" \
ORIFOLD_NOTARIZE=1 \
ORIFOLD_APPLE_ID="apple-id@example.com" \
ORIFOLD_APPLE_TEAM_ID="TEAMID" \
ORIFOLD_APPLE_APP_SPECIFIC_PASSWORD="app-specific-password" \
./scripts/install-mac.sh --package-only --package /tmp/Orifold.zipGitHub Actions uses the same path when the matching ORIFOLD_* secrets are configured.
Orifold is genuinely useful today — and nowhere near finished. Object editing just landed in beta; a few more folds are on the workbench. A friendly sneak peek, not a blood oath.
- Real redaction — remove text and images, not just cover them
- Fold the whole stack — compress, OCR, or watermark a folder in one pass
- Side-by-side compare — spot the change between two drafts on one screen
- Faster large-document navigation — 300-page beasts that scroll like pamphlets
- More languages — broader interface, OCR, and translation coverage
- A calmer first launch — pending one very official Apple notarization handshake
Got a fold you'd love to see? Tell us.
macOS warns the app is from an unidentified developer
Release builds are ad-hoc signed but not notarized yet. The one-line installer and Homebrew cask clear the download quarantine automatically. If macOS still warns, right-click the app in Finder and choose Open from the security prompt.
A .command file says it cannot be opened
Open Terminal in the project folder and run:
chmod +x "Install or Update Orifold.command" "Uninstall Orifold.command" scripts/install-mac.sh scripts/uninstall-mac.shThen double-click the file again from Finder.
The installer says no prebuilt release is available
The Orifold.zip release asset hasn't published yet or couldn't be downloaded. Wait for the
release workflow, then rerun the installer. Developers can opt into a source build:
curl -fsSL https://raw.githubusercontent.com/udhawan97/Orifold/main/install.sh | ORIFOLD_ALLOW_SOURCE_BUILD=1 zshSomething failed and the Terminal window closed too fast
Check .build/install.log in the project folder, and ~/.orifold/prebuilt-install.log for the prebuilt install attempt.
Update: double-click Orifold.command on your Desktop — it checks the latest release before
launching and sweeps up any stray Orifold.app copies so only one install remains. Or
brew upgrade --cask udhawan97/orifold/orifold.
Uninstall: double-click Uninstall Orifold.command — it removes the app, Desktop helpers, installer cache, and app data. A cleaner exit than most software manages.
Bug reports and feature requests are welcome in Issues.
Building from source? Under the hood is the whole onboarding doc — if swift test
passes, you're set up.
Orifold is available under the Apache License 2.0.
If Orifold rescued you from final_final_revised_ACTUAL_v3.pdf,
star the repo.
Since Orifold has no telemetry, stars are the only signal we get. ⭐
Folded by hand. Built as a local-first PDF workspace — Claude and Codex accelerated the implementation, then every line was reviewed, tested, and refactored by hand.
