Skip to content

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)
bash
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:latest

The API is live at http://localhost:8200. Interactive docs at http://localhost:8200/docs.

With Docker Compose ​

yaml
# 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-stopped
bash
docker compose up -d

Running with Purple8 Graph ​

To run DocIntel and Purple8 Graph together so extracted entities are emitted into the knowledge graph:

yaml
# 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-stopped
bash
docker compose up -d

Verify both services are running:

bash
# 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:

bash
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 ​

bash
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 --build

pip install ​

bash
pip install -e ".[all]"

Optional extras:

bash
# 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]"
bash
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 8200

Quick smoke test ​

bash
# 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 ​

bash
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 | general

Submit a URL ​

bash
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 ​

VariableRequiredDefaultDescription
LLM__API_KEYYes—LLM provider API key
SERVER__API_KEYNo""Bearer token for API auth
LICENSE__KEYYes—License key (from Purple8)
LLM__PROVIDERNoopenaiopenai · anthropic · gemini · ollama
LLM__MODELNogpt-5.6-terraLLM model override
SERVER__PORTNo8200API port
STORAGE__JOB_STORENomemorymemory · redis · sqlite

Full environment variable reference → /reference/env-vars

What's next? ​

Purple8 DocIntel v0.12.5 · Universal Document Intelligence · NVIDIA Inception Member · Red Hat Technology Partner.