Skip to main content
Home/RabbitHole/Features

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

State 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