Railway

Deploy siwa-keyring-proxy

Keyring Proxy Service for safe wallet private key storage

Deploy siwa-keyring-proxy

siwa-keyring-proxy

builders-garden/siwa

Just deployed

Deploy and Host siwa-keyring-proxy on Railway

siwa-keyring-proxy is a standalone Express server that acts as a security boundary for AI agent signing. It holds encrypted private keys and exposes HMAC-authenticated HTTP endpoints for wallet creation, message signing, and transaction signing — so private keys never enter the agent's process.

About Hosting siwa-keyring-proxy

Hosting siwa-keyring-proxy involves deploying a single Docker container running a Node.js Express server. The service manages Ethereum private keys using either an AES-encrypted JSON Keystore (persisted to a volume) or a raw private key from an environment variable. All signing requests are authenticated via HMAC-SHA256 with a shared secret, ensuring only authorized agents can request signatures. The server exposes a /health endpoint for readiness checks. Configuration is entirely through environment variables — set a shared HMAC secret, choose a keystore backend, and provide a password or private key.

Common Use Cases

  • AI agent wallet security — Run alongside an AI agent (e.g. OpenClaw) so the agent can sign Ethereum transactions without ever accessing the private key, defending against prompt injection and key exfiltration.
  • ERC-8004 agent registration and SIWA authentication — Agents use the proxy to sign onchain registration transactions and SIWA (Sign In With Agent) challenge-response messages.
  • Bring your own wallet — Set AGENT_PRIVATE_KEY to plug in an existing funded wallet instead of generating a new one.

Dependencies for siwa-keyring-proxy Hosting

  • @buildersgarden/siwa (npm) — Core SDK providing keystore abstraction and HMAC proxy-auth utilities.
  • Node.js 22 — Runtime environment (included in the Docker image).

Deployment Dependencies

Implementation Details

The keyring proxy requires these environment variables:

VariableRequiredDescription
KEYRING_PROXY_SECRETYesShared HMAC-SHA256 secret. Must match your agent.
KEYSTORE_PASSWORDConditionalPassword for the encrypted-file keystore (default backend).
AGENT_PRIVATE_KEYConditionalHex-encoded private key (0x...) to use an existing wallet instead.

When AGENT_PRIVATE_KEY is set, the keystore backend auto-detects to env — no password or encrypted file needed.

The proxy exposes these HMAC-authenticated endpoints:

GET  /health              — Health check (no auth required)
POST /create-wallet       — Generate a new wallet
POST /has-wallet          — Check if a wallet exists
POST /get-address         — Get the wallet's public address
POST /sign-message        — Sign an arbitrary message
POST /sign-transaction    — Sign an Ethereum transaction
POST /sign-authorization  — Sign an EIP-7702 authorization

Why Deploy siwa-keyring-proxy on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying siwa-keyring-proxy on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.


Template Content

siwa-keyring-proxy

builders-garden/siwa

More templates in this category

View Template
Foundry Virtual Tabletop
A Self-Hosted & Modern Roleplaying Platform

Lucas
View Template
(v1) Simple Medusa Backend
Deploy an ecommerce backend and admin using Medusa

Shahed Nasser
View Template
peppermint
Docker-compose port for peppermint.sh

HamiltonAI