Hermes Plugin Manifest Build Fix and Deployment

Summary

This process documents the resolution of a critical bug in the openclaw-gateway (Hermes) build process where plugin manifests were missing from the distribution directory. The fix, introduced in PR #81, ensures that manifests are correctly copied from extensions/ to dist/extensions/ during the Nix build, enabling proper plugin loading for services like WhatsApp.

Details

The issue was identified when the openclaw-gateway service failed to load plugins, reporting “plugin manifest not found” errors. This occurred because the build logic was not accounting for the metadata files required by the gateway’s extension system.

Implementation of PR #81

The fix involved modifying the build instructions to explicitly copy plugin manifests into the dist directory. Because the Nix store is immutable, applying this fix to a running system required a transition from a manual patch to a formal NixOS rebuild.

Deployment and Verification on GMKtec

The deployment was carried out on a GMKtec (sokrates-dev) appliance. The following steps were taken to ensure system stability and verify the fix:

  1. Manual Patching: To verify the fix immediately without waiting for a full rebuild, the manifests were manually copied into the active npm installation directory. This confirmed that the presence of the manifests resolved the loading errors.
  2. NixOS Rebuild: The system’s flake configuration was updated to point to the branch containing PR #81. A nixos-rebuild switch was executed on the GMKtec box to apply the permanent fix via the Nix store.
  3. Service Restart: The openclaw-gateway.service was restarted automatically by the NixOS switch.
  4. Validation: Post-rebuild verification confirmed that the manifests were present in the new Nix store path. The logs showed that plugins loaded successfully, with the exception of a minor, harmless mismatch on the “kimi” plugin.

Results

The deployment successfully restored functionality to the WhatsApp integration. The gateway now correctly identifies and loads all configured extensions from the dist/extensions/ directory. The fix ensures that future builds of the Hermes stack on both sokrates-dev and sokrates-box will include the necessary plugin metadata.