AppLedger honest check
Honest security feedback, in plain language, for apps people build with AI tools such as Claude Code, Codex, Cursor and Lovable.
AppLedger checks your app folder with independent scanners and explains what they find in everyday words: what is wrong, why it matters, and what to do. It also writes a fix request you can hand straight to the AI tool that built the app, then checks again.
What it checks
| Scanner | Finds |
|---|---|
| Trivy | Leaked passwords and keys, outdated libraries with known security problems, risky container setup |
| Opengrep | Dangerous code patterns: SQL injection, command injection, unsafe data loading, debug mode left on |
| SonarQube (optional, local mode) | Code quality and more security hotspots, if you already run a SonarQube server |
Each run produces, in <your-app>/.appledger/:
report.html: a score, who may use the app right now (only you, your team, the whole company), and every problem in plain wordsfix-prompt.md: a ready-made fix request for your coding agentfindings.json: the same findings for tools and dashboards
AI effort behind the app
Every check also reports how many AI tokens went into the app and what they would cost at API list prices. It reads the coding agents' own logs on your computer (Claude Code in ~/.claude/projects, Codex in ~/.codex/sessions), counts sessions that ran in the app's folder, and prices each reply by model, including cache reads and writes. These logs never leave your computer. On a flat-rate plan (Claude Pro, Max or Team) you pay your plan price instead, so the figure shows the work's value at API rates.
python -m appledger path/to/your-app --ai-cost
Codex support follows Codex's documented log format and hasn't been tested against real Codex logs yet.
Two ways to run
| Mode | What you install | Where your code goes |
|---|---|---|
| Hosted (default) | Only this package | Source files are zipped, sent over HTTPS to the AppLedger service, scanned and deleted right after |
Local (--local or APPLEDGER_MODE=local) |
Also Trivy, Opengrep and the Opengrep rules | Nowhere: everything runs on your computer |
Use it
pip install appledger
python -m appledger path/to/your-app
Add it to Claude Code as an MCP server:
claude mcp add appledger -- uvx --from appledger appledger-mcp
Then ask: "Is my app safe to share?" Or install the full plugin with the guided skill from plugin/.
Local mode setup
- Trivy:
winget install AquaSecurity.Trivy(Windows) orbrew install trivy(Mac) - Opengrep: download from the releases page and put it on your PATH
- Rules:
git clone --depth 1 https://github.com/opengrep/opengrep-rules.git ~/.appledger/opengrep-rules - Check:
python -m appledger --doctor
Repository layout
| Path | What |
|---|---|
src/appledger/scanner.py |
Scanners, plain-language translation, report and fix request |
src/appledger/client.py |
Sends a project to the hosted service |
src/appledger/service.py |
Server side: unpacks an upload safely and scans it |
src/appledger/server.py |
Local MCP server used by the plugin |
plugin/ |
Claude Code / Codex plugin with the check-my-app skill |
tests/mcp_smoke.py |
Calls every MCP tool like an agent would |
License
MIT. The Opengrep community rules used by the scanner have their own license (Commons Clause); check it before using them in a paid service.
Metadata
Release files for appledger 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| appledger-0.1.0.tar.gz | 26.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| appledger-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 55.2 kB
Release files / appledger-0.1.0.tar.gz
| Download URL | appledger-0.1.0.tar.gz |
|---|---|
| Size | 26.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d622ea7fe81f01bfcdbbdbaef9fdec3389f663c667b9a9c57973abc577ff5542
|
|
BLAKE2b-256 checksum How to use checksums |
d7d5d5fde9232e82b388c4e3bbd48e463b87b0e0a53e1b84031a658c94a97f8b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / appledger-0.1.0-py3-none-any.whl
| Download URL | appledger-0.1.0-py3-none-any.whl |
|---|---|
| Size | 28.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ff5304fe91604e30d5a20d413791c000681a86910f2f1c321c9e8f73d16f72ac
|
|
BLAKE2b-256 checksum How to use checksums |
9b83d0f4bc972e70e5d0a5b85b978b8b47a83cb13a545ef2fe512b18fe5e578a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency log