A Linux-first toolkit for Zcash development on Zebra
Current Milestone: M1 - Repository Setup & Zebra Devnet
Completion: In Progress
- ✅ Zebra regtest node in Docker
- ✅ Health check automation
- ✅ Basic smoke tests
- ✅ CI pipeline (self-hosted runner)
- ✅ Project structure and documentation
- ⏳ M2: CLI tool (
zecdev up/test/down) + Python faucet - ⏳ M3: GitHub Action + End-to-end shielded flows
- ⏳ M4: Comprehensive documentation + Quickstarts
- ⏳ M5: 90-day maintenance window
ZecKit is a developer-first toolkit that provides a fast, reliable, and unified environment for building on Zebra, the new Zcash node implementation replacing zcashd.
In Milestone 1, we establish the foundation: a containerized Zcash regtest devnet with health monitoring and CI integration.
- One-Command Startup:
docker compose up -dbrings up Zebra regtest - Health Monitoring: Automated checks ensure services are ready
- Smoke Tests: Verify basic RPC functionality
- CI Integration: GitHub Actions on self-hosted runner
- Linux-First: Optimized for Linux/WSL environments
- OS: Linux (Ubuntu 22.04+), WSL, or macOS (best-effort)
- Docker: Engine ≥ 24.x + Compose v2
- Resources: 2 CPU cores, 4GB RAM, 5GB disk
# Clone the repository
git clone https://github.com/Supercoolkayy/ZecKit.git
cd ZecKit
# Run setup (checks dependencies, pulls images)
chmod +x scripts/setup-dev.sh
./scripts/setup-dev.sh
# Start the devnet
docker compose up -d
# Wait for Zebra to be ready (max 2 minutes)
./docker/healthchecks/check-zebra.sh
# Run smoke tests
./tests/smoke/basic-health.sh# Check container status
docker compose ps
# Test RPC manually
./scripts/test-zebra-rpc.sh
# View logs
docker compose logs -f zebra# Stop services
docker compose down
# Remove volumes (fresh start next time)
docker compose down -vZecKit aims to solve the critical gap left by zcashd deprecation:
- Standardize Zebra Development: One consistent way to run Zebra + light-client backends locally and in CI
- Enable UA-Centric Testing: Built-in support for Unified Address (ZIP-316) workflows
- Support Backend Parity: Toggle between lightwalletd and Zaino without changing tests
- Catch Breakage Early: Automated E2E tests in CI before code reaches users
- Zcash is migrating from zcashd to Zebra (official deprecation in 2025)
- Teams lack a standard, maintained devnet + CI setup
- Fragmented tooling leads to drift, flakiness, and late-discovered bugs
- ZecKit productizes the exact workflow builders need
See specs/architecture.md for detailed system design.
┌─────────────────────────────────────────┐
│ Docker Compose │
│ │
│ ┌─────────────┐ │
│ │ Zebra │ │
│ │ (regtest) │ ← Health Checks │
│ │ :8232 │ │
│ └─────────────┘ │
│ │
│ Ports (localhost only): │
│ - 8232: RPC │
│ - 8233: P2P │
└─────────────────────────────────────────┘
- Zebra Node: Core Zcash regtest node with RPC enabled
- Health Checks: Automated validation of service readiness
- Smoke Tests: Basic RPC functionality verification
- CI Pipeline: GitHub Actions on self-hosted runner
ZecKit/
├── docker/
│ ├── compose/ # Service definitions
│ ├── configs/ # Zebra configuration
│ └── healthchecks/ # Health check scripts
├── specs/ # Technical specs & architecture
├── tests/
│ └── smoke/ # Smoke test suite
├── scripts/ # Helper scripts
├── faucet/ # Placeholder for M2
└── .github/workflows/ # CI configuration
# Start devnet
docker compose up -d
# Check health
./docker/healthchecks/check-zebra.sh
# Run tests
./tests/smoke/basic-health.sh
# View logs
docker compose logs -f
# Stop devnet
docker compose down -v
# Rebuild after changes
docker compose up -d --force-recreate# Use helper script
./scripts/test-zebra-rpc.sh
# Or manually
curl -d '{"method":"getinfo","params":[]}' \
http://127.0.0.1:8232ZecKit uses a self-hosted runner (recommended on WSL/Linux) for CI.
# Run the setup script
./scripts/setup-wsl-runner.sh
# Follow the prompts to:
# 1. Get runner token from GitHub
# 2. Download and configure runner
# 3. Install as service (optional)- Go to: Settings → Actions → Runners in your GitHub repo
- Click: New self-hosted runner
- Select: Linux
- Follow instructions to download and configure
The smoke test workflow runs automatically on:
- Push to
mainbranch - Pull requests to
main - Manual dispatch
See .github/workflows/smoke-test.yml
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
- Branch: Create feature branches from
main - Commits: Use clear, descriptive messages
- Tests: Ensure smoke tests pass before submitting PR
- Style: Follow existing code style
- Documentation: Update docs for new features
- Fork and clone the repository
- Create a feature branch:
git checkout -b feature/my-feature - Make changes and test locally
- Run smoke tests:
./tests/smoke/basic-health.sh - Commit and push:
git push origin feature/my-feature - Open a Pull Request
- Architecture - System design and components
- Technical Spec - Implementation details
- Acceptance Tests - Test criteria
- CONTRIBUTING.md - Contribution guidelines
- SECURITY.md - Security policy
- Repository structure
- Zebra regtest in Docker
- Health checks & smoke tests
- CI pipeline
zecdevcommand-line tool- Python Flask faucet
- Backend toggle (lwd/Zaino prep)
- Pre-mined test funds
- Reusable Action for repos
- End-to-end shielded flows
- UA (ZIP-316) test vectors
- Backend parity testing
- Quickstart guides
- Video tutorials
- Troubleshooting docs
- Compatibility matrix
- 90-day support window
- Version pin updates
- Bug fixes & improvements
- Community handover plan
Dual-licensed under your choice of:
- MIT License (LICENSE-MIT)
- Apache License, Version 2.0 (LICENSE-APACHE)
Built by Dapps over Apps team
Special thanks to:
- Zcash Foundation (Zebra development)
- Electric Coin Company (Zcash protocol)
- Zingo Labs (Zaino indexer)
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Community: Zcash Community Forum
Status: 🚧 Milestone 1 - Active Development
Last Updated: November 10, 2025