Skip to main content
Version: Next

๐Ÿงช Alchemies

โšก Dynamic Recipe System

Define detection rules in YAML format instead of relying only on built-in hardcoded recipes. Create custom detection patterns with hot reload support and comprehensive validation.

๐ŸŽฏ Key Featuresโ€‹

๐Ÿ”„ Dynamic Loadingโ€‹

Load recipes on-the-fly without system restart.

๐Ÿ”ฅ Hot Reloadโ€‹

Update rules without restart - changes apply automatically.

๐Ÿ“ฆ Built-in Recipesโ€‹

Pre-configured detection patterns shipped with Jibril.

โœ… Validationโ€‹

Automatic rule verification ensures correctness.

๐ŸŽฏ Multiple Typesโ€‹

File access, execution, and network peer detections.

๐Ÿ’ก Tip: Check out Jibril's public recipes repository at https://github.com/garnet-org/jibril-recipes for community-contributed detection rules.

๐Ÿ“š Documentationโ€‹

๐Ÿ›๏ธ Architectureโ€‹

The alchemies system consists of several key components:

  1. Alchemy - The YAML representation of a detection recipe
  2. Recipe - The runtime detection rule generated from an alchemy
  3. Monitor - Watches external directories for YAML file changes
  4. Validation - Ensures recipe configurations are correct

๐Ÿ”„ Monitoring and Hot Reloadโ€‹

When using external recipe directories with the path option, the alchemies system automatically:

  1. โœ… Monitors the directory for changes
  2. โœ… Loads new YAML files when added
  3. โœ… Reloads modified files
  4. โœ… Removes recipes when files are deleted
  5. โœ… Validates all changes before applying

โœ… Best Practicesโ€‹

๐Ÿ“ Use Descriptive Names

Recipe kind and name should clearly indicate what they detect.

๐ŸŽฏ Set Appropriate Limits

Use times entries to reduce false positives.

๐Ÿงช Test Thoroughly

Start with enabled: false and test before enabling.

๐Ÿ“š Document Well

Include links to documentation explaining detection logic.

๐Ÿ”€ Version Control

Track recipe files in git for change management.

๐Ÿ“ Organize by Type

Group similar recipes in subdirectories.

๐Ÿ”ง Common Issuesโ€‹

Recipe Not Loadingโ€‹

  • Check YAML syntax
  • Verify all required fields are present
  • Look for validation errors in logs

Too Many Alertsโ€‹

  • Adjust times limits
  • Add arbitrary filters
  • Use more specific patterns

Missing Detectionsโ€‹

  • Verify enabled: true
  • Check file/network patterns match
  • Ensure correct file_actions are specified

Debug Tipsโ€‹

  • Set log-level: debug in config.yaml
  • Check logs for activating and deactivating messages
  • Validation errors appear as ignoring errored recipe