DomainSight-AI

Krook9d/DomainSight-AI

3.2

If you are the rightful owner of DomainSight-AI and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

DomainSight AI is a containerized platform designed for investigating Indicators of Compromise (IOCs) such as domains, URLs, IPs, and file hashes, utilizing a combination of threat intelligence sources and browser history analysis capabilities.

Tools
7
Resources
0
Prompts
0

DomainSight AI πŸ”

Agent-orchestrated IOC investigations with web-first artifact upload and standardized tool access.

DomainSight AI is a containerized platform for investigating Indicators of Compromise (IOCs) such as domains, URLs, IPs, and file hashes. It combines multiple threat intelligence sources with browser history analysis capabilities, all orchestrated through an Agent-to-Agent (A2A) framework.

🌟 Features

Core Capabilities

  • Multi-Source Threat Intelligence

    • πŸ” Urlscan.io: Automated URL scanning and analysis
    • πŸ›‘οΈ AlienVault OTX: Community-driven threat intelligence
    • πŸ” OpenCTI: Advanced threat intelligence platform integration (Sprint 2)
    • 🦠 VirusTotal: Optional malware and URL analysis
  • Browser History Analysis

    • πŸ“Š Upload and analyze browser history databases (Chrome, Edge, Firefox)
    • πŸ• Time-windowed queries
    • πŸ”Ž Domain filtering and pattern matching
    • πŸ“ˆ Support for CrowdStrike history.db format
  • Agent Orchestration

    • πŸ€– A2A (Agent-to-Agent) gateway for intelligent task routing
    • πŸ”€ Automatic tool selection based on investigation goals
    • πŸ“ Structured task tracking and correlation IDs
    • πŸ” Secure artifact upload with authentication

User Interface

  • πŸ’¬ LibreChat web UI with preset workflows
  • 🎯 Pre-configured investigation templates
  • πŸ”„ Multi-model support (OpenAI, Ollama for local LLMs)

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  LibreChat (Web UI)                     β”‚
β”‚  Port: 3080                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  A2A Gateway (Orchestrator)             β”‚
β”‚  Port: 9090                             β”‚
β”‚  - Agent registry                       β”‚
β”‚  - Task routing                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  MCP Server (Python/FastMCP)            β”‚
β”‚  Port: 8080                             β”‚
β”‚  - Threat intelligence tools            β”‚
β”‚  - History.db ingestion/query           β”‚
β”‚  - /upload endpoint for artifacts       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚
      External APIs & Services

πŸš€ Quick Start

Prerequisites

  • Docker & Docker Compose
  • API keys for threat intelligence services (see Configuration)

Installation

  1. Clone the repository
git clone https://github.com/yourusername/DomainSight-AI.git
cd DomainSight-AI
  1. Create environment file
# Copy the template
cp env.example .env

# Edit .env with your API keys and configuration
nano .env
  1. Start the platform
docker compose up -d
  1. Create your first user

Wait for all services to be ready (30-60 seconds), then create an admin user:

# Using docker compose
docker compose exec librechat npm run create-user

# Follow the prompts to enter:
# - Email address
# - Password  
# - Name

Note: Registration is disabled by default for security. Use the create-user command to add users.

  1. Access the UI Open your browser to: http://localhost:3080

Login with the credentials you just created.

βš™οΈ Configuration

Required Environment Variables

Create a .env file with the following:

# Authentication (REQUIRED - change this!)
A2A_AUTH_TOKEN=your-secure-random-token-here

# LLM Configuration
OPENAI_API_KEY=sk-xxxxx
OPENAI_BASE_URL=https://api.openai.com
MODEL=openai/gpt-4o-mini

# Threat Intelligence APIs
URLSCAN_API_KEY=your-urlscan-key
OTX_API_KEY=your-otx-key

# Optional: OpenCTI (for advanced threat intel)
OPENCTI_BASE_URL=https://your-opencti-instance.com
OPENCTI_API_TOKEN=your-opencti-token

# Optional: VirusTotal
VT_API_KEY=your-virustotal-key

# Server Configuration
UPLOAD_MAX_MB=200
LOG_LEVEL=INFO
CACHE_TTL_SECONDS=1800

Getting API Keys

πŸ“– Usage Examples

1. Domain Investigation

Investigate domain evil.example.com using all available sources

The system will automatically:

  • Submit to Urlscan for live analysis
  • Query OTX for threat intelligence
  • Check VirusTotal (if configured)
  • Aggregate and present findings

2. Browser History Analysis

Step 1: Upload history.db

curl -X POST http://localhost:8080/upload \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -F "file=@history_export.zip"

Step 2: Query in LibreChat

List all visited banking sites between 2025-09-14T08:00Z and 2025-09-14T18:00Z

3. IOC Batch Investigation

Investigate these domains: suspicious1.com, suspicious2.com, suspicious3.com

πŸ› οΈ Development

Project Structure

DomainSight-AI/
β”œβ”€β”€ server/              # MCP Server (Python/FastMCP)
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ tools/      # Threat intelligence integrations
β”‚   β”‚   β”œβ”€β”€ history/    # History.db processing
β”‚   β”‚   β”œβ”€β”€ run.py      # Application entry point
β”‚   β”‚   └── upload.py   # File upload handler
β”‚   β”œβ”€β”€ Dockerfile
β”‚   └── requirements.txt
β”‚
β”œβ”€β”€ a2a-gateway/        # A2A Gateway (Node.js/TypeScript)
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ index.ts    # Main server
β”‚   β”‚   β”œβ”€β”€ router.ts   # Task routing logic
β”‚   β”‚   └── registry.ts # Agent registry
β”‚   β”œβ”€β”€ Dockerfile
β”‚   └── package.json
β”‚
β”œβ”€β”€ librechat/          # LibreChat configuration
β”‚   └── librechat.yaml
β”‚
β”œβ”€β”€ docker-compose.yml
└── .env.template

Running Tests

# MCP Server tests
cd server
python -m pytest tests/

# A2A Gateway tests
cd a2a-gateway
npm test

Local Development

MCP Server:

cd server
python -m venv venv
source venv/bin/activate  # or venv\Scripts\activate on Windows
pip install -r requirements.txt
python -m app.run

A2A Gateway:

cd a2a-gateway
npm install
npm run dev

πŸ”’ Security Considerations

  • Authentication: All endpoints require Bearer token authentication
  • Upload Limits: File uploads capped at 200MB by default
  • Read-Only Database Access: History databases opened in read-only mode
  • Token Rotation: Regular rotation of A2A_AUTH_TOKEN recommended
  • API Key Security: Store API keys securely, never commit to git

πŸ—ΊοΈ Roadmap

βœ… Sprint 1 - MVP (Current)

  • MCP server with Urlscan and OTX integration
  • History.db upload and query
  • A2A Gateway with basic routing
  • LibreChat integration

🚧 Sprint 2 - Enrichment (Next)

  • OpenCTI GraphQL integration
  • Multi-browser schema support (Firefox, Safari)
  • Enhanced error handling and retries
  • CSV/JSON export functionality

πŸ“‹ Sprint 3 - Advanced Orchestration

  • Full MCP protocol support
  • Resource endpoints (history://summary, scans://last)
  • Prompt templates and investigation playbooks
  • Timeline aggregation

πŸ” Sprint 4 - Production Hardening

  • RBAC (Role-Based Access Control)
  • JWT tokens with expiration
  • Metrics and observability (Prometheus/Grafana)
  • Comprehensive documentation
  • Docker image publishing

πŸ“Š API Reference

A2A Gateway Endpoints

POST /tasks - Submit investigation task

{
  "agent": "domainsight-investigator",
  "goal": "Investigate domain example.com",
  "inputs": {
    "domain": "example.com"
  },
  "context": {}
}

GET /agents - List available agents

GET /healthz - Health check

MCP Server Endpoints

POST /upload - Upload artifact

  • Requires: Authorization: Bearer <token>
  • Form data: file (multipart)

GET /healthz - Health check

MCP Tools

  • urlscan_submit(url, public, tags) - Submit URL for scanning
  • urlscan_search(query, size, from_) - Search previous scans
  • otx_lookup(ioc) - Query AlienVault OTX
  • vt_lookup(ioc) - Query VirusTotal (optional)
  • opencti_lookup(ioc) - Query OpenCTI (Sprint 2)
  • history_ingest(file_id) - Ingest history database
  • history_query(start, end, domain_like, limit) - Query history

🀝 Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“ License

This project is licensed under the MIT License - see the file for details.

πŸ™ Acknowledgments

  • MCP (Model Context Protocol) by Anthropic
  • LibreChat by Danny Avila
  • Threat intelligence communities: Urlscan.io, AlienVault OTX, OpenCTI

πŸ“§ Support

  • πŸ“– Documentation:
  • πŸ› Issues: GitHub Issues
  • πŸ’¬ Discussions: GitHub Discussions

Built with ❀️ for the cybersecurity community