# Tasks - [x] 1. Hosted installer (`tools/public/fpagent/install.sh`): resolve the host architecture from `uname -m` (`x86_64`/`i386`, else die) before any download, and pass it to the asset picker. Verify: `bash -n install.sh`; a stubbed `uname` printing `i686` reaches the metadata fetch, and one printing `aarch64` dies without fetching. - [x] 2. Hosted installer: pick `-ubuntu--.tar.gz` first, then `-linux-.tar.gz`, and make the "no compatible bundle" message name the host architecture. Verify: with a release offering only `fpagent--linux-i386.tar.gz`, a stubbed i686 host requests that asset; with only `-linux-x86_64`, the same host fails and installs nothing. - [x] 3. Hosted installer: derive the version from the asset name for every supported architecture (`linux-x86_64`, `linux-i386`, `ubuntu--x86_64`). Verify: an i386 asset name yields the git hash, not an empty string. - [x] 4. Hosted installer: correct the help text — service and self-update are on by default; list `--no-service`, `--no-updates`, `--update-base`, and keep the note that options are forwarded to the bundle installer. Verify: `install.sh --help` mentions the three flags and no longer implies `--enable-service` is required. - [x] 5. Tests (`tools/test/fpagent-install.test.js`): stub `uname` on `PATH` and assert i386 selection, cross-architecture rejection, and i386 version parsing. Verify: `node --test tools/test/fpagent-install.test.js` passes. - [x] 6. Docs (`README.md`): installer section notes x86_64 and i386 bundles and the on-by-default service/self-update. Verify: reading the section, no flag claims contradict `install.sh --help`.