Skip to content

feat: split signet into signet-exex and signet-sidecar binaries#66

Merged
prestwich merged 2 commits into
mainfrom
prestwich/dual-binary
Mar 26, 2026
Merged

feat: split signet into signet-exex and signet-sidecar binaries#66
prestwich merged 2 commits into
mainfrom
prestwich/dual-binary

Conversation

@prestwich
Copy link
Copy Markdown
Member

@prestwich prestwich commented Mar 20, 2026

Summary

  • Convert repo to a Cargo workspace with two member crates
  • signet-exex: reth ExEx binary (rename of existing signet crate), rewritten to use the new SignetNodeBuilder API with decompose_exex_context() from node-components
  • signet-sidecar: standalone RPC follower binary with zero reth dependencies, using init4-bin-base for runtime setup and all config from environment variables
  • Split Dockerfile into Dockerfile.exex and Dockerfile.sidecar, update ECR and GHCR workflows

Dependencies

Test plan

  • cargo clippy -p signet-sidecar --all-targets passes
  • cargo clippy -p signet-exex --all-targets passes
  • cargo +nightly fmt --check passes
  • cargo tree -p signet-sidecar | grep -i reth returns nothing
  • Docker builds for both targets succeed

🤖 Generated with Claude Code

@prestwich prestwich requested a review from Fraser999 March 24, 2026 12:30
@prestwich prestwich force-pushed the prestwich/dual-binary branch from 27361cf to 8f50ecf Compare March 24, 2026 12:55
@prestwich prestwich marked this pull request as ready for review March 24, 2026 13:00
@prestwich prestwich requested review from a team and rswanson as code owners March 24, 2026 13:00
@prestwich prestwich requested review from Evalir and rymcol March 24, 2026 13:00
@prestwich prestwich force-pushed the prestwich/dual-binary branch from 8f50ecf to ee02393 Compare March 24, 2026 13:20
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>
@prestwich prestwich force-pushed the prestwich/dual-binary branch from ee02393 to 2837053 Compare March 24, 2026 16:34
Copy link
Copy Markdown
Member

@rswanson rswanson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

approving for the ci/cd

Comment thread signet-exex/src/lib.rs Outdated

/// State the Signet node, using the provided config.
/// Start the Signet ExEx node with the provided config.
pub fn node(config: SignetNodeConfig) -> eyre::Result<()> {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
pub fn node(config: SignetNodeConfig) -> eyre::Result<()> {
pub(crate) fn node(config: SignetNodeConfig) -> eyre::Result<()> {

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Claude Code]

Done — node() is now pub(crate).

Comment thread signet-sidecar/src/lib.rs Outdated
Comment thread signet-sidecar/src/lib.rs
let serve_config = ServeConfigEnv::from_env()?.try_into()?;
let rpc_config = StorageRpcConfigEnv::from_env()?.into();

let cancel = CancellationToken::new();
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be hooked up to a signal-handler?

Same question for the similar one in the exex binary.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[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.

Comment thread signet-exex/Cargo.toml Outdated
Comment on lines +8 to +9
homepage = "https://github.com/init4tech/signet-node"
repository = "https://github.com/init4tech/signet-node"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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"

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Claude Code]

Fixed — URLs now point to init4tech/signet.

Comment thread signet-sidecar/Cargo.toml Outdated
Comment on lines +8 to +9
homepage = "https://github.com/init4tech/signet-node"
repository = "https://github.com/init4tech/signet-node"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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"

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[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>
@prestwich prestwich merged commit 428c2c4 into main Mar 26, 2026
5 checks passed
@prestwich prestwich deleted the prestwich/dual-binary branch March 26, 2026 01:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants