Skip to Content
Configuration

Configuration

AsyncAnticheat is highly configurable to match your server’s needs.

Plugin Configuration

The plugin configuration is stored in plugins/AsyncAnticheat/config.yml.

API Settings

api: url: "https://api.asyncanticheat.com" token: "your_api_token" timeout_seconds: 10 server_address: "" # Optional: e.g., "play.myserver.com:25565"
OptionDescriptionDefault
urlBase URL of your AsyncAnticheat APIRequired
tokenAuthentication token for API requestsRequired
timeout_secondsRequest timeout in seconds10
server_addressServer address for dashboard ping (auto-detected if empty)""

Note: The server_address is automatically detected from your server’s IP when the plugin connects to the API. Only set this manually if auto-detection doesn’t work (e.g., behind NAT or using a different public address).

Spool Settings

The spool is a local buffer for packets before they’re uploaded.

spool: dir: "spool" max_mb: 256 flush_interval_ms: 1000 drop_policy: "drop_oldest"
OptionDescriptionDefault
dirDirectory for spool files"spool"
max_mbMaximum spool size in MB256
flush_interval_msHow often to flush batches (ms)1000
drop_policyWhat to drop when full: drop_oldest or drop_newest"drop_oldest"

Capture Settings

Control which packets are captured and at what rate.

capture: enabled_packets: [] disabled_packets: [] sample_rate: 1.0
OptionDescriptionDefault
enabled_packetsWhitelist of packet types (empty = default list)[]
disabled_packetsBlacklist of packet types[]
sample_rateSampling rate (1.0 = 100%, 0.5 = 50%)1.0

Default Allow-List

When enabled_packets is empty, these packet types are captured:

  • Movement packets (position, rotation, ground state)
  • Combat packets (attacks, interactions)
  • Block interaction packets (dig, place)
  • Inventory packets (clicks, close)
  • Vehicle packets (steer, move)

Privacy Settings

privacy: redact_chat: true
OptionDescriptionDefault
redact_chatRemove chat message content from packetstrue

API Configuration

The API is configured via environment variables.

Required Variables

# Database DATABASE_URL="postgresql://user:pass@localhost:5432/asyncanticheat" # Authentication INGEST_TOKEN="your_secret_token" MODULE_CALLBACK_TOKEN="module_callback_secret"

Optional Variables

# Server HOST="0.0.0.0" PORT="3002" # Batch Processing MAX_BODY_BYTES="10485760" # 10MB # Module Pipeline MODULE_HEALTHCHECK_INTERVAL_SECONDS="10" # Object Storage (S3-compatible) S3_BUCKET="asyncanticheat-batches" S3_REGION="us-east-1" S3_ENDPOINT="https://s3.amazonaws.com" # For MinIO/Supabase S3_ACCESS_KEY="your_access_key" S3_SECRET_KEY="your_secret_key" # Local Storage (fallback when S3_BUCKET is empty) LOCAL_STORE_DIR="./data/object_store" # Cleanup (TTL) OBJECT_STORE_CLEANUP_ENABLED="false" OBJECT_STORE_CLEANUP_DRY_RUN="true" OBJECT_STORE_CLEANUP_INTERVAL_SECONDS="3600" OBJECT_STORE_TTL_DAYS="7" BATCH_INDEX_TTL_DAYS="7" # CORS CORS_ALLOW_ORIGINS="https://asyncanticheat.com,https://dashboard.asyncanticheat.com" CORS_PERMISSIVE_DEV="false" # Only set true for local development

Security Note: CORS_PERMISSIVE_DEV must be explicitly set to true to enable permissive CORS. This prevents accidental exposure in production. For production, always use CORS_ALLOW_ORIGINS to specify allowed domains.

Server-Specific Configuration

Per-Server Settings

Each server connecting to the API is identified by a unique server_id. You can configure different capture settings per server.

Exemption Configuration

Exempt specific players, permissions, or worlds from capture:

exemptions: # Exempt specific players players: - "admin_uuid_here" # Exempt by permission permissions: - "asyncanticheat.exempt" # Exempt by world worlds: - "creative_world"

Performance Tuning

High-Traffic Servers

For servers with 200+ players:

spool: max_mb: 512 flush_interval_ms: 500 capture: sample_rate: 0.5 # Capture 50% of packets

Low-Latency Detection

For competitive servers requiring fast detection:

spool: flush_interval_ms: 250 capture: sample_rate: 1.0

Minimal Resource Usage

For smaller servers or limited resources:

spool: max_mb: 64 flush_interval_ms: 2000 capture: sample_rate: 0.25
Last updated on
AsyncAnticheat v0.1.0Go to Dashboard →