Welcome! This guide will help you get ArkhamMirror up and running, even if you've never used developer tools before.
ArkhamMirror is a local-first document intelligence platform built for investigative journalists and researchers. It helps you:
- Extract text from PDFs, images, scanned documents, and handwritten notes
- Search semantically across hundreds of documents by meaning, not just keywords
- Auto-detect entities: People, organizations, locations with fuzzy deduplication
- Build timelines: Extract chronological events and detect temporal gaps
- Map connections: Visualize entity relationships and geographic patterns
- Find anomalies: AI-powered detection of suspicious language and patterns
- Chat with your data: Ask questions and get answers from your document corpus
Most importantly: All your data stays on YOUR computer. Nothing goes to the cloud.
Important: Initial setup requires an internet connection to download AI models and dependencies. After setup, ArkhamMirror runs fully offline. See Network & Privacy Guide for details on what gets downloaded and how to run in air-gapped environments.
Before you start, make sure you have:
-
A Windows, Mac, or Linux computer with at least:
- 8GB RAM (16GB recommended)
- 20GB free disk space
- Internet connection (for initial setup only)
-
Basic software (we'll help you install these):
- Docker Desktop (runs databases)
- Python 3.10+
- Node.js 18+ (for the web frontend)
- LM Studio (runs AI models locally)
-
System libraries (Linux/NixOS users only):
zlib- required for some Python packages- On Ubuntu/Debian:
sudo apt install zlib1g-dev - On Fedora:
sudo dnf install zlib-devel - On NixOS: add
pkgs.zlibto your environment
Don't worry! We'll walk you through installing everything step-by-step.
What is Docker? It's software that runs the databases ArkhamMirror needs.
-
Download Docker Desktop:
- Go to https://www.docker.com/products/docker-desktop
- Click "Download for Windows" (or Mac/Linux)
- Run the installer and follow the prompts
-
Start Docker:
- Open Docker Desktop from your Start Menu
- Wait for it to say "Docker is running" (green icon in system tray)
- You don't need to create an account - just click "Continue without signing in"
Stuck? If Docker won't start, restart your computer and try again.
What is Python? It's the programming language ArkhamMirror is built with.
-
Download Python:
- Go to https://www.python.org/downloads/
- Click "Download Python 3.12" (or latest version)
-
Install Python (IMPORTANT!):
- Run the installer
- ✅ Check the box that says "Add Python to PATH"
- Click "Install Now"
-
Verify it worked:
- Open Command Prompt (search "cmd" in Start Menu)
- Type:
python --version - You should see:
Python 3.12.x
What is LM Studio? It runs AI models on your computer (no cloud needed).
-
Download LM Studio:
- Go to https://lmstudio.ai/
- Click "Download for Windows" (or Mac/Linux)
- Install and open it
-
Download an AI Model:
- In LM Studio, click the Search icon (🔍)
- Search for:
qwen2.5-14b-instruct - Click Download (this may take 20-30 minutes - it's a large file)
-
Start the Local Server:
- In LM Studio, click the Server tab (
↔️ icon) - Click "Start Server"
- Leave LM Studio running in the background
- In LM Studio, click the Server tab (
Tip: You only need to download the model once. After that, just start the server.
- Download the code:
- Go to https://github.com/mantisfury/ArkhamMirror
- Click the green "Code" button
- Click "Download ZIP"
- Extract the ZIP file to a folder like
C:\ArkhamMirror
OR if you have Git installed:
git clone https://github.com/mantisfury/ArkhamMirror.git
cd ArkhamMirror-
Open Command Prompt in the ArkhamMirror folder:
- Navigate to where you extracted ArkhamMirror
- Hold Shift and right-click in the folder
- Click "Open PowerShell window here" or "Open Command Prompt here"
-
Start the databases:
cd docker docker compose up -dThis starts PostgreSQL, Qdrant (vector database), and Redis (task queue).
-
Set up Python environment:
cd ../app python -m venv venv .\venv\Scripts\activate # Windows # source venv/bin/activate # Mac/Linux pip install -r requirements.txt
Note: The first run will download AI models (~2-3 GB). This is a one-time download.
-
Download the spaCy language model:
python -m spacy download en_core_web_sm
-
Start the background worker (Terminal 1):
cd app .\venv\Scripts\activate # Windows python run_rq_worker.py
Keep this terminal running.
-
Start the Reflex app (Terminal 2):
cd app .\venv\Scripts\activate # Windows reflex run
First run note: Reflex will set up the frontend (npm install). This may take a few minutes.
-
Open your browser:
- Navigate to
http://localhost:3000 - You should see the ArkhamMirror interface!
- Navigate to
🎉 You're ready to go!
The Overview page shows you statistics about your document corpus:
- Total documents, entities, anomalies, events
- Document type breakdown (pie chart)
- Top entity types (bar chart)
- Recent documents list
- Click "Ingest" in the sidebar
- Drag and drop your documents (PDF, DOCX, images, emails, etc.)
- Click "Start Processing"
- Monitor progress - you'll see real-time status updates
Supported formats:
- PDF files
- Word documents (.docx)
- Images (PNG, JPG) with text
- Email files (.eml, .msg)
- Text files (.txt)
- Click "Search" in the sidebar
- Type your search query in the search box
- Press Enter or click the search button
- Results show:
- Matching text snippets
- Which document they came from
- A relevance score
Search Tips:
- Use natural language: "Who received payments in 2023?"
- ArkhamMirror understands meaning, not just keywords
- Try different phrasings if you don't find what you need
- Export results to CSV for offline analysis
Entity Graph Page:
- Click "Graph" in the sidebar
- See interactive network visualization of:
- People connected to organizations
- Organizations connected to locations
- Relationships extracted from documents
- Filter by entity type (PERSON, ORG, GPE)
- Export as CSV or JSON
Entity Deduplication Page:
- Click "Entity Dedup" in the sidebar
- Review duplicate entity candidates
- Merge confirmed duplicates (e.g., "J. Smith" + "John Smith")
- Dismiss false positives
- Add aliases for known variations
- Click "Timeline" in the sidebar
- See chronological events extracted from documents
- Temporal gaps are highlighted (missing date ranges)
- Filter by event type or date range
- Export timeline and gaps to CSV
Use cases:
- Reconstruct sequence of events
- Identify suspicious gaps in documentation
- Find corroborating vs. contradicting dates
- Click "Map" in the sidebar
- See all extracted locations plotted on interactive map
- Click markers to see which documents mention that location
- Zoom and pan to explore geographic patterns
- Click "Anomalies" in the sidebar
- See documents flagged for:
- Suspicious keywords ("shred", "off the books", "confidential")
- Unusual patterns detected by AI
- Chat with anomalies - ask AI to explain why flagged
- Export anomaly report to CSV
- Click "Regex Search" in the sidebar
- Choose a preset pattern:
- Phone numbers
- Email addresses
- Social Security Numbers
- Credit card numbers
- OR write your own custom regex pattern
- Search across all documents
- Export matches to CSV
- Click "Visualizations" in the sidebar
- Explore:
- Cluster analysis: How documents group by topic
- Activity heatmaps: When were documents created?
- Entity co-occurrence: Which entities appear together?
Analysis of Competing Hypotheses (ACH) helps you test theories against evidence to avoid bias.
- Click "ACH" in the sidebar.
- Follow the 8-step wizard:
- Brainstorm hypotheses.
- Gather evidence (import facts from your documents).
- Rate consistency in the matrix.
- Analyze results.
- Use advanced features:
- AI Assistance: Generate hypotheses and ratings.
- Sensitivity Analysis: Test "what if" scenarios.
- PDF Export: generate professional reports.
👉 Read the full ACH Guide for details.
Solution: Open Docker Desktop and wait for it to start. Look for the green icon in your system tray.
Solution: Another program is using that port. Either:
- Stop the other program, OR
- Change the port in
docker-compose.yml
Solution:
- Make sure LM Studio is open
- Click the Server tab
- Click "Start Server"
- Check that it says "Server running on http://localhost:1234"
Solution:
- ArkhamMirror uses two OCR engines:
- PaddleOCR (fast, CPU-based) - works out of the box
- Qwen-VL (smart, GPU-based) - requires LM Studio
- If Qwen-VL fails, it falls back to PaddleOCR automatically
Solution: Reinstall Python and make sure to check "Add Python to PATH" during installation.
Solution:
- Check that the RQ worker is running (
python run_rq_worker.py) - Check worker logs for errors
- Wait a few minutes - large documents take time
- If still stuck, restart the worker
- Organize your documents into folders before uploading
- Use descriptive filenames (dates, sources, topics)
- Upload in batches (don't upload 1,000 documents at once)
- Review entity extractions - AI isn't perfect, manually verify important finds
- Use the deduplication tool - clean entity data improves graph accuracy
- Export often - save CSV/JSON snapshots of findings
- Your documents never leave your computer - all processing is local
- All AI inference happens on YOUR machine via LM Studio
- Your documents are stored in the
DataSilo/folder locally - To delete everything: stop Docker, delete the
DataSilo/folder - For details on network activity and how to run fully air-gapped, see Network & Privacy Guide
- More RAM = faster processing
- GPU recommended for smart OCR (but not required)
- SSD storage speeds up search significantly
- Close other programs while processing large batches
Need assistance?
- Check the README: README.md
- Open an issue: GitHub Issues
- Ask a question: Use the
questionlabel on GitHub
Found a bug? Please report it! Open an issue and include:
- What you were trying to do
- What happened instead
- Your operating system and ArkhamMirror version
Once you're comfortable with the basics:
- Try the tutorial data: Run
python scripts/generate_sample_data.pyfor a practice investigation - Explore advanced settings: Check
config.yamlto customize OCR and AI models - Read the roadmap: See what features are coming in REFLEX_ROADMAP.md
- Contribute: Help improve ArkhamMirror! See CONTRIBUTING.md
Terms you'll see:
- OCR (Optical Character Recognition): Converting images/scans to text
- Vector Database: Stores document "meanings" for semantic search
- Embeddings: Mathematical representations of text meaning
- NER (Named Entity Recognition): Finding people, places, organizations
- LLM (Large Language Model): AI that understands and generates text
- Local-first: Everything runs on your computer, not the cloud
- Reflex: Modern React-based UI framework (replaces Streamlit in v1.0+)
- RQ Worker: Background process that handles document processing tasks
Happy investigating! 🔍
If this guide helped you, consider supporting the project to keep it free and open source.