Skip to content

Overview

Docs path: Start / Overview

openKMS is a deny-by-default signing API for Solana and Cosmos, backed by a YubiHSM2 you actually own. Autonomous strategies (the kind of trading agents Openclaw is built around) request signatures over plain HTTP. Per-key policy stops the bad trades before the hardware ever touches them.

Private keys never leave the YubiHSM2. The runtime auth key the service binds as can sign, but cannot export or mutate keys. There is no plaintext egress.

The 0.1.0-rc.1 release is a stable prototype snapshot: small, fail-closed, designed for a homelab Raspberry Pi that signs for a strategy.

Five gates between the strategy and your keys

Section titled “Five gates between the strategy and your keys”

Every signing request crosses these layers in order. Each is fail-closed and emits to the audit log.

Strategy --> Auth --> Decode --> Policy --> Replay --> YubiHSM2
|
Signature
  1. Auth — bearer token in signer_token_file; admin token is separate.
  2. Decode — chain-specific (Solana VersionedMessage, Cosmos SignDoc).
  3. Policy — rate limits, per-tx and rolling daily caps, program / message / recipient allowlists, kill switch.
  4. Replay — cache for deterministic signatures over a configured window.
  5. YubiHSM2 — sign inside hardware. Append-only audit log + Prometheus counters update on accept and on every denial.
  • Host plane runs the HTTP server, policy, replay cache, audit log, and metrics on a hardened systemd unit.
  • HSM plane holds signing keys, the wrap key, and the runtime auth key inside the YubiHSM2.

A privileged attacker on the host can ask the connector for signatures within the policy. Policy is the blast-radius bound; the HSM is the key-egress bound.

Documentation describes these artifacts; it is never authoritative on its own.