remote-signer-dirk-interop is a small HTTP service that implements the Ethereum remote-signer API and forwards all signing requests to a Dirk signer or signing cluster.
This project has not been audited (and it will not be audited). Use it at your own risk.
Dirk is a powerful distributed signer, but its bespoke gRPC API is only supported natively by Vouch. This project lets you use Dirk with any Validator Client that supports the remote-signer API, e.g., Vero
You may want to use this project if:
- You want to use a specific Validator Client with Dirk signers (other than Vouch).
- You want to use both Vero and Vouch with Dirk (with an appropriate Vouch multiinstance configuration).
You should not use this project if:
- You simply want to use Vouch and Dirk.
- You want full DVT.
- You want to use Vero, but are happy with Web3Signer instead of Dirk.
An example configuration file is provided in config.example.yaml
Run the program with ./remote-signer-dirk-interop -config path/to/config.yaml.
Note: The TLS/SSL configuration for this application only secures its communications with Dirk.
You are responsible for securing communication between the VC and the listen_port for this application.
services:
remote-signer-dirk-interop:
image: ghcr.io/jshufro/remote-signer-dirk-interop:latest
command: ["-config", "/etc/remote-signer/config.yaml"]
ports:
- "127.0.0.1:9090:9090"
- "127.0.0.1:9091:9091"
volumes:
- ./certs:/certs:ro
configs:
- source: remote_signer_config
target: /etc/remote-signer/config.yaml
configs:
remote_signer_config:
content: |
log_level: info
log_format: json
listen_address: "0.0.0.0"
listen_port: 9090
metrics:
listen_address: "0.0.0.0"
listen_port: 9091
dirk:
timeout: 4s
endpoints:
- "dirk1.example.invalid:9091"
- "dirk2.example.invalid:9091"
- "dirk3.example.invalid:9091"
wallet: "example-wallet"
ssl:
refresh_threshold: 24h
refresh_retry: 10m
cert: "/certs/server.crt"
privkey: "/certs/server.key"
root_ca: "/certs/ca.crt"
network: "mainnet"A sample grafana dashboard can be found in the grafana folder.
Additionally, you can fill out the otlp section of the config to export traces to an otel compatible backend.
To run the main test suite locally:
make testTo generate a coverage report:
make coverageFor Web3Signer parity tests, cd test/web3signer-parity and run make ci.
This project is released under AGPL-3.0. Unlike the GPL alone, AGPL can apply when people use the program over a network, not only when you ship binaries. Read LICENSE.md for the exact conditions, especially if you fork, patch, or embed the service in a product you operate for others.
remote-signer-dirk-interop Copyright (C) 2026 Jacob Shufro
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/.