Skip to main content

AA Hostile Intel

PyPI Python Django Alliance Auth License: GPL v3

AA Hostile Intel is an operational tactical intelligence, non-ESI structure tracking, fitting inspection, and combat threat analysis platform for Alliance Auth.

Designed specifically to eliminate cognitive friction and decision latency during live operations, it empowers fleet commanders (FCs), scouts, and intelligence officers to track hostile infrastructure, parse non-ESI fittings, calculate combat drop risks, monitor sovereignty vulnerability windows, and profile hostile alliance timezones.


Key Features

  • ⚡ Tactical Command Center Dashboard:

    • Universal Fast-Triage Hero Deck: Omnisearch bar for instant client-side queries across pilots, systems, alliances, and timers; direct smart clipboard parser dropzone; and a Home Staging Anchor filter calculating live jump routing across all cards.
    • Temporal Urgency KPI Deck: Time-sensitive operational metrics (Timers <6h, Timers <24h, Active Sov Campaigns, Active Gate Camps, 7-Day Hotspots, Tracked Supers & Cynos).
    • Two-Column Operational Layout: Separates immediate tactical threats (urgent timers with live ticking countdowns and 1-click FC Discord pings, active gate camps with time-decay status badges, recent threat scans) from strategic landscape monitoring (hotspot activity rankings, active sovereignty battles, hostile staging hubs, and fleet doctrines).
    • Real-Time Live Intelligence Feed: Unified chronological ticker tracking sitreps, structure discoveries, timer updates, and threat scans with 60-second background auto-synchronization.
  • 🛰️ Non-ESI Structure & Fitting Ingestion:

    • Smart Multi-Format Parser: Automatically classifies D-Scans, structure show-info copy-pastes, and EFT fitting blocks.
    • SDE Asset Identification: Resolves structure types, celestial locations, owner tickers, quantum core statuses, and fitted modules via eve_sde.
    • Interactive Module Inspection: Corptools-inspired High, Medium, Low, Rig, and Service slot modals with official CCP asset icons and 1-click Copy EFT to Clipboard export for Pyfa and EVE Online.
  • ⚔️ Sovereignty Campaign & Contest Timers:

    • Dynamic Real-Time Polling: Tracks active and upcoming ADM sovereignty campaigns with 60-second change detection polling and live DOM updates.
    • Contest Score Donuts: Visual 60/40 circular donut charts, ongoing contest indicators, and defender/attacker score tracking.
    • Staging Proximity Routing: Real-time gate jump counts and jump drive light-year calculations from your home staging base.
  • ⏱️ Structure Reinforcement Timers Board:

    • Dedicated timer board tracking hostile armor and hull vulnerability windows.

    • Live client-side ticking countdowns with multi-layer ambient tactical pulse glows for imminent timers.

    • One-click Fleet Commander (FC) Discord / broadcast ping generator formatted with target system, structure type, and time remaining.

    • Paste a reinforcement timer: in Add Timer, paste the timer copied from a reinforced structure (… Reinforced until 2026.11.03 19:13:30).

      • If the name matches a known structure, that structure is selected and the time and likely stage are filled in, so you just press Save.
      • For generic names like Mercenary Den, you pick from the matching known structures.
      • For unknown names, the structure fields are pre-filled (system from a <System> - <Name> prefix, type from a generic name), so the timer and the new structure are added together.

      Saving updates the structure's state in the registry (Armor / Hull / Reinforced). Pasting a timer that already exists doesn't add it twice.

  • 🎯 Local Threat Scanner & Drop Risk Engine:

    • Asynchronous Pilot Intelligence Streaming: Non-blocking local chat paste ingestion that eliminates HTTP gateway timeouts by streaming pilot corporation, alliance, top flown ships, and loss data in the background.
    • Drop Probability Algorithms: Evaluates pilot combat histories, cyno loss records, and zKillboard tags to estimate real-time Black Ops (Blops) and Capital drop risks.
    • Grid Anchor & Ship Composition: Combines Local chat rosters with D-Scan items to classify grid composition and identify hostile FCs.
  • 📡 Tactical Sitreps & Gate Camp Ingestion:

    • Time Seen & Freshness Tracking: UTC timestamps with 1-click "Now" and relative time offsets (-15m, -30m, -1h, -2h, -4h).
    • Interactive Threat Classification Tags: Preselectable pills (Gate Camp, Bubbles on Gate, Smartbomb Trap, Blops Hunter, Capital Fleet, Cyno Beacon, Roving Gang) with on-the-fly custom tag creation.
    • Integrated Local & D-Scan Scanner: Submitting camp sitreps allows optional Local chat and D-Scan pastes, generating linked LocalThreatScan records and auto-applying threat tags.
    • 1-Click FC Ping Generator: Instant Discord-formatted broadcast pings detailing system, freshness, threat level, bubble status, and linked threat analysis.
  • 👤 Hostile Pilot Dossiers Registry:

    • Comprehensive database tracking hostile cyno alts, supercarrier/titan pilots, fleet commanders, and scouts.
    • Searchable across character names, corporations, alliances, alt associations, notes, and behavioral tags with multi-role category filtering.
  • 🏛️ Alliances, Corporations & Coalitions Profiling:

    • Automated ESI and zKillboard tracking of hostile coalition hierarchies, sovereignty footprints, and member counts.
    • Primary operational timezone profiling (USTZ, EUTZ, AUTZ) derived from vulnerability distributions and 7x24 activity heatmaps.
    • Formup potential estimations for subcap, capital, and supercapital fleets.
  • 🚀 Hostile Staging Hubs & Fleet Doctrines:

    • Track forward deployment bases, lowsec staging hubs, and nullsec citadels outside target sovereignty.
    • Catalog fleet doctrines (Mainline Fleet, Skirmish / HACs, Capital / Super, Home Defense, Roaming) with example fittings, zKillboard killmail references, and interactive slot inspection.
  • 🔒 Tiered Moderation & Audit Logging:

    • Role-based access control with granular permissions (basic_access, manage_intel, officer_access).
    • Immutable audit logs recording all operator creations, edits, and deletions.

Installation

1. Install Package

Install the package into your Alliance Auth virtual environment:

pip install aa-hostile-intel

2. Configure Alliance Auth Settings

In your local.py settings file, add hostile to INSTALLED_APPS:

INSTALLED_APPS += [
    "hostile",
]

3. Configure Periodic Celery Tasks

Run python manage.py hostile_setup_tasks to register all periodic tasks, or add them to CELERYBEAT_SCHEDULE in local.py yourself:

from celery.schedules import crontab

# Periodic ESI Sovereignty & Structure Map Synchronization (Every 2 Hours)
CELERYBEAT_SCHEDULE["hostile_update_sovereignty_intelligence"] = {
    "task": "hostile.tasks.update_sovereignty_intelligence",
    "schedule": crontab(minute="0", hour="*/2"),
}

# Periodic Active Sovereignty Campaign Synchronization (Every 15 Minutes)
CELERYBEAT_SCHEDULE["hostile_update_sovereignty_campaigns"] = {
    "task": "hostile.tasks.update_sovereignty_campaigns",
    "schedule": crontab(minute="*/15"),
}

# Periodic zKillboard Entity Statistics & Member Counts (Every 6 Hours)
CELERYBEAT_SCHEDULE["hostile_update_all_zkill_stats"] = {
    "task": "hostile.tasks.update_all_zkill_stats",
    "schedule": crontab(minute="30", hour="*/6"),
}

# Two-way sync with aa-structuretimers / Timerboard (Every 15 Minutes)
CELERYBEAT_SCHEDULE["hostile_sync_timerboard_timers"] = {
    "task": "hostile.tasks.sync_timerboard_timers",
    "schedule": crontab(minute="*/15"),
}

# Friendly timers from corptools structure notifications (Every 5 Minutes, optional)
CELERYBEAT_SCHEDULE["hostile_import_corptools_notification_timers"] = {
    "task": "hostile.tasks.import_corptools_notification_timers",
    "schedule": crontab(minute="*/5"),
}

4. Run Migrations & Collect Static Files

python manage.py migrate
python manage.py collectstatic --noinput

5. Restart Services

Restart your Alliance Auth supervisor or systemd services:

supervisorctl restart all

Configuration Settings

You can customize app behavior by adding the following optional settings to your local.py:

Setting Type Default Description
HOSTILE_SOV_SYNC_MINUTES int 60 Interval (in minutes) for caching ESI sovereignty map and structure vulnerability syncs.
HOSTILE_CAMPAIGN_SYNC_MINUTES int 15 Interval (in minutes) for caching active ESI sovereignty campaign syncs.
HOSTILE_AUTO_VERIFY_OFFICER_POSTS bool True Automatically marks system observations submitted by users with hostile.manage_intel as verified.
HOSTILE_MAX_ACTIVE_OBSERVATION_DAYS int 7 Number of days before unverified or inactive system observations are pruned from active feeds.
HOSTILE_ZKILL_ENABLED bool True Enables automated background zKillboard statistics and pilot intelligence queries.
HOSTILE_ZKILL_SYNC_HOURS int 6 Cache duration and sync interval for entity-level zKillboard statistics.
HOSTILE_ZKILL_MIN_REQUEST_INTERVAL float 0.5 Minimum delay in seconds between successive zKillboard API calls to ensure respectful rate limiting.
HOSTILE_ZKILL_USER_AGENT str None Custom User-Agent header for zKillboard requests (defaults to auto-generated AA Hostile Intel User-Agent).
HOSTILE_MAIN_ALLIANCE_ID int None Friendly / home alliance ID (defaults to ALLIANCE_ID if defined). Used for threat filtering.
HOSTILE_MAIN_ALLIANCE_NAME str None Friendly / home alliance name (defaults to ALLIANCE_NAME if defined).
HOSTILE_IGNORED_ALLIANCE_IDS list[int] [] List of alliance IDs to exclude from hostile threat tracking and classification.
HOSTILE_IGNORED_ALLIANCE_NAMES list[str] [] List of alliance names to exclude from hostile tracking.
HOSTILE_IGNORED_ALLIANCE_TICKERS list[str] [] List of alliance tickers to exclude from hostile tracking.
HOSTILE_IGNORED_CORP_IDS list[int] [] List of corporation IDs to exclude from hostile tracking.
HOSTILE_IGNORED_CORP_NAMES list[str] [] List of corporation names to exclude from hostile tracking.
HOSTILE_CORPTOOLS_NOTIFICATIONS_ENABLED bool True Create friendly structure timers from structure notifications stored by corptools (no effect if corptools isn't installed).
HOSTILE_CORPTOOLS_NOTIFICATION_LOOKBACK_HOURS int 24 How far back (in hours) stored notifications are scanned for timers.
HOSTILE_NOTIFICATION_TIMER_TOLERANCE_MINUTES int 10 Timers of the same type on the same structure within this window count as the same timer when de-duplicating.

Friendly Timers from Corptools Notifications

If allianceauth-corptools is installed and pulls character notifications (esi-characters.read_notifications.v1) for your directors / station managers, Hostile Intel turns structure notifications into friendly timers. No aa-structures is needed:

Notification Timer
StructureLostShields Armor
StructureLostArmor Hull
StructureAnchoring / StructureUnanchoring Anchoring / Unanchoring
OrbitalReinforced (Customs Office), SkyhookLostShields, MercenaryDenReinforced Hull (final)

Timers are posted to aa-structuretimers only. They are friendly structure timers, so they are never copied to the Alliance Auth Timerboard, which is for fleet operations. Only notifications from the last HOSTILE_CORPTOOLS_NOTIFICATION_LOOKBACK_HOURS (24h) are read, and timers that have already passed are ignored.

Several checks stop a timer from being posted twice:

  1. A notification that was already handled is skipped. This also covers several directors receiving the same notification.
  2. If Hostile Intel already has the same timer (same structure or system, same type, within HOSTILE_NOTIFICATION_TIMER_TOLERANCE_MINUTES), that timer is reused. A timer is only treated as different if it is clearly on another structure (different structure ID, type or real name) or belongs to a known hostile owner.
  3. If aa-structuretimers already has an equivalent timer (same system, same type, within the tolerance; Hull and Final count as the same; not a Hostile-objective timer), it is linked instead of reposted. Two timers are only treated as different when both have a real structure name and the names differ. Anything ambiguous counts as a duplicate.
  4. A linked timer belongs to whoever posted it (e.g. aa-structures). Hostile Intel never writes to it, even during reconciliation. If that timer is edited on aa-structuretimers, the change is pulled into Hostile Intel.
  5. Every push to aa-structuretimers, including the periodic reconciliation, links to an equivalent existing timer instead of creating a new one.
  6. Only one import runs at a time.

To check what the import does with the notifications corptools currently has, run:

python manage.py hostile_notification_timers --dry-run

It lists every structure notification from the lookback window, says whether it would create, link or skip a timer (and why), and changes nothing. Without --dry-run it runs the import once.

Each notification also updates the structure registry. It creates the structure if needed, then fills in the structure ID, the in-game name from corptools, the type, and the planet. It sets the owner ticker and links the owner alliance/corporation if they're already in the registry; it never creates them or changes their friendly flag. It sets the state to Armor, Hull, Reinforced, Anchoring or Unanchoring. An older notification never overwrites a newer state.

Sovereignty notifications are skipped because they're already covered by the ESI campaign sync. In general, friendly timers are no longer copied to the Timerboard. Hostile timers still sync to both boards, and timers that were already linked keep updating.


Permissions

AA Hostile Intel provides three granular permission levels:

Permission Description Recommended Roles
hostile.basic_access View access to all intelligence catalog pages, dashboards, and timers. Can create new alliances, member/alt corporations, structures, timers, pilot dossiers, stagings, fleet doctrines, and tactical sitreps. Can edit their own submissions. Cannot delete any entries or view audit logs. General Members, Scouts, Line Pilots
hostile.manage_intel Full operational management: can edit all submissions regardless of author, delete any intelligence records (structures, timers, sitreps, pilots, stagings, doctrines, scans), verify and pin sitreps, manage coalitions, and view the complete audit log trail. Fleet Commanders, Intel Scouts, Moderators
hostile.officer_access Senior intel officer access: bulk database operations and advanced system reconfiguration. Intel Directors, Lead FCs, Auth Admins

Changelog

See CHANGELOG.md for details on changes in each release.


License

This project is licensed under the GNU General Public License v3.0 (GPLv3). See the LICENSE file for details.

Metadata

Release files for aa-hostile-intel 0.0.27

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aa-hostile-intel 0.0.27
File Size Uploaded Provenance Actions
aa_hostile_intel-0.0.27.tar.gz 450.6 kB With provenance Details for aa_hostile_intel-0.0.27.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for aa-hostile-intel 0.0.27
File Interpreter ABI Platform Actions
aa_hostile_intel-0.0.27-py3-none-any.whl Python 3 none any Details for aa_hostile_intel-0.0.27-py3-none-any.whl

Total release size: 959.4 kB

Release files / aa_hostile_intel-0.0.27.tar.gz

Download URL aa_hostile_intel-0.0.27.tar.gz
Size 450.6 kB
Tags Source
SHA-256 checksum
How to use checksums
a0caa8043485d91d274c1e38275d886e7d23616b65f168be9dc903b3ce420f69
BLAKE2b-256 checksum
How to use checksums
10900ccd9ed1b324d71b6012a214b4850b17b4db97817837b1de26fea263bda2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.

Transparency log

Release files / aa_hostile_intel-0.0.27-py3-none-any.whl

Download URL aa_hostile_intel-0.0.27-py3-none-any.whl
Size 508.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
08542e34de58f3c6670096419ab400776c3069a7f07a0ac58d14fccb46417588
BLAKE2b-256 checksum
How to use checksums
ab1cb8d2d8a2ad8ef28858fe3b4169070aa87ed5e132512a51afc107c192a33e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.

Transparency log

Security for aa-hostile-intel 0.0.27

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for aa_hostile_intel-0.0.27.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page