RabbitHole Features
RabbitHole provides a comprehensive set of features for secure, reliable, and flexible cybersecurity environment provisioning.
Core Feature Categories
Distro Agnostic
Auto-detects Debian/Kali/Ubuntu/Parrot, Fedora, Arch/Manjaro.
Plugin-Based Architecture
Roles are defined as YAML manifests under roles/. Add a new role by creating a directory with plugin.yaml — no code changes needed.
State Management
Tracks installed roles, tools, versions, and dates in ~/.rabbithole/state.json. Supports verify, doctor, snapshot, restore.
Supply Chain Security
SHA256 verification, pinned versions, secure auto-generated Docker credentials.
Rollback & Resume Capability
If installation is interrupted, re-running resumes from the last successful package. Rollback cleans packages, symlinks, etc.
Full CLI Tooling
Complete command-line interface for installation, removal, status, verification, and more.
Detailed Feature Explanation
Zero-Bloat Design
No background services, no telemetry, no unnecessary dependencies - only what you explicitly install.
Full Backward Compatibility
The original rabbithole.sh still works exactly as before for users who prefer the legacy interface.
Dry Run Capability
Preview changes before making them with rabbithole --dry-run install <role>.
Community Extensibility
User/custom plugin directory allows for community contributions without modifying core code.
Plugin Architecture Deep Dive
RabbitHole's plugin system enables infinite extensibility through simple YAML manifests:
# Example: roles/web-developer/plugin.yaml name: "Web Developer" description: "Web development environment with essential tools" version: "1.0.0" author: "Ahmed Awad (NullC0d3)" tools: - name: "nodejs" version: "18.x" method: "package_manager" - name: "yarn" version: "1.22.x" method: "npm" - name: "code" version: "latest" method: "package" source: "https://packages.microsoft.com/repos/code" - name: "docker" version: "20.10.x" method: "package_manager" - name: "kubectl" version: "latest" method: "binary" url: "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" dependencies: - "git" - "curl" configuration: - file: "~/.gitconfig" content: | [user] name = Developer email = developer@example.comState Management Features
RabbitHole's state management capabilities enable reliable environment lifecycle management:
State Tracking
Complete history of installed components, versions, and installation timestamps.
- Installation timestamps and durations
- Version information for all installed tools
- Dependency tracking and conflict detection
- Custom configuration and applied settings
State Operations
Full lifecycle management through state operations:
- verify: Check installation integrity and version consistency
- doctor: Comprehensive health check and diagnostics
- snapshot: Export current state to JSON for backup
- restore: Recover environment from snapshot