cd /news/developer-tools/apple-iwork-formats-pages-numbers-ke… · home › topics › developer-tools › article
[ARTICLE · art-166862] src=reversedwithai.com ↗ pub= topic=developer-tools verified=true sentiment=· neutral

Apple iWork formats (Pages, Numbers, Keynote): Reverse engineering Apple Pages, Numbers and Keynote files into a TypeScript library

A TypeScript library called cupertino-files has been published to npm that opens, edits and saves Apple Pages, Numbers and Keynote files in Node 22 or modern browsers without a Mac, according to the project's README. The library, a dependency-free reverse engineering of Apple's undocumented iWork formats, reports support for 363 authored formula functions in Numbers, byte-for-byte preservation of untouched content, and detection that declines password-protected documents and the older iWork 09 XML format rather than mis-parsing them. The commit log carries Claude trailers on nearly every commit — Claude Fable 5.1 on 103, Fable 5 on 40, plus 51 naming Claude — and independent confirmation of the results is not reported.

by read2 min views2 publishedNov 10, 2026
Apple iWork formats (Pages, Numbers, Keynote): Reverse engineering Apple Pages, Numbers and Keynote files into a TypeScript library
Image: Reversedwithai (auto-discovered)

Evidence at a glance #

Based on the linked sources. The author's reported result and independent confirmation are separate checks.

  • AI involvement
  • Reported models: Claude Fable 5.1, Claude Fable 5. Tools: TypeScript, Protocol Buffers. The writeup below describes the work attributed to AI.
  • Reported result
  • Works. This is the directory's source-based outcome classification.
  • Independent confirmation
  • Not reported.
  • Human work and limitations
  • The repository belongs to the den-frie-vilje organization and the commit log shows one main human committer. The README says tables are inserted from a neutral Apple-made donor, filter rules are read-only, and some questions are still open.

Original sources

What was done #

cupertino-files is an ongoing reverse engineering of the undocumented iWork formats, measured from real documents. Nearly every commit carries a Claude trailer, mostly naming Claude Fable 5.1.

Apple's iWork formats are undocumented, and this library is described by its author as an ongoing reverse engineering of them, measured from real documents. The result is a pure TypeScript package with no runtime dependencies that opens, edits and saves Pages, Numbers and Keynote files in Node 22 or modern browsers, without a Mac.

The README says everything you do not touch is preserved byte for byte. For Pages it lists text edits, named styles, sections, headers, images, tables, comments and footnotes. For Numbers it lists reading and writing every value type, authored formulas with 363 functions, merges, conditional rules and sheet structure. Keynote support covers slides, layouts, transitions, builds and presenter notes. Charts, new blank documents, export to Markdown or CSV and an audit that names faults before save are also described. Password-protected documents and the old iWork 09 XML format are detected and declined rather than mis-parsed.

Open questions are tracked in docs/BLOCKERS.md and capabilities in docs/COVERAGE.md. The commit log shows Claude trailers on nearly every commit (Claude Fable 5.1 on 103, Fable 5 on 40, plus 51 naming Claude), and the repository has agent files.

Reproduce it #

Run npm install cupertino-files and try the examples in the README against your own .pages or .numbers file. Fixtures in the repository are sample documents used for tests.

Community #

Ask a question, share what worked, or follow the next milestone.

Your library

── more in #developer-tools 4 stories · sorted by recency
── more on @cupertino-files 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/apple-iwork-formats-…] indexed:0 read:2min 2026-11-10 · —