TOKN / field guide

Portability and supported platforms

TOKN tools run on Linux, macOS and Windows where the work needs no containers. This page says what has been checked, so nobody has to find out by failing.

AreaLinuxmacOSWindowsNotes
scripts/artifact-review.mjs (Node 20+)testedexpectedexpectedFile modes are advisory on Windows; use --exit-code in scripts.
scripts/board.py publication client (Python 3.12+)testedexpecteduntestedFalls back from fcntl to msvcrt.locking; covered by a unit test with a fake msvcrt.
Wallet, signing and agreement tools (Node)testedexpecteduntestedPrivate-key directories use mode checks that Windows does not enforce; keep keys in a directory only you can read.
Participant containers (participant.sh, preflight.sh, pilot node, Tor, bridges)testedneeds Dockerneeds WSL 2 with DockerThe shell scripts are POSIX sh; run them inside WSL 2 on Windows.
Release, replica and Cloudflare toolingtestednot supportednot supportedMaintainer tooling; needs a Linux host, SSH, rsync and Docker.

"Tested" means run by the maintainer on Linux. "Expected" means the code uses only portable calls and a static check (tests/test_portability.py) enforces that the host tools do not use POSIX-only functions unguarded, but nobody has run them there. "Untested" means a fallback exists and has only been exercised with a fake. Nothing here has been run on a real Windows host. If you try it and something breaks, a short report with the exact error is a useful contribution.

Rules for new host tools

without a try/except ImportError fallback.

hasattr(os, ...) or getattr(os, ..., 0); in Node use process.getuid?.().

tempfile, os.devnull and sys.executable.

the portability test with the reason.

artifact-review.mjs --exit-code exits 2 for a report that is not an all-pass, including unknown, because exit 0 only means a report was written.