NEW

BETA Testers get Argus free for three months, every update included. Request access →

UNDER THE HOOD

Everything itwatches for.

The full catalogue, the scoring model behind every ban, and the APIs you can build on. Nothing here is marketing — it is read straight from the shipped product.

Detection catalogue

Nothing vague. 86 named checks, and counting.

This is the real catalogue the resource ships with — the same names, descriptions, severities and default actions you will see in the configuration panel. Every one of them can be switched off, re-thresholded or re-pointed at a different action, per server.

Detections

86

15 categories

Ban by default

6

the rest kick, flag or log

Hold per-player state

5

the others are stateless

Flagged, never auto-banned

8

high false-positive risk

DetectionCategoryRuns onSeverityDefault
Aimbot — Camera Snapaimbot.snap

Camera heading and pitch jump onto a player hitbox faster than a human wrist can move, repeatedly.

AimbotClientHighflag
Silent Aimaimbot.silent

A shot registers on a target the shooter was never aiming at — the bullet impact and the camera vector disagree on the shot that just left the barrel.

AimbotClientHighflag
Aimbot — Sustained Trackingaimbot.trackingHigh FP risk

The crosshair holds sub-degree lock on a moving target across many frames with no human correction jitter.

AimbotClientMediumflag
Hit Outside The Aim Arcaimbot.off_axis

A player repeatedly landed shots on someone standing well behind the direction they were facing.

AimbotServerCriticalkick
Inhuman Target Switchaimbot.target_switch

A player hit two widely separated targets faster than aim can physically travel between them.

AimbotServerHighflag
Triggerbotaimbot.triggerbot

Trigger pulls land inside an impossibly tight window of the crosshair crossing a hitbox.

AimbotClientMediumflag
Damage From A Weapon Not Heldcombat.phantom_weapon

A damage event named a firearm the shooter's ped was not holding, and had not been holding a moment before.

CombatServerCriticalkick
Mass Damagecombat.mass_damage

One shooter damaged several different players inside a fraction of a second, each in a separate damage event.

CombatServerCriticalkick
Damage While Deadcombat.dead_shooter

A player kept dealing firearm damage while the server saw their ped as dead.

CombatServerMediumflag
Rapid Firecombat.rapid_fire

Shots leave the weapon faster than its defined rate of fire allows.

CombatServerHighkick
Damage Modifiercombat.damage_modifier

A single hit removes far more health than the weapon can deal, on three separate hits inside a minute.

CombatServerCriticalban
Infinite Ammocombat.infinite_ammo

Ammunition does not decrease across sustained fire, or exceeds the weapon maximum.

CombatClientMediumflag
Melee Reachcombat.melee_range

Melee damage lands on a ped well beyond the reach envelope of the equipped weapon.

CombatServerHighkick
Explosion Spamcombat.explosion_spam

Weapon-class explosions (grenades, rockets, sticky bombs) owned by one player exceed the burst limit. Vehicle, fuel, fire and environmental explosions never count.

CombatServerCriticalkick
Blacklisted Explosion Typecombat.blacklisted_explosion

A player owns a weapon-class explosion of a type not on your allowed list. Vehicle, fuel, fire and other environmental explosions are never checked against the list.

CombatServerCriticalban
Damage Multiplier Setcombat.weapon_damage_native

The player's weapon damage multiplier is above one, or their damage taken multiplier is below one, and differs from what the rest of the server is running.

CombatClient + serverHighflag
Impossible Hit Distancecombat.impossible_range

Damage lands on a ped far beyond twice the weapon's effective range and past an absolute floor of 80 metres.

CombatServerHighkick
Damage Across Instancescombat.cross_bucket_damage

The shooter damaged a player who is in a different routing bucket, meaning a player their game should not even be rendering.

CombatServerCriticalkick
Invisible Explosioncombat.invisible_explosion

A weapon-class explosion was created with its visual effect suppressed, which no in-game weapon does.

CombatServerCriticalkick
Explosion Far From Ownercombat.remote_explosion

A thrown explosive (grenade, molotov, pipe bomb) detonated more than 150 metres from the player who owns it.

CombatServerCriticalkick
Speed Hackmovement.speed_hack

Ground speed on foot exceeds the maximum achievable value, sampled by the server from the ped's real position.

MovementServerHighkick
Teleportmovement.teleport

Position changes by more than 120 metres between two samples with no vehicle involved and no respawn.

MovementServerHighkick
Noclipmovement.noclip

The ped has collision disabled while moving on foot, sustained for three seconds.

MovementClientCriticalkick
Fly Hackmovement.fly

The ped hovers metres above the ground with no fall, no parachute and no vehicle for several seconds.

MovementClientHighflag

Showing 24 of 86

Critical20

−100 Integrity on a confirmed hit

High36

−40 Integrity on a confirmed hit

Medium21

−18 Integrity on a confirmed hit

Low7

−8 Integrity on a confirmed hit

Info2

−3 Integrity on a confirmed hit

Integrity Score

Ban the pattern, not the moment.

Every player carries a 0–100 behavioural score. One ambiguous hit costs a few points; a cheat that keeps tripping the same check converges on a ban on its own. It is what lets ARGUS act on evidence that no single detection could justify.

010356090100
Hostile0–9

Auto-banning on score alone is off by default. You decide what happens here.

Restricted10–34

Entity creation and event rates are tightened for this player.

Watch35–59

Every action the player takes is recorded in full detail.

Normal60–89

The resting state of a healthy player.

Trusted90–100

Nothing is tightened. The player is invisible to the system.

Everyone starts at 100

A new connection is trusted until it earns otherwise. Nobody has to prove anything to play.

Repeat hits escalate

The same detection tripped again inside a session adds 35% of its penalty each time, and the multiplier stops at 3.1× after six repeats. A cheat that trips one check fifty times converges on a ban; a single noisy hit does not.

Risk-graded penalties

A detection graded medium false-positive risk costs 75% of its penalty; high risk costs 40%. Uncertainty is priced in rather than argued about afterwards.

Recovers at 2 points an hour

Clean play returns points at a rate you set, and the score never climbs past 100. A bad night is not a permanent record.

Watch below 60

Full-detail recording switches on so that when the next hit lands, the evidence is already there.

Restrict below 35

Spawn and event rate limits tighten for that player alone — the rest of the server is untouched.

What a confirmed hit costs

Before escalation and risk grading.

SeverityChecksPoints
Critical20−100
High36−40
Medium21−18
Low7−8
Info2−3

Resource API

Teach it what your scripts are allowed to do.

Most false positives are a script doing something legitimate that looks exactly like a cheat. Rather than blinding the anti-cheat, tell it what is about to happen — one line, server-side Lua, no framework assumptions.

Authorise, do not ignore

Before your script does something a cheater could also do, say so. The grant expires on its own, so the hole closes even if your script crashes mid-way.

Route your own logic through the pipeline

reportPlayer hands your anti-exploit checks the same thresholds, Integrity Score, panel history, Discord alerts and ban decision the built-in detections get.

Protect your events

Mark any of your server events as server-to-server only. A client that triggers one is flagged instantly, and block also cancels the call.

Everything the panel can do, over HTTPS

Bans, players, detections and live commands are all available with an API key you create in the panel. Webhooks push ban.created, ban.removed and detection.raised the other way, HMAC-signed.

server.lua
-- duration is seconds; -1 (the default) is permanent.
local banId = exports['argus']:banPlayer(source, 'Duping money', { item = 'cash' }, -1)

exports['argus']:kickPlayer(source, 'AFK in a restricted zone')

-- Lift a ban by the public code the player was shown.
exports['argus']:unbanPlayer('AR-7K3QPX', 'appealed and accepted', 'AdminName')

local exists, ban = exports['argus']:getBanInfo('AR-7K3QPX')

Seen enough?

Five minutes from now your server could be running all of it.

Protect my server