333 This site's node is awake

Take the program

333 is a small program you leave running on a computer you can spare, where it answers whenever another copy of it knocks.

On Linux or a Mac

In a terminal. The installer picks the file for the machine it runs on, checks it against the release's SHA256SUMS, and puts it at ~/.local/bin/333. It starts nothing and needs no password. Read it first; it is short.

curl -fsSL https://the333.dev/install.sh | sh

For Light, end it with sh -s -- --light in place of sh.

Or by hand, without the installer

The same steps, one at a time. The grep line prints OK before anything moves, and nothing after it runs if it does not.

cd "$(mktemp -d)"
base=https://github.com/needmoretruth/333/releases/latest/download
curl -fLO "$base/333-x86_64-linux"
curl -fLO "$base/SHA256SUMS"
grep -E ' \*?333-x86_64-linux$' SHA256SUMS | sha256sum -c - &&
  chmod +x 333-x86_64-linux &&
  mkdir -p ~/.local/bin && mv 333-x86_64-linux ~/.local/bin/333

That is Linux on x86-64. On a Mac, use shasum -a 256 in place of sha256sum, and the Mac file from the table below; anywhere else, the name from the table.

On Windows

In PowerShell. The installer fetches the Windows file, checks it against the release's SHA256SUMS, and puts it at %LOCALAPPDATA%\Programs\333\333.exe. It starts nothing, needs no administrator, and adds that folder to your PATH only if you add -AddToPath. Read it first; it is short.

irm https://the333.dev/install.ps1 | iex

For Light, run it this way instead. -AddToPath goes at the end in the same way.

& ([scriptblock]::Create((irm https://the333.dev/install.ps1))) -Light
Or by hand, without the installer

The same steps, one at a time. The file is moved into place only if its hash is the one SHA256SUMS gives, and the last line says which happened.

$base = "https://github.com/needmoretruth/333/releases/latest/download"
$file = "333-x86_64-windows.exe"
$dir = "$env:LOCALAPPDATA\Programs\333"
Invoke-WebRequest -UseBasicParsing "$base/SHA256SUMS" -OutFile "$env:TEMP\SHA256SUMS"
Invoke-WebRequest -UseBasicParsing "$base/$file" -OutFile "$env:TEMP\$file"
$want = (Select-String "[ *]$file`$" "$env:TEMP\SHA256SUMS").Line.Split(" ")[0]
if ((Get-FileHash "$env:TEMP\$file").Hash -eq $want) { New-Item -ItemType Directory -Force $dir | Out-Null; Move-Item -Force "$env:TEMP\$file" "$dir\333.exe"; "OK: $dir\333.exe" } else { "It does not match SHA256SUMS. Nothing was installed." }

Every file

For anybody the guess above is wrong for, or who would rather take the file through the browser. Standard has the terminal screen, Light does not, and both carry Tor. They run from 15 megabytes on a Mac to 24 on 64-bit ARM.

Your machineStandard, then Light
Linux, desktop or server Standard 333-x86_64-linux Light 333-light-x86_64-linux
Raspberry Pi 3, 4 or 5 on 64-bit, and other 64-bit ARM Linux Standard 333-aarch64-linux Light 333-light-aarch64-linux
Raspberry Pi Zero, or any Pi on 32-bit Standard 333-armv6-linux Light 333-light-armv6-linux
Mac, Apple silicon Standard 333-aarch64-macos Light 333-light-aarch64-macos
Mac, Intel Standard 333-x86_64-macos Light 333-light-x86_64-macos
Windows Standard 333-x86_64-windows.exe Light 333-light-x86_64-windows.exe

A file taken through the browser still has to be checked against SHA256SUMS, made executable, and put on your PATH, which is what the commands above do. Nothing here is signed by a developer certificate, so a Mac or Windows may refuse to open a file that came through the browser until you tell it otherwise. If none of these fits, or you would rather not run a file somebody else built, the repository says how to build it on Ubuntu, Debian, Fedora, Arch, macOS and Windows.

Then, in order

  1. Be handed the file. This site's node is awake at all hours:
    333 join 333:158.69.112.10:3333
    The first join also makes your node's name, a key whose name begins with 333, which takes a moment. Any address on the board works the same way.
  2. Start it.
    333 start
    It runs in the background from now on, after you log out and after a reboot. If it says shut, your router keeps others out: 333 start --tor needs no router change.
  3. Check on it. 333 status says whether it is running, where others can reach it, and how many of us are answering. 333 logs shows what it wrote.
  4. Stop it whenever you want: 333 stop. It stays stopped after a reboot until you run 333 start again.

To watch it work instead, 333 run runs it in this terminal with its screen; q stops it. 333 on its own says what state your node is in and what to type next, and 333 help lists every command.

If nobody is on the board and this site's node is gone, somebody has to be first: 333 begin refuses while anybody is there, and otherwise starts a line of your own, with nobody having signed for it, which anybody reading your record can see.

Nothing starts until you start it.

The installer puts one file in place and runs nothing. Your node first answers anybody, and first leaves its address at the meeting point, when you run 333 start or 333 run yourself, and that command is the moment you agreed.