Enterprise Data Ingestion Platform

Securely connecting
siloed content to AI pipelines.

OpenCrawling® is a high-performance enterprise data ingestion and security mapping framework. Powered by Java 25 and Spring Boot 4, it orchestrates secure pipelines using Apache Tika for text extraction, Apache Kafka for queueing, Redis for caching, and Ollama for embeddings while preserving document permissions (ACLs).

bash - docker-setup

# Spin up PostgreSQL + pgvector, Redis, Ollama, Kafka

git clone https://github.com/OpenCrawling/opencrawling.git

cd opencrawling

docker compose up -d

Creating network "opencrawling_default" ... Created

Creating container opencrawling-postgres ... Running

Creating container opencrawling-redis ... Running

Creating container opencrawling-kafka ... Running

Creating container opencrawling-ollama ... Running

✔ All services started successfully on local ports.

Java 25 Virtual Threads & Structured Concurrency
100% ACL Security & Permission Mapping
Event-Driven Apache Kafka Document Decoupling
Scale-Out Decoupled Embedding Microservice

Designed for Enterprise Security & Scale

Going far beyond simple scraping, OpenCrawling bridges data stores and vector indexes securely.

Enterprise Security First

Built-in authority translation and Access Control List (ACL) mapping. Search engines only return documents that users are explicitly authorized to view.

High Performance & Concurrency

Leverages Java 25 Virtual Threads and Spring Boot. Processes thousands of streams with minimal memory overhead, preventing source system bottlenecks.

AI & RAG Ready Ingestion

Advanced RAG support with flexible chunking and embedding logic. Configure multiple embedding strategies (Ollama, OpenAI, HuggingFace) across diverse vector index backends.

Pluggable SPI Architecture

Simple interfaces for writing custom connectors. Define a new Repository Source, Transformation filter, or Database Output connector in just a few lines of Java.

Embedding Scale-Out

The oc-embedding-service is a fully decoupled, stateless microservice that consumes chunks from Kafka. Run docker compose scale oc-embedding-service=N for instant horizontal scaling of your AI vectorization throughput.

Secure Model Context Protocol (MCP) Server

Exposes security-filtered similarity search and document retrieval tools directly to LLMs and AI agent frameworks using the Model Context Protocol (MCP). Enforces user authentication policies (principals and roles) and ACL checks on the server-side to prevent prompt injection and unauthorized data leakage.

Ingestion Architecture

Decoupled, event-driven orchestration with a horizontally scalable Embedding Microservice leveraging Kafka and the Claim Check Pattern.

Sources SharePoint S3 / Buckets Web / API Ingestion Core Tika Extractor Token Splitter Publish Chunks Apache Kafka Ingestion Topic Chunks Topic Embedded Topic Vector Writer pgvector (direct) Elasticsearch Qdrant Store Admin React UI oc-admin-ui oc-embedding-service EmbeddingConsumer EmbeddingModelFactory Secure MCP Server Model Context Protocol PostgreSQL / Redis Job Status Cache Metadata State Authority Service Access Filters ACL Mapping ×N

System Architecture

Hover over or tap any node in the architecture diagram to view how OpenCrawling orchestrates the high-speed data flow and security controls.

Unified Administration Console

Manage repository connectors, monitor Kafka topics, and track ingestion jobs from a sleek, real-time dashboard.

localhost:5173/dashboard
OpenCrawling Admin Dashboard Telemetry

Real-Time Ingestion Telemetry

Track crawling health, active workers, Kafka queue load, and document-indexing throughput at a glance.

OpenCrawling Ingestion Job Pipeline

Pipeline & Job Scheduling

Schedule, execute, pause, and configure crawling operations. Review historical runs, document success rates, and errors.

OpenCrawling Repository Connector Configuration

Connector Registry Configuration

Set up SharePoint credentials, S3 bucket access policies, database queries, and custom connector metadata properties.

OpenCrawling Embedding Settings

AI & Vector Embedding Mappings

Select RAG embedding models (local Ollama, OpenAI), set custom token text-splitter boundaries, and map schema attributes.

OpenCrawling Real-Time Activity Logs

Live System Activity & Audit Logs

Stream real-time JVM telemetry, Kafka partition consumer offsets, active threads, and document security ACL mapping logs.

Live Ingestion Simulator

Simulate real-time ingestion, security mapping, and the new decoupled embedding scale-out pipeline locally in your browser.

Ready to run
📂 Crawler
🚇 Kafka Broker
⚙️ Ingestion (Tika)
🔱 oc-embedding-service ×1
🧬 Vector Writer
Job Console Output

Select a source and click "Run Ingestion Job" to start simulation...

Getting Started in 2 Minutes

Follow these quick steps to get OpenCrawling up and running locally.

# Option 1: Standard Multi-Tier Stack (Backend + Standalone Frontend)
# 1. Start backing services (Postgres, Redis, Kafka, Ollama)
docker compose up -d
# 2. Build and run the applications
docker compose -f docker-compose-apps.yml build
docker compose -f docker-compose-apps.yml up -d

# Option 2: Decoupled Microservices Pipeline (Fully Distributed Workers)
# 1. Run immediately using pre-built images (no compilation needed)
docker compose -f docker-compose-decoupled-dist.yml up -d
# 2. (Alternative) Or build from local source and run:
docker compose -f docker-compose-decoupled.yml build
docker compose -f docker-compose-decoupled.yml up -d

# Access points:
# - Standalone Administration Console: http://localhost:3000
# - Secure MCP Server / REST Backend:  http://localhost:8080
<!-- Add core connector API to your spring boot application -->
<dependency>
    <groupId>org.opencrawling</groupId>
    <artifactId>oc-core</artifactId>
    <version>1.0.0-SNAPSHOT</version>
</dependency>

<!-- Include FileSystem Repository Connector if required -->
<dependency>
    <groupId>org.opencrawling</groupId>
    <artifactId>oc-filesystem-repository-connector</artifactId>
    <version>1.0.0-SNAPSHOT</version>
</dependency>
// Implement RepositoryConnector interface to create custom sources
public class MyCustomRepositoryConnector implements RepositoryConnector {

    @Override
    public void connect(Map<String, String> configParams) throws RepositoryConnectionException {
        // Establish authentication with target repository
    }

    @Override
    public void scanDocuments(DocumentProcessor processor, JobContext context) {
        // Scan documents incrementally and dispatch to processor
        for (Document doc : fetchNewDocuments()) {
            processor.processDocument(
                doc.getId(),
                doc.getContentStream(),
                doc.getMetadata(),
                doc.getAcl() // Synchronize Access Control Lists!
            );
        }
    }
}

Open Ingestion Standard (OIS)

A cross-platform specification for secure enterprise data exchange and configuration.

The Ingestion Manifesto

Enterprise data pipelines suffer from proprietary lock-in and security permission leaks. The OIS specification standardizes document payloads, metadata repositories, and workflow processes—now featuring native integration with the CMIS standard for enterprise document retrieval and the BPMN format for business process workflows—to enable seamless interoperability.

🔒 Zero-Trust Security 🗂️ CMIS & BPMN Ready 🔌 Vendor-Neutral ⚙️ Event-Decoupled
sample-document.json
{
  "id": "doc-554032-sp",
  "source": { "type": "sharepoint", "instance": "..." },
  "content": { "mimeType": "application/pdf", "text": "..." },
  "metadata": { "title": "Fiscal Strategy", "author": "..." },
  "security": { "inheritanceEnabled": true, "permissions": [] }
}

Latest Articles & Deep Dives

Read the latest announcements, engineering insights, and tutorials from the OpenCrawling core team.

Connect & Contribute

We are an open-source organization building the future of secure AI ingestion pipelines.

📂

Framework Core

Browse the OpenCrawling core engine source code, Java SPIs, connectors, and admin react UI.

View Repo →
📜

Open Standard

Read the Manifesto, review the JSON schemas, and contribute to the OIS cross-vendor specification.

View Spec →
💬

Slack Community

Join our Slack server to chat with maintainers, ask questions, and collaborate with the community in real-time.

Join Slack →
🙋

Discussions & Issues

Help shape the roadmap, report bugs, request new repository/output connectors, or ask questions.

Get Involved →
✉️

Official Contact

For general inquiries, partnership discussions, or sensitive security reports, reach out to us via our contact form.

Send Message →