Get rejected here — not in review.

Upload a zip of your app. Aedis reads every file for the problems that sink App Store and Play submissions, then drafts each fix as a diff. You approve or reject every one yourself. It never changes anything on its own.

$29 FLAT · SMALL PROJECTS FREE · NO ACCOUNT · YOUR CODE IS NEVER STORED

§ 01EXHIBIT A · SAMPLE REPORTreal engine output, not a mockup

You get this report.

From auditing a deliberately broken demo app on the production engine. Severity, file, line, verdict, fix.

AUDIT / DEMO-EXPO-APP.ZIPENGINE: LIVE · VERIFIED BY OPENAI/GPT-5.6 SOL
CRITICALHardcoded secret in client codesrc/config.ts:2✓ CONFIRMED
CRITICALAuth credentials in insecure storagesrc/storage.ts:4✓ CONFIRMED
HIGHSensitive data over cleartext HTTPsrc/config.ts:1✓ CONFIRMED
CRITICALNo account / data deletion pathapp.json? UNCERTAIN
PROPOSED FIX — src/config.ts
- export const API_SECRET = "sk_live_51Hx7…";+ export const API_SECRET = process.env.API_SECRET ?? "";
One session: upload, read, approve, download. The bundle contains only the fixes you approved. No account.
The verdict column is a second model from a different vendor re-judging each finding against your actual source. It refused to confirm the last one. The report prints that instead of hiding it.
The diff you review is byte-for-byte the patch you download. Rejecting it changes nothing.
§ 02PROCEDUREyou hold the pen for all four steps
i.
Upload a zip

No account, no repo permissions. Just the archive of the app you were about to submit.

ii.
Every file is read

38 checks across security, bugs, App Store rules, and Play Store rules. Read, never executed.

iii.
Fixes arrive as diffs

Each one drafted in red and green: the exact line that goes, the exact line that replaces it.

iv.
You sign off, line by line

Approve or reject every change. Aedis never alters anything on its own.

§ 03THE ENGINEthree models, two vendors

Every finding crosses a vendor boundary before you read it.

A model grading its own findings has an obvious conflict of interest. So the judge works for a different company than the finder.

DUTYMODELVENDORCONDUCT
findsClaude Opus 4.8AnthropicReads every applicable file and surfaces issues across all four dimensions.
re-judgesGPT-5.6 SolOpenAI, a different vendor on purposeIndependently re-reads your actual source and re-judges every finding before it reaches the report.
answersClaude Sonnet 4.6AnthropicHandles your follow-up questions, grounded in what the audit actually found.
max · reservedClaude Fable 5 NOT YET ACTIVEAnthropic, the tier above OpusPlanned opt-in Max pass at roughly twice the cost. In round-one testing it caught issues Opus missed; it goes on active duty when that holds on real codebases, and not before. Model names earn this row — they don't trend into it.

? What the judge cannot confirm is marked uncertain and printed anyway. Silently deleting weak findings would make reports prettier and audits worse.

§ Every response is stamped engine: live | simulated. Beta audits may run a deterministic rule engine; when they do, the stamp says so, even though that is unflattering.

§ 04INDEX OF CHECKSa checklist with stable IDs

38 checks, printed in full.

The enumerable floor under the model pass. iOS and Android rules only run when your project actually targets them.

Security
sec-hardcoded-secretHardcoded secret in client codecritical
sec-insecure-token-storageAuth credentials in insecure storagecritical
sec-cleartext-trafficSensitive data over cleartext HTTPhigh
sec-injectionUnsanitized input in a query or commandhigh
sec-weak-cryptoWeak or misused cryptographymedium
sec-broken-access-controlMissing or inconsistent authorization on an endpointhigh
sec-vulnerable-dependencyDependency with a known vulnerabilityhigh
sec-redosRegex vulnerable to catastrophic backtracking (ReDoS)medium
sec-ssrfServer-side request to a user-controlled URL (SSRF)high
Bugs
bug-unhandled-rejectionUnhandled promise / async errormedium
bug-null-derefPossible null/undefined accessmedium
bug-race-stateState updated from stale valuelow
bug-resource-leakUnreleased resource or listenerlow
bug-toctouNon-atomic read-modify-write (race / TOCTOU)high
bug-logic-financialMoney/quantity logic flaw (negative, overflow, or double-applied)high
bug-mass-assignmentMass assignment / unfiltered object spread into an updatehigh
boot-missing-lockfileNo dependency lockfilemedium
boot-no-start-scriptNo documented start/dev scriptlow
boot-undocumented-envEnvironment variables used but undocumentedlow
iOS App Store
ios-5.1.1-vMissing in-app account deletion (5.1.1(v))critical
ios-5.1.1-iiGeneric permission usage string (5.1.1(ii))high
ios-3.1.1-iapDigital goods sold outside In-App Purchase (3.1.1)high
ios-5.1.2-attTracking without App Tracking Transparency (5.1.2)medium
ios-missing-usage-keyProtected API used without its Info.plist usage keycritical
ios-privacy-manifestMissing privacy manifest / undeclared Required-Reason APIhigh
ios-deprecated-uiwebviewDeprecated UIWebView (2.5.1)high
ios-encryption-exportMissing encryption export declarationmedium
ios-signin-with-appleThird-party login without Sign in with Apple (4.8)high
Google Play
android-data-deletionNo account/data deletion pathcritical
android-data-safetyData collection not matching Data safety formhigh
android-dangerous-permissionSensitive permission without clear usemedium
android-exported-componentExported component without protectionmedium
android-target-api-leveltargetSdkVersion below Google Play minimumcritical
android-restricted-permissionRestricted permission without approved usecritical
android-background-locationBackground location without prominent disclosurehigh
android-granular-mediaBroad storage instead of granular media permissionshigh
android-foreground-service-typeForeground service without a declared typehigh
android-accessibility-misuseAccessibilityService without a genuine accessibility featurehigh
§ 05 · CUSTODY OF YOUR CODE

How your code is handled

THE SAME FOUR GUARANTEES SHOWN INSIDE THE APP

  1. Processed in memory, never stored. Your archive is extracted and analyzed per request. There is no database, no upload bucket, and nothing retained after the response.
  2. Never used to train models. You keep all rights to your code and to the patches Aedis proposes for it. Neither Anthropic nor OpenAI trains on this API traffic.
  3. Never executed. Aedis reads your code; it does not run it. Analysis happens server-side, and no key or credential ever ships to your browser.
  4. Nothing applied without approval. The patch bundle is built from your approved list and nothing else. There is no auto-apply mode, and there will not be one.
CHECKABLE FROM YOUR OWN TERMINAL
$ curl -sI https://aedis.stackrift.dev | grep -i strict
strict-transport-security: max-age=31536000

$ curl -s -X POST …/api/audit -F project=@app.zip | jq .engine
"live" · it never lies about which
In writing: Privacy & Terms · SecurityStackrift · July 2026
§ 06TARIFF OF CHARGES · FILED IN ADVANCEsubject to public correction

Pricing, filed in the open.

One flat price to know what's wrong; fixes priced from the exact lines they touch. Printed here so you can hold us to them.

Audit, any project up to 150k lines$29 flat
Small projects, up to 5k linesfree, 1 a month · single-model
Fixes, priced from the exact lines being patchedthe quote is computed before any fix work runsfrom $5
Larger than 150k linesquoted by email

If these numbers move, the change lands on this page first.

§ 07QUESTIONS A SKEPTIC WOULD ASKanswered without hedging
What happens to my code?
Extracted in memory on the Aedis server, audited, discarded when the response is sent. On live audits it is transmitted to the model providers solely to perform your audit. They are named, with policy links, in the privacy terms.
Is it used to train models?
No. Neither Anthropic nor OpenAI trains on this API traffic, and Aedis keeps nothing to train anything on.
Will it change my code?
Never on its own. The download contains only what you explicitly approved, and you apply it to your repository yourself.
How is this different from a linter?
The 38checks above are the floor. Frontier models read your code the way a reviewer does, and a second vendor's model re-judges every model finding before you see it. A linter does none of that.
How big can my project be?
A 25 MB zip, around 150k lines self-serve. Every file is scanned by the static rules — secrets, dependencies, ReDoS, cross-file access control. The deep AI reasoning pass reads your highest-risk code first (auth, API, database, payments); on a very large codebase it covers the top slice within the audit's budget, and the result tells you exactly how many files and lines it reached. Past 150k, Aedis says so up front and quotes by email instead of timing out halfway.
What's free, and what costs money?
A small project — up to 5,000 lines — gets one free single-model audit a month. A full multi-model deep audit of any project up to 150k lines is $29 flat, charged once, no subscription. Fixes are quoted from the exact lines they patch, from $5. No account; no card stored between audits.

One flat price. Submit with receipts.

NO ACCOUNT · NO STORED CODE · NO SUBSCRIPTION