Progress tracking for matching decompilation projects, live at bytematch.dev.
ByteMatch reads the objdiff report your CI already builds, keeps its history, shows every unit on a grid, draws badges, and comments on pull requests.
[](https://bytematch.dev/OWNER/REPO)decomp.dev was the community's progress site, and it did a great deal for decompilation projects. Thank you to encounter for building and running it. It is being sunset: new projects can no longer register, and existing pages stay up for now.
ByteMatch replaces it. It is a clean-room implementation and contains no decomp.dev code. It serves
the same public URLs (/{owner}/{repo}.json, .svg, .png, the same query parameters), so a
project switches by changing the domain and keeps its history with a one-click import.
- No CI changes for projects that already upload
<VERSION>_reportartifacts (the dtk-template convention). Reports are read from successful runs on the default branch. - Project pages: one line of progress, then a grid of every unit (area = code size, filled green
by how much matches). Filter it like
camera <70% >10kb; click a unit for its functions. History, categories, the unit list, commits and badges are a click away. - Badges in SVG and PNG, drawn by ByteMatch itself, plus shields.io endpoint JSON.
- JSON API compatible with decomp.dev: project, history, measures and full reports.
- Pull request comments through a GitHub App: newly matched functions, regressions, measure changes. Webhooks also make new runs show up at once.
- Upload API with per-project tokens, for CI outside GitHub Actions.
- History you keep: import it from decomp.dev while it still serves it, upload saved history files, and download any project's history in the same format.
- Games, franchises and activity: projects naming the same game share a page with a combined progress chart, games group into franchises, and an activity feed shows milestones (first past 50%, 90%, a full match) and the week's biggest gains.
- Self-hostable: Next.js, PostgreSQL and a background worker. No Redis. Runs with pm2 or containers.
- On bytematch.dev, sign in with GitHub, open Manage and Add project. You need admin rights on the repository.
- Make sure CI uploads objdiff's
report.jsonas an artifact named<VERSION>_report. dtk-template projects already do. - Swap
decomp.devforbytematch.devin your README badges and run Import from decomp.dev on the project's Manage page.
Details: Getting started and Migrating from decomp.dev.
Requires Node 24, Yarn 4 and PostgreSQL 15 or newer.
git clone https://github.com/Veradictus/ByteMatch.git && cd ByteMatch
cp .env.example .env # set PUBLIC_URL, SECRET_KEY and the GitHub App settings
yarn install --immutable
yarn build
yarn db:migrate
yarn pm2:start # bytematch-web on 0.0.0.0:5000, and bytematch-workerOr with containers: docker compose --profile app up -d --build. Put nginx or Caddy with TLS in
front. See Self-hosting and the GitHub App guide.
| Document | For |
|---|---|
| Getting started | Maintainers: registering, CI artifacts, badges, PR comments |
| Migrating from decomp.dev | Maintainers: moving badges, links and history |
| API | Every public URL, parameter and JSON shape; the upload API |
| GitHub App | Operators: creating and configuring the App |
| Self-hosting | Operators: configuration, pm2, containers, nginx, upgrades |
| Architecture | Processes, data model, ingest flow, job queue |
| Contributing | Development setup, tests, code style, Conventional Commits |
See CONTRIBUTING.md. Work happens on master. Commits follow
Conventional Commits (feat(api): …, fix: …, docs: …),
one logical change each, and yarn check must pass. Never copy decomp.dev code.
- objdiff (MIT OR Apache-2.0) produces the reports.
ByteMatch vendors its
report.protoandchanges.proto(src/report/proto/, withLICENSE-MIT.objdiff) and follows its report parsing and migration rules. - DejaVu Sans (
src/assets/fonts/, Bitstream Vera license) draws the badges. - decomp.dev, for showing what a progress site for this community should be.
GPL-3.0. Vendored third-party files keep their own licenses.