Open, browser-based tools for reverse engineering and low-level tinkering. Each
tool is a pure Go engine compiled to WebAssembly and wrapped in a small vanilla
UI, built into a single self-contained HTML file that also opens offline from
file://.
These tools power tamper.space but carry no dependency on it. The platform layer (accounts, sharing, collaboration) is separate and speaks to any tool through the postMessage protocol below.
core/<tool>— the pure engine (no I/O, no UI), the single source of truth.engine/— the public contract: API version and the serialization envelope hosts persist (see docs/ENGINE-API.md).<tool>/wasm— asyscall/jsshim exposing the engine to the browser astamperEngines.<tool>(versioned, instantiable) plus the legacy globals the bundled UIs still use.<tool>/ui— the tool's HTML/CSS/JS.build— bundler that compiles each engine and inlines everything.theme— shared design tokens and fonts, embedded into each bundle.
go run ./hex/build -out distOpen dist/hex/index.html in a browser. TinyGo is used
when present for a much smaller bundle; otherwise the standard Go toolchain is
used (set TAMPER_WASM=go to force it).
A tool runs standalone. When embedded in an iframe by a host, it exposes its
state over postMessage (same origin only):
- tool → host
tamper:ready{tool, capabilities}on load. - host → tool
tamper:getState→ tool → hosttamper:state{data, title}. - host → tool
tamper:loadState{data}.
Dual-licensed: GNU General Public License v3.0 for open use, with commercial licenses available for proprietary embedding (see COMMERCIAL.md). Contributions require the sign-off and license grant described in CONTRIBUTING.md.