Summary
Implement a unified production-ready Devbox plugin at the repository root that streamlines local development, testnet deployment, and service management for both snrd (blockchain node) and hway (Highway service). This plugin consolidates tooling through Devbox's plugin system with Nix flake package integration and virtual environment setup scripts.
Requirements
Core Plugin Architecture
- Unified Plugin: Single
plugin.json at repository root managing both snrd and hway
- Nix Integration: Reference Nix flake packages for snrd and hway binaries
- Virtual Environment Scripts: Setup scripts in
{{ .Virtenv }} for environment configuration
- Process Compose Integration: Leverage existing process-compose.yaml files for service orchestration
Snrd Capabilities
- Testnet Management: Wrap bootstrap.sh and testnet.sh for validator setup
- Transaction Operations: Convenience wrappers for
snrd tx and snrd query commands
- Validator Operations: Key management, node operations, and status monitoring
- Environment Setup: Auto-configure CHAIN_ID, DENOM, RPC endpoints from
.env
- Service Lifecycle: Start/stop/restart/logs/status commands
Hway Capabilities
- Service Orchestration: Start Highway service with dependency checks
- Dependency Verification: Redis connectivity, IPFS availability checks
- Task Queue Management: Asynq queue inspection and statistics
- Actor System Monitoring: Proto.Actor health checks and status
- Database Operations: Connection validation and migration helpers
Shared Features
- Dependency Management: Declare required packages (docker, jq, redis-cli, ipfs)
- Init Hooks: Automatic environment setup on shell initialization
- Logging: Unified log viewing and tailing across services
- Health Checks: Comprehensive readiness probes for all dependencies
- Data Management: Backup/restore operations and clean state resets
Context
Affected Files
New Plugin Files
plugin.json - Root-level unified Devbox plugin configuration
.devbox/virtenv/setup-snrd.sh - Snrd environment initialization script
.devbox/virtenv/setup-hway.sh - Hway environment initialization script
.devbox/virtenv/health-check.sh - Shared health check utilities
Existing Scripts to Integrate
cmd/snrd/etc/bootstrap.sh - Testnet bootstrap orchestration
cmd/snrd/etc/testnet.sh - Multi-validator testnet initialization
cmd/snrd/etc/process-compose.yaml - Snrd process composition
cmd/hway/etc/process-compose.yaml - Hway process composition
Configuration Files
devbox.json - Root devbox configuration (will reference plugin)
.env - Environment variables for both services
flake.nix - Nix flake providing snrd and hway packages
Existing Plugins to Replace/Enhance
cmd/snrd/plugin.json - To be consolidated into root plugin
cmd/hway/plugin.json - To be consolidated into root plugin
Relevant Documentation
Acceptance Criteria
Plugin Structure
Snrd Scripts
Hway Scripts
Shared Scripts
Environment Configuration
Integration Tests
Documentation
Summary
Implement a unified production-ready Devbox plugin at the repository root that streamlines local development, testnet deployment, and service management for both
snrd(blockchain node) andhway(Highway service). This plugin consolidates tooling through Devbox's plugin system with Nix flake package integration and virtual environment setup scripts.Requirements
Core Plugin Architecture
plugin.jsonat repository root managing both snrd and hway{{ .Virtenv }}for environment configurationSnrd Capabilities
snrd txandsnrd querycommands.envHway Capabilities
Shared Features
Context
Affected Files
New Plugin Files
plugin.json- Root-level unified Devbox plugin configuration.devbox/virtenv/setup-snrd.sh- Snrd environment initialization script.devbox/virtenv/setup-hway.sh- Hway environment initialization script.devbox/virtenv/health-check.sh- Shared health check utilitiesExisting Scripts to Integrate
cmd/snrd/etc/bootstrap.sh- Testnet bootstrap orchestrationcmd/snrd/etc/testnet.sh- Multi-validator testnet initializationcmd/snrd/etc/process-compose.yaml- Snrd process compositioncmd/hway/etc/process-compose.yaml- Hway process compositionConfiguration Files
devbox.json- Root devbox configuration (will reference plugin).env- Environment variables for both servicesflake.nix- Nix flake providing snrd and hway packagesExisting Plugins to Replace/Enhance
cmd/snrd/plugin.json- To be consolidated into root plugincmd/hway/plugin.json- To be consolidated into root pluginRelevant Documentation
Acceptance Criteria
Plugin Structure
plugin.jsoncreated with unified configurationinit_hooksets up environment from.envand initializes virtenv scripts{{ .Virtenv }}/data/snrd,{{ .Virtenv }}/data/hway,{{ .Virtenv }}/logsSnrd Scripts
scripts.snrd:init- Initialize validator configurationscripts.snrd:start- Start snrd node via process-composescripts.snrd:testnet- Bootstrap testnet validatorscripts.snrd:stop- Stop snrd node gracefullyscripts.snrd:status- Display node status and sync infoscripts.snrd:logs- Tail snrd logsscripts.snrd:query- Wrapper for query operations with common flagsscripts.snrd:tx- Wrapper for transaction operations with common flagsscripts.snrd:keys- Key management operationsscripts.snrd:clean- Reset node state and dataHway Scripts
scripts.hway:start- Start Highway service with dependency checksscripts.hway:stop- Stop Highway service gracefullyscripts.hway:restart- Restart Highway servicescripts.hway:logs- Tail Highway service logsscripts.hway:health- Comprehensive health checks (Redis, IPFS, DB)scripts.hway:redis- Open Redis CLI for queue inspectionscripts.hway:queue-stats- Display Asynq queue statisticsscripts.hway:ipfs-status- Check IPFS node connectivityShared Scripts
scripts.health- Overall system health check (both services)scripts.env:check- Validate environment configurationscripts.logs:all- Tail logs from both servicesscripts.clean:all- Reset all service datascripts.backup- Backup service data and configurationsscripts.restore- Restore from backupEnvironment Configuration
.env: CHAIN_ID, DENOM, REDIS_URL, IPFS_API, DATABASE_URL{{ .Virtenv }}/data/snrd{{ .Virtenv }}/data/hwayIntegration Tests
Documentation