Download the PHP package monovm/abuseai without Composer

On this page you can find all versions of the php package monovm/abuseai. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package abuseai

Abuse AI

AI-powered abuse management platform for hosting companies and ISPs.

CI Docker Image Docker Pulls PHP

Receives, triages, scores, and actions abuse reports with AI at every key step. Built with Laravel, Livewire, and Claude/OpenAI.

Deploy in one click

Deploy to Render Deploy to Heroku Deploy to DigitalOcean

Each button builds the same Dockerfile that Docker Compose uses and provisions the app, a queue worker, and PostgreSQL. Render and Heroku add Redis too; on DigitalOcean you supply it (details in Deploy to the cloud). Prefer your own host? docker compose up -d — see Installation.

Built by MonoVM — main sponsor of this project.

License: Apache License 2.0 — open source. You may freely use, copy, modify, and redistribute this software for any purpose, including commercial and managed-service use, subject to the conditions of the license. See LICENSE for the full terms.

Reporting a security issue? See SECURITY.md. Want to contribute? See CONTRIBUTING.md.


Table of Contents


Overview

Abuse AI is a centralized abuse desk that:

  1. Ingests reports from email, API, webhooks, web form, and feeds
  2. Classifies them with AI (type, severity, noise filtering, translation)
  3. Matches target IPs against your IP inventory
  4. Creates cases with severity scoring and SLA tracking
  5. Enriches with threat intelligence (AbuseIPDB, VirusTotal, Shodan, DNSBL, Microsoft SNDS)
  6. Automates actions (suspend, block, escalate, notify)
  7. Communicates via branded email (Mandrill) with AI-drafted replies
  8. Monitors IP reputation across 6 data sources continuously

Architecture


Pipeline Flow

When an email arrives:

When a web form / API report arrives:

Reputation scan (every 6 hours):


Features

Case Management

12 Abuse Types

Type Weight Auto-detected from
Spam 2 spam, uce, unsolicited, bulk mail
Phishing 4 phish
Malware 5 malware, virus, trojan, ransomware
DDoS 6 ddos, denial of service, amplification
CSAM 10 csam, child (immediate escalation)
Copyright / DMCA 2 copyright, dmca, infringement
Fraud / Scam 4 fraud, scam, identity theft
Law Enforcement 8 police, criminal, court order, subpoena, cybercrime
Brute Force 3 brute force, port scan
Intrusion / Hacking 6 intrusion, hacking, exploit
Botnet / C2 7 botnet, c2, command and control
Other 1 fallback

Severity Scoring Formula

Action thresholds:

AI Integration (Claude / OpenAI)

IP Inventory

IP Reputation System (6 Collectors)

Collector Source Max Penalty Checks
AbuseIPDB API -50 pts Abuse confidence score
DNSBL DNS -40 pts CBL, PSBL, Spamhaus ZEN, Barracuda, SpamCop
VirusTotal API -30 pts Malicious detection ratio
Microsoft SNDS API -30 pts Spam traps, filter status, blocked
Shodan API -25 pts Known CVE vulnerabilities
Open Cases DB -20 pts Existing unresolved cases

Score thresholds:

Multi-Brand Email

Email Loop Prevention

Automation Rules

Audit Trail


Installation

Run with Docker (recommended)

The fastest way to get the full stack — web UI, queue workers, scheduler, PostgreSQL, and Redis — running:

Open http://localhost:8000. To start with an admin login already seeded:

Prebuilt multi-arch images are on Docker Hub (monovmcom/abuseai.io) and GHCR (ghcr.io/monovm/abuseai). See docs/docker.md for the full guide.

Deploy to the cloud

The one-click buttons are at the top of this README. What each target gives you:

Step-by-step instructions for each: docs/docker.md.

Requirements (manual install)

Manual installation steps

Admin Accounts (seeder)

php artisan db:seed runs the AdminSeeder, which creates two admin accounts ([email protected], [email protected]). Each gets a strong random password that is printed once to the console — copy it from the seed output, it is not stored anywhere else:

To pin a known password instead (CI, throwaway demo), set SEED_ADMIN_PASSWORD before seeding. Re-running the seeder never resets an existing account's password.

Hardening checklist (do this before going live)

  1. Webserver docroot must point at public/, not the project root. .env, app/, config/, storage/, etc. live above the docroot in the safe layout — they cannot be served at all. See deploy/nginx.conf.example for an nginx vhost. The bundled root .htaccess is for shared-hosting layouts where you can't change the docroot; it has explicit deny rules for .env, composer.*, dotfiles, and the source directories.
  2. Set APP_DEBUG=false and APP_ENV=production in your real .env.
  3. Set SESSION_ENCRYPT=true and SESSION_SECURE_COOKIE=true.
  4. Skip the demo seeder in production (or, if you ran it, change the seeded admin password after first login — see Admin Accounts above).
  5. Enforce HTTPS at the edge (nginx/Cloudflare). Add HSTS once you've confirmed every subdomain has a valid cert.
  6. Make sure your reverse proxy is in config/cloudflare.php (or set TRUSTED_PROXIES) so request()->ip() returns the real client.

Configuration

.env Variables

Note on data sources: Spamhaus, CBL, PSBL, Barracuda, and SpamCop data is collected via DNS lookups (DNSBL) — no API keys needed. Microsoft JMRP (Junk Mail Reporting Program) sends ARF-formatted emails to your abuse inbox — no webhook needed. SpamCop also sends reports via email. Google Postmaster data must be checked manually at postmaster.google.com.

Roles & Permissions

Role Access
admin Full access: cases, settings, users, AI, rules
agent Cases, reports, customers, IPs, AI triggers
viewer Read-only: cases, reports, analytics

Usage Guide

1. Set Up Your IP Inventory

Go to /admin/ips and import your IP ranges:

2. Create Brands

Go to /admin/brands:

  1. Create a brand (e.g., "Acme Hosting") with from email, signature, footer
  2. Add a POP3/IMAP connection linked to that brand
  3. Enable auto-import on the connection
  4. Test the connection

3. Configure AI Provider

Go to /admin/ai-settings:

  1. Select Claude or OpenAI
  2. Choose model
  3. Test connection

4. Start Processing

Cases are created automatically when:

5. Work Cases

At /admin/cases:

  1. Review incoming cases
  2. View threat intelligence data
  3. Use AI to draft replies
  4. Reply directly via email (branded, threaded)
  5. Change status, add notes
  6. Close or escalate

Data Collection Sources

How Each Source Delivers Data

Source How We Get Data API Key? Creates Cases?
Email reports POP3 polling (every 2 min) No (POP3 credentials) YES — directly
SpamCop Sends email to your abuse@ inbox No YES — via email poll
Microsoft JMRP Sends ARF email to abuse@ inbox No YES — via email poll
AbuseIPDB feed API polling (every 15 min) ABUSEIPDB_KEY NO — reputation only
AbuseIPDB check API per-IP lookup ABUSEIPDB_KEY NO — reputation only
Spamhaus DNSBL DNS lookup No NO — reputation only
CBL DNSBL DNS lookup No NO — reputation only
PSBL DNSBL DNS lookup No NO — reputation only
Barracuda DNSBL DNS lookup No NO — reputation only
SpamCop BL DNSBL DNS lookup No NO — reputation only
VirusTotal API per-IP/domain lookup VIRUSTOTAL_KEY NO — reputation only
Shodan API per-IP lookup SHODAN_KEY NO — reputation only
Microsoft SNDS API bulk data export SNDS_KEY NO — reputation only
Web form Public page at /report No YES — directly
REST API POST /api/v1/reports API key or Bearer token YES — directly
Manual /admin/cases/create No (admin login) YES — directly
Reputation drop Score falls below 30/100 — YES — one per IP

What Creates Cases vs What Updates Reputation

Cases are created from human-initiated reports: email inbox, web form, API, webhooks, manual creation. These represent someone actively reporting an issue.

Automated scans only update reputation: AbuseIPDB, DNSBL, VirusTotal, Shodan, SNDS. These are background checks that monitor your IP health. A case is auto-created only when reputation drops critically low (<30/100), ensuring you're not flooded with automated cases.


IP Inventory & Reputation

How IPs are Checked

Only IPs in your active inventory generate cases. This prevents creating cases for IPs you don't manage.

When a report mentions an IP:

  1. System scans all IPs in the email/report body
  2. Checks each against the ip_addresses table
  3. First match with status = active becomes the case target
  4. Customer auto-linked if IP has a customer_id

Reputation Dashboard (/admin/reputation)

Shows all IPs with:

Reputation vs Direct Reports

Source Creates Case? When?
Email report YES Immediately
Web form YES Immediately
API report YES Immediately
Webhook YES Immediately
Manual creation YES Immediately
AbuseIPDB scan NO Updates reputation only
DNSBL scan NO Updates reputation only
VirusTotal scan NO Updates reputation only
Shodan scan NO Updates reputation only
SNDS scan NO Updates reputation only
Reputation < 30 YES One case per IP, resets at 50

Email System

Inbound (Receiving Reports)

Method Configuration
POP3 polling /admin/brands → Add connection → Enable auto-import
Email API POST /api/v1/inbound-email with raw email body
Webhook POST /api/v1/webhook/{provider} (ARF, SpamCop, FBL)

Outbound (Sending Replies)

Feature How
ACK on case creation Automatic via abuse:poll-mailbox
Reply from case Click "Reply via Email" on case detail
Brand selection Choose brand in reply form
AI drafts Click "Draft Reporter Reply" → "Use as Reply"
Threading In-Reply-To / References headers auto-set

SMTP Fallback (when Mandrill is down)

If Mandrill rejects a message, errors, or has no API key, the email is automatically re-sent through the brand's own mailbox over SMTP — so outbound mail keeps flowing per-brand during an ESP outage:

Loop Prevention

The system prevents email loops by:

  1. Detecting our case number [ABU-XXXX-XXXXX] in subject or body → follow-up
  2. Matching In-Reply-To header against sent emails → follow-up
  3. Detecting quoted ACK template text → follow-up
  4. Skipping emails from our own addresses
  5. Skipping auto-replies, OOO, delivery failures
  6. Content analysis: strips ISP wrapper + our template, checks if meaningful content remains

API Reference

Authentication

Two methods:

Endpoints

Submit Report

Submit ARF Report (RFC 5965)

Bulk Report

Check Case Status

Webhook / Inbound Endpoints

Note: Most abuse data comes via email (POP3) and API polling, not webhooks. SpamCop, Microsoft JMRP, and other ISPs send reports as emails to your abuse address. Spamhaus, CBL, PSBL, Barracuda are checked via DNSBL DNS lookups. The webhook endpoints exist for custom integrations where you want to push data into Abuse AI.


Artisan Commands

Email & Feed Polling

IP Reputation Scanning

Legacy Commands (still available)


Scheduler & Automation

Cron Setup

Scheduled Tasks

Interval Command What it does
Every 2 min abuse:poll-mailbox Fetch emails → create cases → send ACK
Every 15 min abuse:poll-feeds Poll AbuseIPDB API feed
Every 6 hours abuse:scan-reputation Scan 500 IPs, update reputation, create cases

Supervisor (Optional)


Tech Stack

Layer Technology
Framework Laravel 13 (PHP 8.4+)
Database MySQL 8 / PostgreSQL 16
Frontend Livewire 3 + Alpine.js
AI Claude API / OpenAI API (switchable)
Email Sending Mandrill (Mailchimp Transactional)
Email Receiving POP3 (native socket implementation)
Threat Intel AbuseIPDB, VirusTotal, Shodan, DNSBL, Microsoft SNDS
Auth Laravel Breeze + Sanctum
Roles Spatie Laravel Permission
Queue Redis + Horizon (optional)
Tests Pest PHP (93 tests)

Admin Pages

URL Page
/admin/cases Case queue (filter, sort, bulk actions)
/admin/cases/create Create case manually
/admin/cases/{id} Case detail + AI panel + reply
/admin/customers Customer list
/admin/ips IP inventory (add, import, manage)
/admin/reputation IP reputation dashboard
/admin/abuseipdb AbuseIPDB IP checker
/admin/email-inbox Email inbox (POP3, multi-connection)
/admin/reporters Reporter list
/admin/analytics Dashboard with charts
/admin/audit-log Audit log viewer
/admin/users User management (create, roles)
/admin/brands Brands & email connections
/admin/rules Automation rules (CRUD)
/admin/templates Email templates (CRUD)
/admin/ai-settings AI provider selection
/report Public abuse report form

Contributing

Contributions are welcome. The full guide — dev setup, conventions, PR process, code-style and test requirements — lives in CONTRIBUTING.md. Quick links:

By contributing, you agree your contributions will be licensed under the Apache License 2.0.


License

This project is licensed under the Apache License 2.0.

You may freely use, modify, and redistribute the source — including for commercial and managed-service use — subject to the conditions of the license (retain copyright/license notices, mark modified files, etc.). The license also includes an explicit grant of patent rights from contributors.


Sponsors

Abuse AI is built and maintained by MonoVM — the project's main sponsor. MonoVM is a global hosting provider running shared, VPS, dedicated, and colocation services, and uses Abuse AI in production to keep its abuse desk under control.

Want to sponsor the project? See GitHub Sponsors.


All versions of abuseai with dependencies

PHP Build Version
Package Version
Requires php Version ^8.4
elasticsearch/elasticsearch Version ^9.3
guzzlehttp/guzzle Version ^7.10
laravel/framework Version ^13.0
laravel/horizon Version ^5.45
laravel/sanctum Version ^4.3
laravel/tinker Version ^3.0
league/flysystem-aws-s3-v3 Version ^3.32
livewire/livewire Version ^4.2
maxmind-db/reader Version ^1.13
openai-php/laravel Version ^0.19.1
smalot/pdfparser Version ^2.12
spatie/laravel-activitylog Version ^5.0
spatie/laravel-permission Version ^7.2
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package monovm/abuseai contains the following files

Loading the files please wait ...