8. Come funziona dentro

8.4 Da dove arrivano gli strumenti

Le fonti ufficiali di ogni componente, le verifiche crittografiche, il download a mano e la tabella completa delle fonti.

Nell'app: «Strumenti»

In breve

  • Ogni componente arriva dalla fonte ufficiale del suo produttore, in HTTPS: niente mirror, niente copie di terzi.
  • Ogni file viene verificato con la sua impronta crittografica prima di essere usato; se non coincide, viene scartato.
  • Se un download non riesce, puoi scaricare il file con il browser e consegnarlo al kit, che lo verifica allo stesso modo.

Il percorso di un download

  1. ChiedeQual è l'ultima versione e qual è la sua impronta, alla fonte ufficiale.
  2. ScaricaIn un file .part nella cartella di lavoro; tre tentativi.
  3. VerificaCalcola l'impronta del file e la confronta con quella attesa.
  4. Estraezip, tar.gz, tar.xz, 7z o file singolo.
  5. SostituisceMette la cartella nuova al posto della vecchia, tutta insieme.
  6. ProvaEsegue il programma per controllare che risponda.
VerificaChe cosa vuol direEsempi
SHA-256, SHA-512, SHA3-256L'impronta del file deve essere quella pubblicata dal produttore (o fissata nel catalogo del kit).Python, Node.js, Go, Maven, Caddy, SQLite, l'editor, Pi, llama.cpp, i modelli locali
npm sha512L'impronta di integrità del registro npm.Claude Code, Codex
Authenticode (solo Windows)In più, la firma digitale del produttore sul programma, con la verifica della revoca.Claude Code, Visual C++ runtime

Quando un download non riesce: «a mano»

Se dopo tre tentativi il download fallisce (proxy che blocca, sito irraggiungibile), sotto la riga del componente compare un riquadro:

  1. Fai clic su «Scaricalo dal browser: <nome del file>»: si apre l'indirizzo esatto nel browser.
  2. Quando il file è scaricato, trascinalo nel riquadro o usa «sfoglia…».
  3. Il kit lo conserva e lo usa solo se la sua impronta è quella pubblicata; l'installazione riparte da sola («Aggiunto …: nuovo tentativo.»).

Il riquadro compare solo quando l'impronta del file è nota. I file consegnati e non usati vengono cancellati dopo 30 giorni.

GitHub e i limiti dell'API

Molti componenti sono pubblicati su GitHub. Senza accesso, l'API di GitHub consente 60 richieste l'ora; con l'account del kit (L'account GitHub del kit (6.1)) o con una variabile GITHUB_TOKEN del PC, 5.000. Il kit conserva le risposte e, se il limite è raggiunto, legge l'ultima versione direttamente dalle pagine di GitHub.

Altri servizi che l'app contatta

ServizioPerché
api.github.com/repos/nabre/atollo/releasesGli aggiornamenti di Atollo.
open-vsx.orgLe estensioni dell'editor.
api.anthropic.com · chatgpt.com · cloudcode-pa.googleapis.comI limiti dei piani degli agenti, con l'accesso salvato, solo in lettura e solo con la pagina AI aperta.
huggingface.coI modelli locali: la ricerca dei file GGUF e i download, che huggingface.co reindirizza alla sua CDN. Solo quando scarichi un modello; il token, se c'è, va solo a huggingface.co.
github.com/ggml-org/llama.cpp · github.com/earendil-works/piLe release di llama.cpp e di Pi, come per gli altri componenti pubblicati su GitHub (sono nella tabella delle fonti qui sotto).
github.com/nabre/atollo/issues«Segnala un problema» apre qui una segnalazione nuova nel browser, con versione e sistema nell'indirizzo. Lo apri tu, nel tuo browser: l'app non manda niente, e nulla arriva a GitHub finché non crei la segnalazione.
registry.npmjs.org · pypi.org · packagist.org…Solo quando lo chiedono i comandi dei progetti e dei framework.

Tabella completa delle fonti (39 componenti e 5 parti)

Per ogni componente: da dove il kit legge le versioni, da dove scarica il file, come lo verifica e dove lo mette. Le colonne descrivono Windows; dove macOS e Linux usano un'altra fonte, è scritta sotto l'indirizzo.

ComponenteVersioni daFile daVerificaIn data\apps\<sistema>\
PowerShell 7 (pwsh)api.github.com/repos/PowerShell/PowerShell/releases/latestPowerShell-<v>-win-(x64|arm64).zipSHA-256

GitHub Release asset.digest

pwsh\<linea>\pwsh.exe
GitHub CLI (gh)api.github.com/repos/cli/cli/releases/latestgh_<v>_windows_(amd64|arm64).zipSHA-256

GitHub Release asset.digest

gh\<linea>\bin\gh.exe
Editor (VSCodium Reh Web)Catalogo integrato (versione fissata 1.135.06055, D-58)github.com/VSCodium/vscodium/releases/download/<v>/vscodium-reh-web-win32-x64-<v>.tar.gz

macOS e Linux: vscodium-reh-web-<target>-<v>.tar.gz, SHA-256 fissato per target (nativo anche su ARM64)

SHA-256

SHA-256 cablato in components.json

vscodium-server\
ConPTY (conpty.dll + OpenConsole.exe)Catalogo integrato (versione fissata 1.25.260930003, D-148)api.nuget.org/v3-flatcontainer/microsoft.windows.console.conpty/<v>/microsoft.windows.console.conpty.<v>.nupkg

Solo Windows: su macOS e Linux il terminale usa il PTY del sistema

Authenticode + SHA

SHA-256 del pacchetto cablato in components.json (SHA-512 di NuGet); conpty.dll e OpenConsole.exe firmati Microsoft Corporation

conpty\
Claude Coderegistry.npmjs.org/@anthropic-ai/claude-code-win32-<arch>/latestCampo dist.tarball del pacchetto npmAuthenticode + SHA

Integrità npm sha512 + firma Authenticode Anthropic

claude\<linea>\claude.exe
Codex (OpenAI)registry.npmjs.org/@openai/codex/latest → /<ver>-win32-<arch>Campo dist.tarball del pacchetto specifico per architetturanpm sha512

Integrità npm dist.integrity (sha512-...)

codex\<linea>\bin\codex.exe
Antigravity (Google)antigravity-cli-auto-updater-974169037036.us-central1.run.app/manifests/windows_(amd64|arm64).jsonCampo url del manifesto JSON ufficiale

macOS e Linux: manifests/<os>_<arch>.json, archivio .tar.gz

SHA-512

SHA-512 (128 hex) dal campo sha512 del manifesto

antigravity\<linea>\agy.exe (via data\kit\bin\agy.cmd)
Pi (Earendil)api.github.com/repos/earendil-works/pi/releases/latestgithub.com/earendil-works/pi/releases/download/v<v>/pi-windows-<arch>.zip

macOS e Linux: pi-<os>-<arch>.tar.gz della stessa release

SHA-256

Digest SHA-256 di GitHub (o SHA256SUMS della release)

pi\<linea>\pi.exe
llama.cpp (llama-server)build bNNNNN fissata nel catalogo di Atollo (D-151)github.com/ggml-org/llama.cpp/releases/download/<b>/llama-<b>-bin-win-vulkan-<arch>.zip

Linux: llama-<b>-bin-ubuntu-vulkan-<arch>.tar.gz; macOS: llama-<b>-bin-macos-<arch>.tar.gz (Metal)

SHA-256

SHA-256 per piattaforma fissato nel catalogo (dal digest di GitHub)

llama\llama-server.exe
Git + Git Bash (PortableGit)api.github.com/repos/git-for-windows/git/releases/latestPortableGit-<v>-(64-bit|arm64).7z.exe (estratto in Rust)

macOS e Linux: GitHub desktop/dugite-native (dugite-native-v<v>-<sha>-<sistema>.tar.gz, .sha256 dell'asset), segue il kit

SHA-256

GitHub Release asset.digest

git\<linea>\cmd\git.exe e git\<linea>\bin\bash.exe
Python + pipraw.githubusercontent.com/astral-sh/python-build-standalone/latest-release/latest-release.jsoncpython-3.<minor>.<patch>+<date>-<triple>-install_only_stripped.tar.gzSHA-256

SHA-256 dall'elenco ufficiale SHA256SUMS

python\<linea>\python.exe (+ pip)
Node.js + npmnodejs.org/dist/index.json (LTS pari >= 18 + ultima major)nodejs.org/dist/<v>/node-<v>-win-<arch>.zipSHA-256

SHA-256 da nodejs.org/dist/<v>/SHASUMS256.txt

node\<linea>\node.exe
uv (uv, uvx, uvw)api.github.com/repos/astral-sh/uv/releases/latestuv-<triple>.zipSHA-256

GitHub Release asset.digest

uv\<linea>\uv.exe, uvx.exe, uvw.exe
PHP (Thread Safe)windows.php.net/downloads/releases/releases.json (+ archivi EOL 8.1..5.6)windows.php.net/downloads/releases/php-<v>-Win32-vs*-x64.zip

macOS e Linux: static-php-cli «bulk», archivi cli e fpm con SHA-256 fissato nel catalogo (8.4 e 8.5)

SHA-256

SHA-256 da releases.json (o tabella EOL verificata)

php\<linea>\php.exe
↳ Parte: Composergetcomposer.org/versions (canale stable o 2.2 LTS per PHP < 7.2.5)getcomposer.org/download/<v>/composer.pharSHA-256

SHA-256 da <url>.sha256sum

php\<linea>\composer.phar (+ composer.cmd)
↳ Parte: Bundle CA SSL (curl)curl.se/ca/cacert.pem.sha256curl.se/ca/cacert.pemSHA-256

SHA-256 da cacert.pem.sha256

php\<linea>\extras\ssl\cacert.pem
↳ Parte: Visual C++ RuntimeEstratto dal CAB vcRuntimeMinimum_amd64\cab1.cab se assenteaka.ms/vc14/vc_redist.x64.exe

Solo Windows

Authenticode + SHA

Firma Authenticode O=Microsoft Corporation su exe e vcruntime140.dll

tools\vcruntime\ (copiato in PHP, Apache, MongoDB)
Apache httpdapachelounge.com/download/ (scraping versione e checksum)apachelounge.com/download/VS<nn>/binaries/httpd-<v>-Win64-VS<nn>.zip

macOS e Linux: build del kit, github.com/nabre/atollo/releases/download/httpd-v<v>/httpd-<v>-<target>.tar.gz, SHA-256 fissato per target nel catalogo, PHP con php-fpm (D-116)

SHA-256

SHA-256 da <url>.txt (SHA256-Checksum for:)

apache\<linea>\bin\httpd.exe
Caddyapi.github.com/repos/caddyserver/caddy/releases?per_page=100Asset caddy_<v>_windows_amd64.zip dalla release GitHub ufficialeSHA-256

GitHub Release asset.digest (dalla 2.10.1), altrimenti SHA-512 da caddy_<v>_checksums.txt

caddy\<linea>\caddy.exe
Rust (rustup, cargo, clippy)static.rust-lang.org/dist/channel-rust-stable.toml ([pkg.rustc])static.rust-lang.org/rustup/dist/<triple>/rustup-init.exe

Host gnu su Windows x64, gnullvm su Windows ARM64 (con C/C++), msvc dalla pagina di Rust in Strumenti («Dettagli»); macOS e Linux: rustup con l'host nativo

SHA-256

SHA-256 da <url>.sha256

rust\cargo\bin\rustc.exe e rustup.exe
Go SDKgo.dev/dl/?mode=json (&include=all)go.dev/dl/go<v>.windows-(amd64|arm64).zipSHA-256

SHA-256 dal campo sha256 del JSON ufficiale

go\<linea>\bin\go.exe
Java JDK (Eclipse Temurin)api.adoptium.net/v3/info/available_releases + /v3/assets/latest/<major>/hotspotPacchetto .zip restituito dall'API AdoptiumSHA-256

SHA-256 da binary.package.checksum

java\<linea>\bin\java.exe
↳ Parte: Apache Mavenrepo.maven.apache.org/maven2/org/apache/maven/apache-maven/maven-metadata.xmlapache-maven-<v>-bin.zipSHA-512

SHA-512 da <url>.sha512

maven\bin\mvn.cmd
↳ Parte: Gradleservices.gradle.org/versions/currentCampo downloadUrl del JSON ufficialeSHA-256

SHA-256 da checksumUrl del JSON

gradle\bin\gradle.bat (via data\kit\bin\gradle.cmd)
Kotlin Compilerapi.github.com/repos/JetBrains/kotlin/releases?per_page=100Asset kotlin-compiler-<v>.zipSHA-256

GitHub asset.digest o <asset>.sha256

kotlin\<linea>\bin\kotlinc.bat
Android SDK + Command-line Toolsdeveloper.android.com/studio (tabella commandlinetools-win-*_latest.zip)dl.google.com/android/repository/commandlinetools-win-<build>_latest.zipSHA-256

SHA-256 pubblicato nella tabella ufficiale Android

android\cmdline-tools\latest\bin\sdkmanager.bat e adb.exe
.NET SDKbuilds.dotnet.microsoft.com/dotnet/release-metadata/releases-index.jsonArchivio .zip per rid=win-x64|win-arm64SHA-512

SHA-512 dal campo hash di releases.json

dotnet\<linea>\dotnet.exe (con junction SDK condivise)
Dart SDKstorage.googleapis.com/dart-archive/channels/stable/release/latest/VERSIONdartsdk-windows-<arch>-release.zipSHA-256

SHA-256 da <url>.sha256sum

dart\<linea>\bin\dart.exe
Zigziglang.org/download/index.jsonCampo tarball per (x86_64|aarch64)-windowsSHA-256

SHA-256 dal campo shasum del JSON

zig\<linea>\zig.exe
Juliajulialang-s3.julialang.org/bin/versions.jsonArchivio .zip per os=winnt, arch=x86_64SHA-256

SHA-256 dal campo sha256 di versions.json

julia\<linea>\bin\julia.exe
Bunapi.github.com/repos/oven-sh/bun/releasesAsset bun-windows-(x64|aarch64).zipSHA-256

GitHub asset.digest o SHASUMS256.txt

bun\<linea>\bun.exe
Denoapi.github.com/repos/denoland/deno/releasesAsset deno-(x86_64|aarch64)-pc-windows-msvc.zipSHA-256

GitHub asset.digest o <asset>.sha256sum

deno\<linea>\deno.exe
Typstapi.github.com/repos/typst/typst/releasesAsset typst-(x86_64|aarch64)-pc-windows-msvc.zipSHA-256

GitHub Release asset.digest

typst\<linea>\typst.exe
TinyTeX (LaTeX)api.github.com/repos/rstudio/tinytex-releases/releases/latestAsset TinyTeX-1-windows-v*.exe (7z SFX estratto in Rust)

macOS e Linux: TinyTeX-1-<os>-<arch>-v*.tar.xz (universale su macOS)

SHA-256

GitHub Release asset.digest

tinytex\bin\windows\tlmgr.bat e pdftex.exe
pnpm + yarn (corepack)registry.npmjs.org/pnpm/latest e /corepack/latestInstallato con npm-cli.js del Node.js del kitnpm sha512

Integrità del registro npm

data\npm-global\pnpm.cmd e yarn.cmd
CMake + NinjaGitHub API: Kitware/CMake e ninja-build/ninja (releases/latest)cmake-*-windows-(x86_64|arm64).zip e ninja-win(arm64).zipSHA-256

GitHub Release asset.digest

cmake\<linea>\bin\cmake.exe e tools\ninja.exe
C/C++ (llvm-mingw)api.github.com/repos/mstorsjo/llvm-mingw/releases/latestAsset llvm-mingw-*-ucrt-(x86_64|aarch64).zip

macOS e Linux: shim cc, c++, gcc, g++, clang sullo zig cc del kit (richiede Zig) e GNU make da conda-forge, non rilocabile

SHA-256

GitHub Release asset.digest

cc\bin\clang.exe (+ make.cmd)
Ruby + Bundlerapi.github.com/repos/oneclick/rubyinstaller2/releases?per_page=30Asset rubyinstaller-<v>-(x64|arm).7z

macOS e Linux: conda-forge ruby (3.2 e successive) con micromamba, non rilocabile

SHA-256

GitHub Release asset.digest

ruby\<linea>\bin\ruby.exe
R (conda-forge + OpenBLAS)api.anaconda.org/package/conda-forge/r-base + mamba-org/micromamba-releasesmicromamba-win-64 + pacchetti r-base e libblas=*=*openblas

Windows ARM64: i pacchetti win-64 in emulazione x64, da micromamba nativo (--platform win-64). macOS e Linux: gli stessi pacchetti per osx-* e linux-*, lanciatori in kit-bin, non rilocabile

SHA-256

SHA-256 di micromamba + SHA-256 pacchetti conda-forge

r\<linea>\bin\R.cmd e Rscript.cmd
MySQL Community ServerLinee 8.4 e 9.7 LTS fissate nel catalogo (sha256ByLine)cdn.mysql.com/Downloads/MySQL-<linea>/mysql-<v>-winx64.zipSHA-256

SHA-256 fissato per linea e target dopo la firma GPG di Oracle

mysql\<linea>\bin\mysqld.exe e mysql.exe
MongoDB + mongosh + Database Toolsdownloads.mongodb.org/current.json, GitHub mongodb-js/mongosh, tools/db/release.jsonArchivi .zip Windows x64 di mongod, mongosh e mongodump/mongorestore

macOS: archivi del fornitore; Linux: server da conda-forge (non rilocabile), mongosh generico, Database Tools per distribuzione

SHA-256

SHA-256 dai JSON MongoDB + asset.digest GitHub per mongosh

mongodb\<linea>\bin\mongod.exe, mongosh\, mongodb-tools\
phpMyAdmin (per MySQL)www.phpmyadmin.net/home_page/version.jsonfiles.phpmyadmin.net/phpMyAdmin/<v>/phpMyAdmin-<v>-all-languages.zipSHA-256

SHA-256 dal file .sha256 ufficiale + controllo sintattico php -l

phpmyadmin\<linea>\index.php
mongo-express (per MongoDB)versione fissata nel catalogo di Atollo (build del kit, D-147)github.com/nabre/atollo/releases/download/mongo-express-v<v>/mongo-express-<v>.zipSHA-256

SHA-256 fissato nel catalogo (o il .sha256 della release del kit); build in CI dal commit fissato di mongo-express

mongo-express\<linea>\app.js
SQLite CLIsqlite.org/download.html (righe CSV PRODUCT,...)sqlite.org/<anno>/sqlite-tools-win-(x64|arm64)-<v>.zip

Linux ARM64: conda-forge sqlite (sqlite.org non pubblica gli strumenti), non rilocabile; Windows ARM64: lo zip x64 se manca quello arm64

SHA3-256

SHA3-256 pubblicato nella riga PRODUCT della pagina ufficiale

sqlite\<linea>\sqlite3.exe
Sotto il cofano
  • Cartella di lavoro: <temporanei del sistema>\Atollo\<id del kit>\setup, oppure data\tmp\setup se il disco di sistema ha meno di 4 GB liberi o non si può scrivere.
  • Tre tentativi a 5 e 10 secondi di distanza; il download riparte da capo a ogni tentativo.
  • Connessioni con il proxy delle Impostazioni e con i certificati del sistema più quelli di «Certificati aggiuntivi (file PEM)»: l'ispezione HTTPS di un firewall funziona se il suo certificato è installato nel PC o è in quel file.
  • La versione installata viene scritta in data\app\versions\<sistema>\<componente>.txt.