feat: split signet into signet-exex and signet-sidecar binaries#66
Conversation
27361cf to
8f50ecf
Compare
8f50ecf to
ee02393
Compare
Convert repo to a Cargo workspace with two member crates: - signet-exex: reth ExEx binary using SignetNodeBuilder API - signet-sidecar: standalone RPC follower with zero reth deps Split Dockerfile and update docker workflows for dual binaries. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ee02393 to
2837053
Compare
|
|
||
| /// State the Signet node, using the provided config. | ||
| /// Start the Signet ExEx node with the provided config. | ||
| pub fn node(config: SignetNodeConfig) -> eyre::Result<()> { |
There was a problem hiding this comment.
| pub fn node(config: SignetNodeConfig) -> eyre::Result<()> { | |
| pub(crate) fn node(config: SignetNodeConfig) -> eyre::Result<()> { |
There was a problem hiding this comment.
[Claude Code]
Done — node() is now pub(crate).
| let serve_config = ServeConfigEnv::from_env()?.try_into()?; | ||
| let rpc_config = StorageRpcConfigEnv::from_env()?.into(); | ||
|
|
||
| let cancel = CancellationToken::new(); |
There was a problem hiding this comment.
Should this be hooked up to a signal-handler?
Same question for the similar one in the exex binary.
There was a problem hiding this comment.
[Claude Code]
Good call — added a spawn_shutdown_handler() in both binaries that listens for SIGINT (all platforms) and SIGTERM (unix), then cancels the token. This gives storage and other subsystems a window for graceful shutdown when the orchestrator sends SIGTERM.
| homepage = "https://github.com/init4tech/signet-node" | ||
| repository = "https://github.com/init4tech/signet-node" |
There was a problem hiding this comment.
| homepage = "https://github.com/init4tech/signet-node" | |
| repository = "https://github.com/init4tech/signet-node" | |
| homepage = "https://github.com/init4tech/signet" | |
| repository = "https://github.com/init4tech/signet" |
There was a problem hiding this comment.
[Claude Code]
Fixed — URLs now point to init4tech/signet.
| homepage = "https://github.com/init4tech/signet-node" | ||
| repository = "https://github.com/init4tech/signet-node" |
There was a problem hiding this comment.
| homepage = "https://github.com/init4tech/signet-node" | |
| repository = "https://github.com/init4tech/signet-node" | |
| homepage = "https://github.com/init4tech/signet" | |
| repository = "https://github.com/init4tech/signet" |
There was a problem hiding this comment.
[Claude Code]
Fixed — same URL correction applied here.
- Make `node()` pub(crate) in signet-exex - Remove unused tracing dependency from signet-sidecar - Fix homepage/repository URLs in both Cargo.toml files - Add signal-based shutdown handler (SIGINT + SIGTERM on unix, Ctrl+C on Windows) wired to the CancellationToken in both binaries Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Summary
signet-exex: reth ExEx binary (rename of existingsignetcrate), rewritten to use the newSignetNodeBuilderAPI withdecompose_exex_context()from node-componentssignet-sidecar: standalone RPC follower binary with zero reth dependencies, usinginit4-bin-basefor runtime setup and all config from environment variablesDockerfile.exexandDockerfile.sidecar, update ECR and GHCR workflowsDependencies
developbranch of node-componentsTest plan
cargo clippy -p signet-sidecar --all-targetspassescargo clippy -p signet-exex --all-targetspassescargo +nightly fmt --checkpassescargo tree -p signet-sidecar | grep -i rethreturns nothing🤖 Generated with Claude Code