Platform Compatibility And Verification Boundaries

August 14, 2026 · View on GitHub

English | 中文

SmartPerfetto has four distribution/runtime families, with additional product entry points inside those families. Host OS, actual runtime OS, and release evidence are not interchangeable. Docker Desktop on macOS still runs a Linux container, and a cross-built Windows archive is not evidence that the archive started successfully on Windows.

EntryRecommended host / targetCPU architecture boundaryRuntime bundledUpdate pathCurrent evidence category
Source Web (./start.sh)macOS and Linux; use WSL2 for native Windows developmentConstrained by Node.js 24, Go, and current native dependenciesNo; uses host Node.js and prepares the pinned trace processorSynchronize Git, then restartSource build, readiness, and repository gates
npm CLI (smp)macOS, Linux, or Windows shells supported by Node.js 24Linux x64, macOS arm64, and Windows x64 bundle trace processor; other hosts use a pinned download and may be unsupportedCLI runtime is in the npm package; no Web launcherInstall an explicit newer npm versionnpm pack contract plus real empty-directory install smoke
Docker imageAny Docker host that can run the compatible Linux container; the actual runtime is LinuxPublished images are linux/amd64 and linux/arm64Yes; Node, backend, committed UI, and pinned trace processorPull an explicit tag and recreate the containerImage build/health plus published tag/manifest acceptance
Portable archiveWindows 10 / Windows Server 2016 or newer on x64, macOS arm64 13.5+, or Linux x64 glibc 2.34+ on the matching target; musl systems such as Alpine are unsupportedEach archive supports only the target declared by its filename and manifest; Windows and macOS minimum versions are recorded in the manifest, and macOS also follows the packaged LSMinimumSystemVersionYes; launcher, Node, native dependencies, backend, committed UI, and pinned trace processorDownload the new archive and follow platform data migration/retention guidanceStatic package contract + full-payload ELF/Mach-O minimum-version audit + matching-target exact-archive runtime smoke + GitHub release acceptance

Evidence Categories

  1. Packaged/static contract verifies version, target, manifest, layout, pinned dependencies, and static signatures. It finds malformed archives but does not prove target-OS startup.
  2. Target-native runtime smoke runs the same final bytes on the declared OS/architecture and checks 127.0.0.1 health, bundled runtimes, a minimal trace-processor query, controlled shutdown, and port release.
  3. Published-surface acceptance verifies immutable versions, remote digests, tag/manifests, or empty-directory installs on the distribution surface. A local build cannot substitute for this evidence.

When one layer is missing, report only the layers that were actually completed. A Windows/Linux cross-build is not a Windows/Linux runtime smoke, and the Docker host OS is not the container target.

The Windows guide is authoritative for user operations. The current public v1.4.0 Windows x64 final archive ran on a Windows Server 2025 runner and proved bundled runtimes, health, a minimal trace-processor query, shutdown, and port release. That is not manual acceptance of Windows 10/11 desktop behavior, SmartScreen, or Provider UI. Future archive gates also require real SQLite/sodium loading, a local Provider lifecycle, and a Windows DPAPI SecretStore probe; they become evidence only after the matching final archive passes them.

Network Binding Boundary

Source Web binds both services to IPv4 loopback 127.0.0.1 by default. A maintainer can explicitly expose the source frontend with SMARTPERFETTO_FRONTEND_BIND_HOST; doing so changes the local security boundary, regardless of whether logs or access URLs still use loopback. The portable launcher fixes both service bind hosts to 127.0.0.1 instead of inheriting ambient bind-host variables, so provider and trace data are not accidentally exposed. Docker binds to 0.0.0.0 inside the container, while the compose publish host controls host exposure and defaults to host 127.0.0.1.

Sources Of Truth

Application update checks report an available version and the recommended action. They do not replace a running source checkout, npm package, Docker container, or portable directory.