Skip to main content
Himmelblau runs as two cooperating systemd services. Both must be running for authentication to work.
ServicePurpose
himmelblaudMain daemon. Handles all authentication requests from the PAM and NSS modules.
himmelblaud-tasksTasks daemon. Handles background operations: home directory creation, Intune policy application, token refresh, Kerberos credential management, and subUID/subGID allocation.

Starting and stopping

Enable and start both services on boot:
sudo systemctl enable --now himmelblaud himmelblaud-tasks
Restart after a configuration change:
sudo systemctl restart himmelblaud himmelblaud-tasks
Check current status:
sudo systemctl status himmelblaud himmelblaud-tasks

Viewing logs

Print recent logs from both services:
journalctl -u himmelblaud -u himmelblaud-tasks --no-pager
Follow logs in real time:
journalctl -u himmelblaud -f

Debug logging

To enable verbose logging, set debug = true in /etc/himmelblau/himmelblau.conf:
[global]
debug = true
When set to true, debug messages are written to the system journal. Restart both daemons after changing this option. Alternatively, set the RUST_LOG environment variable before starting the daemon manually:
RUST_LOG=debug himmelblaud
Debug logs may contain sensitive information (tokens, authentication data). Redact them before sharing in bug reports.

Checking daemon health

Use aad-tool status to verify the daemon is reachable and responding:
sudo aad-tool status
This checks that himmelblaud is online and able to connect to the Entra ID endpoint.

Cache management

Use aad-tool cache-clear to manage the local authentication cache.
FlagEffect
(none)Marks all cached user and group entries as stale, forcing a refresh on next use.
--nssClears only the NSS resolution cache (/var/cache/nss-himmelblau/cache.db).
--mappedClears only the mapped name cache (/var/cache/nss-himmelblau/mapping.cache.db).
--fullCompletely purges all cache entries and unjoins the host from Entra ID. This is irreversible.
Examples:
# Invalidate all cached entries (soft refresh)
sudo aad-tool cache-clear

# Clear the NSS cache only
sudo aad-tool cache-clear --nss

# Clear the mapped name cache only
sudo aad-tool cache-clear --mapped

# Full wipe and unjoin (destructive)
sudo aad-tool cache-clear --full
--full unjoins the device from Entra ID. You will need to re-enroll the machine afterwards.

Socket paths

The daemons communicate with the PAM and NSS modules over Unix domain sockets. Default locations:
SocketPath
Main daemon/var/run/himmelblaud/socket
Tasks daemon/var/run/himmelblaud/task_sock
Broker/var/run/himmelblaud/broker_sock
These paths can be overridden in himmelblau.conf via the socket_path, task_socket_path, and broker_socket_path options.

Build docs developers (and LLMs) love