Quickstart
Get DocIntel running and processing your first document in under five minutes.
Prerequisites
- Docker + Docker Compose or Python 3.11+
- An OpenAI API key (or Azure OpenAI / Anthropic / Gemini / Ollama endpoint)
Docker (recommended)
docker run -d \
--name purple8-docintel \
-p 8200:8200 \
-e LLM__API_KEY=sk-... \
-e SERVER__API_KEY=change-me-min-32-chars \
-e LICENSE__KEY=your-license-key \
purple8/docintel:latestThe API is live at http://localhost:8200. Interactive docs at http://localhost:8200/docs.
With Docker Compose
# docker-compose.yml
version: "3.9"
services:
docintel:
image: purple8/docintel:latest
ports:
- "8200:8200"
environment:
LLM__API_KEY: "sk-..."
SERVER__API_KEY: "change-me-min-32-chars"
LICENSE__KEY: "your-license-key"
restart: unless-stoppeddocker compose up -dRunning with Purple8 Graph
To run DocIntel and Purple8 Graph together so extracted entities are emitted into the knowledge graph:
# docker-compose.yml
version: "3.9"
services:
docintel:
image: purple8/docintel:latest
ports:
- "8200:8200"
environment:
LLM__API_KEY: "sk-..."
SERVER__API_KEY: "change-me-min-32-chars"
LICENSE__KEY: "your-license-key"
GRAPH__BASE_URL: "http://graph:8100" # ← point to the Graph service
depends_on:
- graph
restart: unless-stopped
graph:
image: purple8/graph:latest
ports:
- "8100:8100"
environment:
PORT: "8100"
restart: unless-stoppeddocker compose up -dVerify both services are running:
# DocIntel health
curl http://localhost:8200/health
# → {"status": "ok"}
# Graph health
curl http://localhost:8100/health
# → {"status": "ok"}Now when you process a document, DocIntel will automatically emit the extraction results to Graph:
curl -X POST http://localhost:8200/process \
-H "Authorization: Bearer change-me-min-32-chars" \
-F "file=@your-document.pdf"The extracted entities and relationships will appear in Purple8 Graph — query them via Cypher, hybrid search, or the Graph API. See Purple8 Graph docs →.
TIP
DocIntel works perfectly fine without Graph. If you omit GRAPH__BASE_URL, it runs as a standalone JSON API. Graph integration simply adds knowledge graph storage on top.
Build from source
git clone https://github.com/Purple8-Technologies/Purple8-DocIntel.git
cd Purple8-DocIntel
cp .env.example .env
# Edit .env — set LLM__API_KEY, SERVER__API_KEY, LICENSE__KEY
docker compose up --buildpip install
pip install -e ".[all]"Optional extras:
# Minimal (text formats only)
pip install -e "."
# With PDF, Office, HTML, OCR support
pip install -e ".[pdf,office,html,ocr]"
# With CAD/BIM support
pip install -e ".[pdf,office,html,ocr,cad]"export LLM__API_KEY=sk-...
export SERVER__API_KEY=change-me-min-32-chars
export LICENSE__KEY=your-license-key
uvicorn purple8_docintel.server:app --host 0.0.0.0 --port 8200Quick smoke test
# 1. Submit a document
curl -X POST http://localhost:8200/process \
-H "Authorization: Bearer change-me-min-32-chars" \
-F "file=@your-document.pdf"
# Response:
# { "job_id": "abc-123", "status": "queued" }
# 2. Poll for results
curl http://localhost:8200/jobs/abc-123 \
-H "Authorization: Bearer change-me-min-32-chars"
# 3. Or stream partial results as extraction completes
curl -N http://localhost:8200/jobs/abc-123/stream \
-H "Authorization: Bearer change-me-min-32-chars"Use a specific extraction profile
curl -X POST http://localhost:8200/process \
-H "Authorization: Bearer $API_KEY" \
-F "file=@building-model.ifc" \
-F "profile=aec"
# Available profiles: aec | contract | financial | scientific | generalSubmit a URL
curl -X POST http://localhost:8200/process/url \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/report.pdf", "profile": "scientific"}'Environment variables
| Variable | Required | Default | Description |
|---|---|---|---|
LLM__API_KEY | Yes | — | LLM provider API key |
SERVER__API_KEY | No | "" | Bearer token for API auth |
LICENSE__KEY | Yes | — | License key (from Purple8) |
LLM__PROVIDER | No | openai | openai · anthropic · gemini · ollama |
LLM__MODEL | No | gpt-5.6-terra | LLM model override |
SERVER__PORT | No | 8200 | API port |
STORAGE__JOB_STORE | No | memory | memory · redis · sqlite |
Full environment variable reference → /reference/env-vars
What's next?
- Beta Installation — step-by-step guide for beta users
- Configuration reference →
- Capabilities overview →
- REST API reference →
- Self-hosting guide →