| # | Source | When it is used |
|---|---|---|
| 1 | Your own conductor | AutoStartHolochainConductor = false and HolochainConductorAdminURI pointing at a conductor you run (hc sandbox, a launcher, a server). HoloNET starts nothing. |
| 2 | The conductor bundled in an Embedded package | HolochainConductorMode = UseEmbedded (the default on Windows when you installed a .Embedded package). Works offline; nothing is downloaded. |
| 3 | A conductor you point at | HolochainConductorMode = UseExternal and FullPathToExternalHolochainConductorBinary (and FullPathToExternalHCToolBinary for hc). |
| 4 | The conductor on the PATH, or the one HoloNET downloads | HolochainConductorMode = UseSystemGlobal (the default everywhere else). If holochain is on the PATH it is used; if not, and AutoDownloadConductor is on (the default), HoloNET downloads it. |
So with the plain NextGenSoftware.Holochain.HoloNET.Client package, an app on a computer with no Holochain installed just works: the first run downloads the conductor, every later run reuses it.
AutoDownloadConductor
| Setting | Default | What it does |
|---|---|---|
AutoDownloadConductor |
true |
Download holochain and hc when HoloNET needs a conductor and cannot find one. Set it to false on machines that must never download (then use an Embedded package, UseExternal, or put the files in the cache folder yourself). |
HolochainConductorVersion |
"" |
The Holochain release to download, for example "0.7.1". Empty uses EmbeddedHolochainVersion (0.7.1). Setting it also makes HoloNET prefer that exact version over whatever is on the PATH. |
AllowUnverifiedConductorDownload |
false |
Only for a release that has neither a SHA-256 in HoloNET's table nor a digest published on GitHub. Leave it off. |
// Download Holochain 0.7.0 the first time, then reuse it. Nothing else to install.
var admin = new HoloNETClientAdmin(new HoloNETDNA { HolochainConductorVersion = "0.7.0" });
// A machine that must not download:
var offline = new HoloNETClientAdmin(new HoloNETDNA { AutoDownloadConductor = false });
What is downloaded, and how it is checked
- Only the official stable releases at https://github.com/holochain/holochain/releases are used (never the
unstablebuilds), for the computer's own operating system and processor: Windows x64, Linux x64 and arm64, macOS Intel and Apple Silicon. - Every file is checked against its SHA-256 before it is used. HoloNET ships a table of the hashes of every release from 0.5.3 to the release it was built with (
scripts/update_conductor_hashes.pyrebuilds it from the digests GitHub publishes); a release newer than the table is checked against the digest GitHub publishes for it. A file that does not match is deleted and the start fails. Nothing is ever run unchecked unless you setAllowUnverifiedConductorDownload. - Files are cached in
%APPDATA%/NextGenSoftware/HoloNET/<version>/(~/.config/NextGenSoftware/HoloNET/<version>/on Linux and macOS), the same folder an Embedded conductor is unpacked to. Set theHOLONET_CONDUCTOR_FOLDERenvironment variable to use another folder, laid out as<folder>/<version>/holochainandhc. - HoloNET speaks the Holochain 0.7 conductor API. Other releases download fine, but only 0.7.0 and 0.7.1 are tested.
Offline machines
Copy holochain and hc for the version you need into the cache folder (or the folder named by HOLONET_CONDUCTOR_FOLDER) on the offline machine: HoloNET finds them and downloads nothing. Or install an Embedded package, which carries the conductor inside it.
Servers and containers
On Linux (a Docker image, Railway, a VM) the plain Client package is all you need. To keep container start-up fast, run your app once during the image build, or mount the cache folder on a persistent volume, so the 50 MB download is not repeated on every start. The conductor is started directly (no PowerShell), and stopped when the app disconnects.
Embedded packages
NextGenSoftware.Holochain.HoloNET.Client.Embedded (and the .Holochain071 / .Holochain070 single-version packages) carry the conductor inside the DLL, for apps that must work offline or must not download anything at run time (Unity games, installers). The bundled conductors are Windows programs; on Linux and macOS an Embedded package falls back to the PATH and AutoDownloadConductor. See Packages for the full list.