Apple Developer ID signed
Every release is code-signed with Java Mantra Corp's Developer ID before Apple sees it. Gatekeeper verifies the signature on first launch and on every relaunch.
Security
CentProof is signed, notarized, locally-stored, and locally-AI'd by default. This page lists the exact third parties we use, the four network calls the app can make, and how to verify any of it independently.
Distribution + integrity
CentProof is distributed as a signed, notarized macOS .dmg. Auto-updates carry an additional ed25519 signature. Every release publishes its SHA-256 so you can verify the bytes you downloaded match the bytes we built.
Every release is code-signed with Java Mantra Corp's Developer ID before Apple sees it. Gatekeeper verifies the signature on first launch and on every relaunch.
Each release is submitted to Apple's notarization service. The notarization ticket is stapled into the .dmg, so verification works even when you're offline.
Auto-updates are signed with an ed25519 key Java Mantra Corp controls. The CentProof binary embeds the matching public key and refuses any update that doesn't verify.
Each GitHub Release page lists the SHA-256 of the .dmg. You can verify the download with shasum -a 256 before mounting.
CentProof never asks for, stores, or sees bank login credentials. Statements come in as PDFs you already have.
centproof.com sets no cookies and runs no analytics. The desktop app makes no telemetry calls. The 4 network behaviors listed below are the entire surface.
Verify it yourself
Compare your local download against the value published on the GitHub Release page for that version.
shasum -a 256 ~/Downloads/CentProof_*.dmg
Confirm the .app was signed by Java Mantra Corp and the signature is valid.
codesign --verify --verbose=2 \ /Applications/CentProof.app
The notarization ticket is stapled into the bundle. spctl will confirm the app is "accepted" by Gatekeeper.
spctl --assess --type execute --verbose \ /Applications/CentProof.app
Network behavior
Everything else — parsing, search, AI, reports, exports — is local.
Zero outbound network requests. Importing PDFs, searching, exporting, and using local AI never call the network.
GET https://centproof.com/updates/darwin/<currentVersion>. The response is a small JSON manifest plus an ed25519 signature; binaries are downloaded only when an update is actually available.
Only when you paste a license key or once per app launch after that. Calls api.lemonsqueezy.com directly — never proxied through CentProof.
Opens your default mail client to support@centproof.com. CentProof never silently sends mail.
If you opt into External AI mode in Preferences, the app calls the URL you typed in. Bundled (default) mode keeps everything on-device.
Payment and download
Both are needed for any web-distributed Mac app to function. Bank-statement contents do not flow through either; they stay on your Mac.
Role: Merchant of record for Pro Lifetime and Pro Monthly purchases. Handles checkout, payment, tax, and license-key issuance.
What they see: Whatever you provide at checkout — name, email, billing address, payment method. After purchase, the app calls LemonSqueezy directly to activate and re-validate your license. We never see your card number; LemonSqueezy never sees your statements.
Role: Hosts the signed .dmg and update payloads for download.
What they see: Standard download-request metadata. The .dmg itself is signed by Java Mantra Corp's Apple Developer ID and notarized by Apple — those signatures verify the binary regardless of where it was downloaded from.
Data flow
Email support@centproof.com. We respond within one business day and we're happy to walk through code-signing, network behavior, or anything else specific.