Skip to main content

Agent wrapper for radegast EDR — syncs detection packs and forwards encrypted alerts

Project description

Radegast Agent

Agent wrapper for the rustinel EDR binary. This project syncs detection packs from a backend, extracts rules into the local rules/ tree, and forwards encrypted alert lines from logs/ to the backend.

Features

  • Syncs detection packs via backend API
  • Extracts sigma, yara, and merged ioc rules
  • Tracks IOC ownership across packs so removed pack IOC files are cleaned up safely
  • Tails alerts.json logs and forwards encrypted alerts to the backend
  • Optional local rustinel process startup controlled by configuration

Requirements

  • Python 3.11+
  • hatchling build backend for packaging

Installation

You can also install this project as a UV tool directly from GitHub:

uv tool install git+https://github.com/radegast-edr/radegast-agent-python

radegast-edr-agent --version

Configuration

The agent uses environment variables prefixed with RADEGAST_AGENT_.

Variable Default Description
RADEGAST_AGENT_BACKEND_URL http://localhost:8000/api/v1 Backend API URL, including the default /api/v1 path
RADEGAST_AGENT_DEVICE_TOKEN `` Device token for authenticating to the backend
RADEGAST_AGENT_RUSTINEL_BINARY ./rustinel Local path to the rustinel binary
RADEGAST_AGENT_RULES_DIR ./rules Base directory for extracted rules
RADEGAST_AGENT_ALERTS_DIR ./logs Directory containing alert files
RADEGAST_AGENT_ALERTS_FILENAME alerts.json Alert file base name
RADEGAST_AGENT_SEND_SEVERITY true If true, parse the severity of the alert and send it unencrypted in the request
RADEGAST_AGENT_SEND_RULE_ID true If true, parse rule.id from the alert and sends it unencrypted in the request
RADEGAST_AGENT_SEND_EXCLUDED_BY true If true, send the exclusion ID for soft exclusions unencrypted in the request
RADEGAST_AGENT_MAX_LOG_SIZE_MB 10 Maximum size of the rustinel log file in MB before rotation
RADEGAST_AGENT_MAX_LOG_AGE_DAYS 720 Maximum age of rotated rustinel log archives in days before deletion
RADEGAST_AGENT_SYNC_INTERVAL 300 Seconds between pack sync checks
RADEGAST_AGENT_AUTOUPDATE_INITIAL_DELAY 300 (5 minutes) Seconds until first autoupdate check after startup
RADEGAST_AGENT_AUTOUPDATE_INTERVAL 86400 (24 hours) Seconds between subsequent autoupdate checks
RADEGAST_AGENT_INIT_WAIT_SECONDS 90 Seconds to wait for backend to re-encrypt exclusions on new key registration
RADEGAST_AGENT_SIGNING_KEY_PATH ${RADEGAST_AGENT_STATE_DIR:-./.radegast-agent}/device_key Path to the device signing keypair
RADEGAST_AGENT_ENCRYPTION_KEY_PATH ${RADEGAST_AGENT_STATE_DIR:-./.radegast-agent}/device_enc_key Path to the device encryption keypair
RADEGAST_AGENT_STATE_DIR ./.radegast-agent Local state directory for manifests, offsets, and the default signing key location

Notes

  • The agent does not launch rustinel — it must be started separately. The agent only tails alerts from the configured alerts_dir.
  • If RADEGAST_AGENT_SIGNING_KEY_PATH is unset, it defaults to ${RADEGAST_AGENT_STATE_DIR:-./.radegast-agent}/device_key.
  • IOC files are merged into rules/ioc/ and an ownership registry is kept in rules/ioc/ioc_packs.json.

Usage

Run the agent via the console script:

radegast-edr-agent

Print the installed version:

radegast-edr-agent --version

Or with Python directly:

python -m radegast_edr_agent.cli

Project layout

  • radegast_edr_agent/ — application package
    • cli.py — main entry point
    • config.py — environment-backed config schema
    • client.py — backend API client
    • packs.py — pack synchronization and extraction
    • process.py — subprocess management for rustinel
    • tailer.py — alert file tailing and forwarding
    • version.py — version reporting and detection utilities
    • autoupdate.py — agent autoupdate functionality
  • tests/ — unit tests
  • pyproject.toml — package metadata and build config

Testing

Run the test suite with:

.venv/bin/python -m pytest

License

This project does not include a license file by default. Add a LICENSE file if you want to define reuse terms.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

radegast_edr_agent-0.5.2.tar.gz (85.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

radegast_edr_agent-0.5.2-py3-none-any.whl (27.0 kB view details)

Uploaded Python 3

File details

Details for the file radegast_edr_agent-0.5.2.tar.gz.

File metadata

  • Download URL: radegast_edr_agent-0.5.2.tar.gz
  • Upload date:
  • Size: 85.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for radegast_edr_agent-0.5.2.tar.gz
Algorithm Hash digest
SHA256 ccbdf5e44bd531b1dad2fa733d2f39d883e81912b0bf1e81ec714f8a6b1d3f1e
MD5 2edf6d4fcd7f813026d0c954c6184c1f
BLAKE2b-256 1b4a90bdc332acda85e0c31074f157699c65047f17df447141df1760f90c6b5f

See more details on using hashes here.

Provenance

The following attestation bundles were made for radegast_edr_agent-0.5.2.tar.gz:

Publisher: ci-cd.yml on radegast-edr/radegast-agent-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file radegast_edr_agent-0.5.2-py3-none-any.whl.

File metadata

File hashes

Hashes for radegast_edr_agent-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ff4125a6dc734c25a874b7a6eb76fb3e7223c7fb326d181de95ae43c39365155
MD5 44c99c31a21ed2a8752d2d10efce8297
BLAKE2b-256 357e04ddf96128551a9339a5de162435da128f5063ea27bf1869545e3bcef8bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for radegast_edr_agent-0.5.2-py3-none-any.whl:

Publisher: ci-cd.yml on radegast-edr/radegast-agent-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page