Getting started
1. Register your project
Log in with GitHub and add your project. You pick the repository from the public repositories you can push to, and a cover image is required.
2. Keep the API key
The API key is shown once, right after creating the project. Store it as a secret in your CI, for example DECOMP_API_KEY. You can generate a new one at any time from the project's dashboard page; the old one stops working immediately.
3. Send a report
The smallest report only has code totals:
curl -X POST https://decompilati.onl/api/v1/progress \
-H "Authorization: Bearer $DECOMP_API_KEY" \
-H "Content-Type: application/json" \
--data '{ "code": { "total": 4194304, "matching": 1887436, "non_matching": 209715 } }'Responses are JSON:
{"status":"updated"}— the report was stored.{"status":"unchanged"}— identical to the current progress, so nothing was stored.{"status":"history"}— an older, timestamped report added to the history (see backfilling).4xx {"error":"…"}— something is wrong with the key or the report; the message says what.
See Report format for everything a report can contain, or objdiff & GitHub App if your project uses objdiff.
4. Automate it in CI
Report from your main branch only, so pull requests don't change the public numbers. A GitHub Actions step:
- name: Report progress
if: github.ref == 'refs/heads/main'
run: |
python3 tools/progress.py --json > progress.json
curl --fail -sS -X POST "$BASE/api/v1/progress?commit=$GITHUB_SHA" \
-H "Authorization: Bearer ${{ secrets.DECOMP_API_KEY }}" \
-H "Content-Type: application/json" \
--data @progress.json
env:
BASE: https://decompilati.onlAfter each report, the project page also lists the commits since the previous one, fetched from GitHub.