8. Comment il fonctionne à l'intérieur
8.4 D'où viennent les outils
Les sources officielles de chaque composant, les vérifications cryptographiques, le téléchargement à la main et le tableau complet des sources.
Dans l'application: «Outils»
En bref
- Chaque composant vient de la source officielle de son éditeur, en HTTPS : pas de miroirs, pas de copies de tiers.
- Chaque fichier est vérifié avec son empreinte cryptographique avant d'être utilisé ; si elle ne correspond pas, il est écarté.
- Si un téléchargement échoue, vous pouvez télécharger le fichier avec le navigateur et le remettre au kit, qui le vérifie de la même façon.
Le parcours d'un téléchargement
- DemandeÀ la source officielle, quelle est la dernière version et quelle est son empreinte.
- TéléchargementDans un fichier .part dans le dossier de travail ; trois tentatives.
- VérificationCalcule l'empreinte du fichier et la compare avec celle attendue.
- Extractionzip, tar.gz, tar.xz, 7z ou fichier unique.
- RemplacementMet le nouveau dossier à la place de l'ancien, d'un seul coup.
- TestExécute le programme pour contrôler qu'il répond.
| Vérification | Ce que cela veut dire | Exemples |
|---|---|---|
| SHA-256, SHA-512, SHA3-256 | L'empreinte du fichier doit être celle publiée par l'éditeur (ou fixée dans le catalogue du kit). | Python, Node.js, Go, Maven, Caddy, SQLite, l'éditeur, Pi, llama.cpp, les modèles locaux |
| npm sha512 | L'empreinte d'intégrité du registre npm. | Claude Code, Codex |
| Authenticode (Windows uniquement) | En plus, la signature numérique de l'éditeur sur le programme, avec la vérification de la révocation. | Claude Code, Visual C++ runtime |
Quand un téléchargement échoue : « à la main »
Si le téléchargement échoue après trois tentatives (proxy qui bloque, site injoignable), un panneau apparaît sous la ligne du composant :
- Cliquez sur « Téléchargez-le dans le navigateur : <nom du fichier> » : l'adresse exacte s'ouvre dans le navigateur.
- Quand le fichier est téléchargé, faites-le glisser dans le panneau ou utilisez « parcourez… ».
- Le kit le conserve et ne l'utilise que si son empreinte est celle publiée ; l'installation reprend toute seule (« … ajouté : nouvel essai. »).
Le panneau n'apparaît que quand l'empreinte du fichier est connue. Les fichiers remis et non utilisés sont supprimés après 30 jours.
GitHub et les limites de l'API
Beaucoup de composants sont publiés sur GitHub. Sans connexion, l'API de GitHub permet 60 requêtes par heure ; avec le compte du kit (Le compte GitHub du kit (6.1)) ou avec une variable GITHUB_TOKEN du PC, 5 000. Le kit conserve les réponses et, si la limite est atteinte, lit la dernière version directement dans les pages de GitHub.
Autres services que l'application contacte
| Service | Pourquoi |
|---|---|
api.github.com/repos/nabre/atollo/releases | Les mises à jour d'Atollo. |
open-vsx.org | Les extensions de l'éditeur. |
api.anthropic.com · chatgpt.com · cloudcode-pa.googleapis.com | Les limites des forfaits des agents, avec la connexion enregistrée, en lecture seule et seulement avec la page IA ouverte. |
huggingface.co | Les modèles locaux : la recherche des fichiers GGUF et les téléchargements, que huggingface.co redirige vers son CDN. Seulement quand vous téléchargez un modèle ; le jeton, s'il y en a un, ne va qu'à huggingface.co. |
github.com/ggml-org/llama.cpp · github.com/earendil-works/pi | Les releases de llama.cpp et de Pi, comme pour les autres composants publiés sur GitHub (ils sont dans le tableau des sources ci-dessous). |
github.com/nabre/atollo/issues | « Signaler un problème » ouvre ici une nouvelle issue dans le navigateur, avec la version et le système dans l'adresse. C'est vous qui l'ouvrez, dans votre navigateur : l'application n'envoie rien, et rien n'arrive à GitHub tant que vous ne créez pas l'issue. |
registry.npmjs.org · pypi.org · packagist.org… | Seulement quand les commandes des projets et des frameworks le demandent. |
Tableau complet des sources (39 composants et 5 parties)
Pour chaque composant : d'où le kit lit les versions, d'où il télécharge le fichier, comment il le vérifie et où il le met. Les colonnes décrivent Windows ; quand macOS et Linux utilisent une autre source, elle est écrite sous l'adresse.
| Composant | Versions depuis | Fichiers depuis | Vérification | Dans data\apps\<système>\ |
|---|---|---|---|---|
| PowerShell 7 (pwsh) | api.github.com/repos/PowerShell/PowerShell/releases/latest | PowerShell-<v>-win-(x64|arm64).zip | SHA-256 GitHub Release asset.digest | pwsh\<ligne>\pwsh.exe |
| GitHub CLI (gh) | api.github.com/repos/cli/cli/releases/latest | gh_<v>_windows_(amd64|arm64).zip | SHA-256 GitHub Release asset.digest | gh\<ligne>\bin\gh.exe |
| Editor (VSCodium Reh Web) | Catalogue intégré (version figée 1.135.06055, D-58) | github.com/VSCodium/vscodium/releases/download/<v>/vscodium-reh-web-win32-x64-<v>.tar.gzmacOS et Linux : vscodium-reh-web-<target>-<v>.tar.gz, SHA-256 fixé par cible (natif aussi sur ARM64) | SHA-256 SHA-256 intégré dans components.json | vscodium-server\ |
| ConPTY (conpty.dll + OpenConsole.exe) | Catalogue intégré (version figée 1.25.260930003, D-148) | api.nuget.org/v3-flatcontainer/microsoft.windows.console.conpty/<v>/microsoft.windows.console.conpty.<v>.nupkgWindows uniquement : sur macOS et Linux le terminal utilise le PTY du système | Authenticode + SHA SHA-256 du paquet intégré dans components.json (SHA-512 de NuGet) ; conpty.dll et OpenConsole.exe signés Microsoft Corporation | conpty\ |
| Claude Code | registry.npmjs.org/@anthropic-ai/claude-code-win32-<arch>/latest | Champ dist.tarball du paquet npm | Authenticode + SHA Intégrité npm sha512 + signature Authenticode Anthropic | claude\<ligne>\claude.exe |
| Codex (OpenAI) | registry.npmjs.org/@openai/codex/latest → /<ver>-win32-<arch> | Champ dist.tarball du paquet spécifique à l'architecture | npm sha512 Intégrité npm dist.integrity (sha512-...) | codex\<ligne>\bin\codex.exe |
| Antigravity (Google) | antigravity-cli-auto-updater-974169037036.us-central1.run.app/manifests/windows_(amd64|arm64).json | Champ url du manifeste JSON officielmacOS et Linux : manifests/<os>_<arch>.json, archive .tar.gz | SHA-512 SHA-512 (128 hex) depuis le champ sha512 du manifeste | antigravity\<ligne>\agy.exe (via data\kit\bin\agy.cmd) |
| Pi (Earendil) | api.github.com/repos/earendil-works/pi/releases/latest | github.com/earendil-works/pi/releases/download/v<v>/pi-windows-<arch>.zipmacOS et Linux : pi-<os>-<arch>.tar.gz de la même release | SHA-256 Digest SHA-256 de GitHub (ou SHA256SUMS de la release) | pi\<ligne>\pi.exe |
| llama.cpp (llama-server) | build bNNNNN fixée dans le catalogue d'Atollo (D-151) | github.com/ggml-org/llama.cpp/releases/download/<b>/llama-<b>-bin-win-vulkan-<arch>.zipLinux : llama-<b>-bin-ubuntu-vulkan-<arch>.tar.gz ; macOS : llama-<b>-bin-macos-<arch>.tar.gz (Metal) | SHA-256 SHA-256 par plateforme fixé dans le catalogue (depuis le digest de GitHub) | llama\llama-server.exe |
| Git + Git Bash (PortableGit) | api.github.com/repos/git-for-windows/git/releases/latest | PortableGit-<v>-(64-bit|arm64).7z.exe (extrait en Rust)macOS et Linux : GitHub desktop/dugite-native (dugite-native-v<v>-<sha>-<système>.tar.gz, .sha256 de l'asset), suit le kit | SHA-256 GitHub Release asset.digest | git\<ligne>\cmd\git.exe et git\<ligne>\bin\bash.exe |
| Python + pip | raw.githubusercontent.com/astral-sh/python-build-standalone/latest-release/latest-release.json | cpython-3.<minor>.<patch>+<date>-<triple>-install_only_stripped.tar.gz | SHA-256 SHA-256 depuis la liste officielle SHA256SUMS | python\<ligne>\python.exe (+ pip) |
| Node.js + npm | nodejs.org/dist/index.json (LTS paires >= 18 + dernière majeure) | nodejs.org/dist/<v>/node-<v>-win-<arch>.zip | SHA-256 SHA-256 depuis nodejs.org/dist/<v>/SHASUMS256.txt | node\<ligne>\node.exe |
| uv (uv, uvx, uvw) | api.github.com/repos/astral-sh/uv/releases/latest | uv-<triple>.zip | SHA-256 GitHub Release asset.digest | uv\<ligne>\uv.exe, uvx.exe, uvw.exe |
| PHP (Thread Safe) | windows.php.net/downloads/releases/releases.json (+ archives EOL 8.1..5.6) | windows.php.net/downloads/releases/php-<v>-Win32-vs*-x64.zipmacOS et Linux : static-php-cli « bulk », archives cli et fpm avec SHA-256 fixé dans le catalogue (8.4 et 8.5) | SHA-256 SHA-256 depuis releases.json (ou table EOL vérifiée) | php\<ligne>\php.exe |
| ↳ Partie : Composer | getcomposer.org/versions (canal stable ou 2.2 LTS pour PHP < 7.2.5) | getcomposer.org/download/<v>/composer.phar | SHA-256 SHA-256 depuis <url>.sha256sum | php\<ligne>\composer.phar (+ composer.cmd) |
| ↳ Partie : Bundle CA SSL (curl) | curl.se/ca/cacert.pem.sha256 | curl.se/ca/cacert.pem | SHA-256 SHA-256 depuis cacert.pem.sha256 | php\<ligne>\extras\ssl\cacert.pem |
| ↳ Partie : Visual C++ Runtime | Extrait du CAB vcRuntimeMinimum_amd64\cab1.cab si absent | aka.ms/vc14/vc_redist.x64.exeWindows uniquement | Authenticode + SHA Signature Authenticode O=Microsoft Corporation sur exe et vcruntime140.dll | tools\vcruntime\ (copié dans PHP, Apache, MongoDB) |
| Apache httpd | apachelounge.com/download/ (extraction de version et somme de contrôle) | apachelounge.com/download/VS<nn>/binaries/httpd-<v>-Win64-VS<nn>.zipmacOS et Linux : build du kit, github.com/nabre/atollo/releases/download/httpd-v<v>/httpd-<v>-<target>.tar.gz, SHA-256 fixé par cible dans le catalogue, PHP via php-fpm (D-116) | SHA-256 SHA-256 depuis <url>.txt (SHA256-Checksum for:) | apache\<ligne>\bin\httpd.exe |
| Caddy | api.github.com/repos/caddyserver/caddy/releases?per_page=100 | Asset caddy_<v>_windows_amd64.zip depuis la release GitHub officielle | SHA-256 GitHub Release asset.digest (depuis 2.10.1), sinon SHA-512 depuis caddy_<v>_checksums.txt | caddy\<ligne>\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.exeHôte gnu sur Windows x64, gnullvm sur Windows ARM64 (avec C/C++), msvc depuis la page de Rust dans Outils (« Détails ») ; macOS et Linux : rustup avec l'hôte natif | SHA-256 SHA-256 depuis <url>.sha256 | rust\cargo\bin\rustc.exe et rustup.exe |
| Go SDK | go.dev/dl/?mode=json (&include=all) | go.dev/dl/go<v>.windows-(amd64|arm64).zip | SHA-256 SHA-256 depuis le champ sha256 du JSON officiel | go\<ligne>\bin\go.exe |
| Java JDK (Eclipse Temurin) | api.adoptium.net/v3/info/available_releases + /v3/assets/latest/<major>/hotspot | Paquet .zip renvoyé par l'API Adoptium | SHA-256 SHA-256 depuis binary.package.checksum | java\<ligne>\bin\java.exe |
| ↳ Partie : Apache Maven | repo.maven.apache.org/maven2/org/apache/maven/apache-maven/maven-metadata.xml | apache-maven-<v>-bin.zip | SHA-512 SHA-512 depuis <url>.sha512 | maven\bin\mvn.cmd |
| ↳ Partie : Gradle | services.gradle.org/versions/current | Champ downloadUrl du JSON officiel | SHA-256 SHA-256 depuis checksumUrl du JSON | gradle\bin\gradle.bat (via data\kit\bin\gradle.cmd) |
| Kotlin Compiler | api.github.com/repos/JetBrains/kotlin/releases?per_page=100 | Asset kotlin-compiler-<v>.zip | SHA-256 GitHub asset.digest ou <asset>.sha256 | kotlin\<ligne>\bin\kotlinc.bat |
| Android SDK + Command-line Tools | developer.android.com/studio (table commandlinetools-win-*_latest.zip) | dl.google.com/android/repository/commandlinetools-win-<build>_latest.zip | SHA-256 SHA-256 publié dans la table officielle Android | android\cmdline-tools\latest\bin\sdkmanager.bat et adb.exe |
| .NET SDK | builds.dotnet.microsoft.com/dotnet/release-metadata/releases-index.json | Archive .zip pour rid=win-x64|win-arm64 | SHA-512 SHA-512 depuis le champ hash de releases.json | dotnet\<ligne>\dotnet.exe (avec jonctions SDK partagées) |
| Dart SDK | storage.googleapis.com/dart-archive/channels/stable/release/latest/VERSION | dartsdk-windows-<arch>-release.zip | SHA-256 SHA-256 depuis <url>.sha256sum | dart\<ligne>\bin\dart.exe |
| Zig | ziglang.org/download/index.json | Champ tarball pour (x86_64|aarch64)-windows | SHA-256 SHA-256 depuis le champ shasum du JSON | zig\<ligne>\zig.exe |
| Julia | julialang-s3.julialang.org/bin/versions.json | Archive .zip pour os=winnt, arch=x86_64 | SHA-256 SHA-256 depuis le champ sha256 de versions.json | julia\<ligne>\bin\julia.exe |
| Bun | api.github.com/repos/oven-sh/bun/releases | Asset bun-windows-(x64|aarch64).zip | SHA-256 GitHub asset.digest ou SHASUMS256.txt | bun\<ligne>\bun.exe |
| Deno | api.github.com/repos/denoland/deno/releases | Asset deno-(x86_64|aarch64)-pc-windows-msvc.zip | SHA-256 GitHub asset.digest ou <asset>.sha256sum | deno\<ligne>\deno.exe |
| Typst | api.github.com/repos/typst/typst/releases | Asset typst-(x86_64|aarch64)-pc-windows-msvc.zip | SHA-256 GitHub Release asset.digest | typst\<ligne>\typst.exe |
| TinyTeX (LaTeX) | api.github.com/repos/rstudio/tinytex-releases/releases/latest | Asset TinyTeX-1-windows-v*.exe (7z SFX extrait en Rust)macOS et Linux : TinyTeX-1-<os>-<arch>-v*.tar.xz (universel sur macOS) | SHA-256 GitHub Release asset.digest | tinytex\bin\windows\tlmgr.bat et pdftex.exe |
| pnpm + yarn (corepack) | registry.npmjs.org/pnpm/latest et /corepack/latest | Installé avec npm-cli.js du Node.js du kit | npm sha512 Intégrité du registre npm | data\npm-global\pnpm.cmd et yarn.cmd |
| CMake + Ninja | API GitHub : Kitware/CMake et ninja-build/ninja (releases/latest) | cmake-*-windows-(x86_64|arm64).zip et ninja-win(arm64).zip | SHA-256 GitHub Release asset.digest | cmake\<ligne>\bin\cmake.exe et tools\ninja.exe |
| C/C++ (llvm-mingw) | api.github.com/repos/mstorsjo/llvm-mingw/releases/latest | Asset llvm-mingw-*-ucrt-(x86_64|aarch64).zipmacOS et Linux : shims cc, c++, gcc, g++, clang sur le zig cc du kit (requiert Zig) et GNU make de conda-forge, non relocalisable | SHA-256 GitHub Release asset.digest | cc\bin\clang.exe (+ make.cmd) |
| Ruby + Bundler | api.github.com/repos/oneclick/rubyinstaller2/releases?per_page=30 | Asset rubyinstaller-<v>-(x64|arm).7zmacOS et Linux : ruby de conda-forge (3.2 et suivantes) via micromamba, non relocalisable | SHA-256 GitHub Release asset.digest | ruby\<ligne>\bin\ruby.exe |
| R (conda-forge + OpenBLAS) | api.anaconda.org/package/conda-forge/r-base + mamba-org/micromamba-releases | micromamba-win-64 + paquets r-base et libblas=*=*openblasWindows ARM64 : les paquets win-64 en émulation x64, par le micromamba natif (--platform win-64). macOS et Linux : mêmes paquets pour osx-* et linux-*, lanceurs dans kit-bin, non relocalisable | SHA-256 SHA-256 de micromamba + SHA-256 des paquets conda-forge | r\<ligne>\bin\R.cmd et Rscript.cmd |
| MySQL Community Server | Lignes LTS 8.4 et 9.7 fixées dans le catalogue (sha256ByLine) | cdn.mysql.com/Downloads/MySQL-<ligne>/mysql-<v>-winx64.zip | SHA-256 SHA-256 fixé par ligne et cible après la signature GPG d'Oracle | mysql\<ligne>\bin\mysqld.exe et mysql.exe |
| MongoDB + mongosh + Database Tools | downloads.mongodb.org/current.json, GitHub mongodb-js/mongosh, tools/db/release.json | Archives .zip Windows x64 de mongod, mongosh et mongodump/mongorestoremacOS : archives de l'éditeur ; Linux : serveur depuis conda-forge (non relocalisable), mongosh générique, Database Tools par distribution | SHA-256 SHA-256 depuis les JSON MongoDB + asset.digest GitHub pour mongosh | mongodb\<ligne>\bin\mongod.exe, mongosh\, mongodb-tools\ |
| phpMyAdmin (pour MySQL) | www.phpmyadmin.net/home_page/version.json | files.phpmyadmin.net/phpMyAdmin/<v>/phpMyAdmin-<v>-all-languages.zip | SHA-256 SHA-256 depuis le fichier .sha256 officiel + vérification syntaxique php -l | phpmyadmin\<ligne>\index.php |
| mongo-express (pour MongoDB) | version fixée dans le catalogue d'Atollo (build du kit, D-147) | github.com/nabre/atollo/releases/download/mongo-express-v<v>/mongo-express-<v>.zip | SHA-256 SHA-256 fixé dans le catalogue (ou le .sha256 de la release du kit) ; build en CI depuis le commit fixé de mongo-express | mongo-express\<ligne>\app.js |
| SQLite CLI | sqlite.org/download.html (lignes CSV PRODUCT,...) | sqlite.org/<année>/sqlite-tools-win-(x64|arm64)-<v>.zipLinux ARM64 : sqlite de conda-forge (sqlite.org ne publie pas les outils), non relocalisable ; Windows ARM64 : le zip x64 s'il manque le zip arm64 | SHA3-256 SHA3-256 publié dans la ligne PRODUCT de la page officielle | sqlite\<ligne>\sqlite3.exe |
Sous le capot
- Dossier de travail : <temporaires du système>\Atollo\<id du kit>\setup, ou data\tmp\setup si le disque système a moins de 4 Go libres ou n'est pas accessible en écriture.
- Trois tentatives à 5 et 10 secondes d'intervalle ; le téléchargement repart de zéro à chaque tentative.
- Connexions avec le proxy des Paramètres et les certificats du système plus ceux de « Certificats supplémentaires (fichier PEM) » : l'inspection HTTPS d'un pare-feu fonctionne si son certificat est installé sur le PC ou se trouve dans ce fichier.
- La version installée est écrite dans data\app\versions\<système>\<composant>.txt.