Requirements
- Joomla 5.0+
- PHP 8.1+
- MySQL 8.0+
Installation
- Download
pkg_xenarch.zipfrom the releases page - Go to System → Install Extensions in your Joomla admin panel
- Upload
pkg_xenarch.zip
What gets installed
The package contains three extensions:| Extension | Type | Purpose |
|---|---|---|
com_xenarch | Component | Admin dashboard + REST API |
plg_system_xenarch | System Plugin | Bot detection + payment gating |
plg_webservices_xenarch | Web Services Plugin | API route registration |
Configuration
After installation, go to Components → Xenarch to open the dashboard.Onboarding flow
- Register — create your publisher account
- Add site — link your Joomla site to the Xenarch platform
- Set payout wallet — enter your Base/Ethereum address for USDC payouts
Settings
| Setting | Default | Description |
|---|---|---|
default_price | $0.003 | Price per page in USD |
gate_enabled | Yes | Master toggle for payment gating |
gate_unknown_traffic | Yes | Gate non-browser traffic |
payout_wallet | — | Your Base address for payouts |
Bot category policies
Control how each type of AI traffic is handled:Per-bot overrides
Override the category default for specific bots:Pricing rules
Set different prices for specific paths:How it works
Request flow
- Skip — logged-in users, static assets, and
/.well-known/*paths always pass through - Check token — if the request has a valid
Authorization: Bearer <token>, allow it - Detect bot — match User-Agent against 100+ known AI bot signatures, then score headers
- Apply policy — check per-bot override, then category default
- Respond — allow (200), challenge (403 + browser proof), or gate (402 + payment payload)
Discovery documents
The plugin automatically serves:/.well-known/pay.json— machine-readable pricing for AI agents/.well-known/xenarch.md— human-readable payment instructions
Bot detection
Detection runs in priority order:- Signature match — 100+ known AI bot User-Agent strings
- Trusted search crawlers — Googlebot, Bingbot, etc. (always allowed)
- HTTP client signatures — python-requests, curl, wget, Go-http-client
- Browser proof cache — valid proof cookie from a previous challenge
- Header scoring — missing
Accept,Accept-Language,Sec-Fetch-*headers increase suspicion score
Build from source
Local development
Admin UI development
The dashboard is a React + TypeScript app:src/media/com_xenarch/js/ and src/media/com_xenarch/css/.