Hodei-Shield Agent: beta guide for Linux¶
Install the 2.20.0 release on Linux x86_64 with systemd and OpenSSL 3.
You need root, outbound HTTPS to your platform URL and to
hs-agent-releases.s3.gra.io.cloud.ovh.net, one enrollment token (works once;
your administrator, or your MSSP's, creates it in the console), an agent id
(letters, digits, . _ : -; it becomes the machine's permanent name) and the
platform URL (https://…). MEASURED: the step was run and its output kept;
NOT RUN: written from the packaging only. If a step misbehaves, stop and write
to info@hodeitek.com. Crash reports go to Sentry by default: to opt out
before the first start, see the end of this guide.
1. Download¶
Only from the release store, never from a link in an e-mail or chat.
V="${V:?set V to the version you were given}"
B=https://hs-agent-releases.s3.gra.io.cloud.ovh.net
mkdir hodei-install && cd hodei-install
curl -fsSLO "$B/agent/$V/hodei-shield-$V-linux-x86_64-musl.tar.gz"
curl -fsSLO "$B/agent/$V/SHA256SUMS"
curl -fsSLO "$B/agent/$V/SHA256SUMS.sig"
Before you run anything, check that the download is authentic: verify an agent release and verify the download.
2. Verify¶
Linux has no OS-native signature; the tarball is covered by the release
signature (Ed25519) over SHA256SUMS. Save as hodei-shield-release.pub.pem:
-----BEGIN PUBLIC KEY-----
MCowBQYDK2VwAyEAEUqKd+ot7BESwk+vf6EVBKudMi6F6jmY3dJeHXfCWkQ=
-----END PUBLIC KEY-----
MEASURED on a published release. Key fingerprint (details: verify-release.md;
openssl pkey -pubin -in hodei-shield-release.pub.pem -outform DER | tail -c 32 | sha256sum):
8b730d2fcbd90e2656bd9b3f265638f1e8e8ac2379d48b0636feb5efe5a88f07. This is the key's fingerprint, not the package's checksum; the package is checked against SHA256SUMS.
openssl base64 -d -A -in SHA256SUMS.sig -out SHA256SUMS.sig.raw
wc -c < SHA256SUMS.sig.raw # must print 64
openssl pkeyutl -verify -rawin -pubin -inkey hodei-shield-release.pub.pem \
-sigfile SHA256SUMS.sig.raw -in SHA256SUMS # Signature Verified Successfully
sha256sum --ignore-missing -c SHA256SUMS # your .tar.gz must say: OK
3. Install¶
MEASURED(Debian 12, 2026-10-29).tar xzf "hodei-shield-$V-linux-x86_64-musl.tar.gz" cd "hodei-shield-$V-linux-x86_64-musl" sudo useradd --system --no-create-home --shell /usr/sbin/nologin hodei-shield sudo install -o root -g root -m 0755 hodei-shield /usr/local/bin/hodei-shield sudo install -o root -g root -m 0644 hodei-shield.service /etc/systemd/system/ sudo install -d -o root -g root -m 0755 /etc/hodei-shield sudo install -o root -g hodei-shield -m 0640 platform-ca.pem /etc/hodei-shield/ sudo install -d -o hodei-shield -g hodei-shield -m 0700 /var/lib/hodei-shield sudo -u hodei-shield tee /var/lib/hodei-shield/hodei-shield.toml >/dev/null <<'EOT' platform_url = "https://<platform host>" state_dir = "/var/lib/hodei-shield" EOT sudo systemctl daemon-reload hodei-shield version # prints: hodei-shield <version>, then a line on error reports
4. Enroll¶
MEASURED(Debian 12, 2026-10-29). Once per machine; the service starts only after it. The token is typed hidden, never on a command line.Once it is running with both, it evaluates and submits straight away, then again every submit interval (default 3600 seconds). Success printscd / IFS= read -rs HODEI_TOKEN && echo printf '%s' "$HODEI_TOKEN" | sudo -u hodei-shield env \ HODEI_PLATFORM_URL="https://<platform host>" \ HODEI_STATE_DIR=/var/lib/hodei-shield \ /usr/local/bin/hodei-shield enroll --token-stdin --agent-id '<this machine id>' unset HODEI_TOKEN sudo systemctl enable --now hodei-shieldenrolled: producer=endpoint_agent:<id> public_key_id=… tenant_id=…, after a log line and before apin-update-identitycommand for automatic updates: run it only once your administrator confirms its values in the console. If it fails, do not reuse the token: ask for a new one. Certificate or TLS error: add no certificate and turn no check off; the agent trusts only/etc/hodei-shield/platform-ca.pem. Send the output ofhodei-shield diagnoseto your administrator; other failures: troubleshooting.
5. Check in the console¶
MEASURED (Debian 12, 2026-10-29). systemctl is-active hodei-shield must say active. The machine
appears under Endpoints in the console after its first cycle. Logs:
sudo journalctl -u hodei-shield -n 50 --no-pager.
Controls showing "Error" in this beta: some controls may show "Error" on systems whose language is not English, or because the agent runs without administrator rights. This does not mean the control is failing: the agent could not read it reliably, and it does not count it as compliant. The next beta version corrects this.
6. Update by hand¶
Do not enroll again. From 2.16.0 on, a Linux host updates itself only when the
console's signed policy approves the release; otherwise, or to update yourself,
update by hand. MEASURED (2.14.0 to 2.14.1, isolated container): binary
replaced, version printed the new number, one cycle accepted, key and identity
files byte-identical; systemctl, self-test and rollback were not part of
that run. Verify the new version as in steps 1 and 2, then:
V=<new version>
tar xzf "hodei-shield-$V-linux-x86_64-musl.tar.gz" && cd "hodei-shield-$V-linux-x86_64-musl"
sudo systemctl stop hodei-shield
sudo cp -p /usr/local/bin/hodei-shield /usr/local/bin/hodei-shield.prev # rollback copy
sudo install -o root -g root -m 0755 hodei-shield /usr/local/bin/hodei-shield
sudo install -o root -g root -m 0644 hodei-shield.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo -u hodei-shield sh -c 'cd /var/lib/hodei-shield && exec /usr/local/bin/hodei-shield self-test' \
&& sudo systemctl start hodei-shield
hodei-shield version # the new version
7. Uninstall¶
MEASURED (Debian 12, 2026-10-29). First ask your administrator to revoke the machine (console:
Endpoints, the endpoint, Revoke enrolment); a revoked agent logs "credential rejected" and sends nothing.
sudo systemctl disable --now hodei-shield
sudo rm /etc/systemd/system/hodei-shield.service /usr/local/bin/hodei-shield && sudo systemctl daemon-reload
sudo pkill -KILL -u hodei-shield; ! pgrep -u hodei-shield && sudo chown root:root /var/lib/hodei-shield /etc/hodei-shield \
&& sudo chmod 0700 /var/lib/hodei-shield && l="$(sudo find /var/lib/hodei-shield /etc/hodei-shield -xdev ! -type d -links +1 -print -quit)" && [ -z "$l" ] \
&& sudo chown -R root:root /var/lib/hodei-shield /etc/hodei-shield \
&& sudo chmod -R u=rwX,go= /var/lib/hodei-shield && sudo userdel hodei-shield
NOT RUN: pkill/pgrep, the folder lock and the find, which stops the chain on a second hard link (with fs.protected_hardlinks=0
the service could plant one to a system file for chown to re-own). If id hodei-shield still answers, write to Hodeitek. Left behind,
owned by root so no account later given the freed uid can read the key: /var/lib/hodei-shield (private key, queue, hodei-shield.toml;
0700/0600), /etc/hodei-shield (CA, telemetry-off) and the journal; no log file. Purge (irreversible, after revoking): sudo rm -rf /var/lib/hodei-shield /etc/hodei-shield.
Privacy and help. Error reports (crashes only, no personal data) go to Sentry; to turn them off
before the first start (MEASURED, Debian 12, 2026-10-29): sudo mkdir -p /etc/hodei-shield && sudo touch /etc/hodei-shield/telemetry-off.
Help: info@hodeitek.com or the Beta button in the console.