Skip to content

Modules

Spector is organized as a multi-module Maven project. Each module has a focused responsibility, clear API boundaries, and minimal cross-module coupling.


Architecture

graph LR
    subgraph "๐Ÿ”ฌ Foundation"
        core["spector-core<br/><i>SIMD kernels</i>"]
        commons["spector-commons<br/><i>Chunkers, tokenizer</i>"]
        config["spector-config<br/><i>SpectorConfig + YAML</i>"]
        storage["spector-storage<br/><i>Panama MemorySegment</i>"]
    end

    subgraph "๐Ÿง  Intelligence"
        embedApi["spector-embed-api<br/><i>Embedding SPI</i>"]
        embedOllama["spector-embed-ollama<br/><i>Ollama provider</i>"]
        index["spector-index<br/><i>HNSW + IVF-PQ + BM25</i>"]
        query["spector-query<br/><i>Hybrid + RRF + rerank</i>"]
        gpu["spector-gpu<br/><i>CUDA via Panama FFM</i>"]
    end

    subgraph "โšก Engine"
        rag["spector-rag<br/><i>RAG pipeline</i>"]
        engine["spector-engine<br/><i>Search facade</i>"]
        ingestion["spector-ingestion<br/><i>File ingest pipeline</i>"]
        memory["spector-memory<br/><i>Cognitive memory ๐Ÿง </i>"]
    end

    subgraph "๐ŸŒ Runtime & Interfaces"
        runtime["spector-runtime<br/><i>Composition root</i>"]
        node["spector-node<br/><i>Armeria: REST + gRPC + SSE</i>"]
        mcp["spector-mcp<br/><i>MCP Server (stdio)</i>"]
        cli["spector-cli<br/><i>spectorctl</i>"]
        client["spector-client<br/><i>Java SDK</i>"]
        spring["spector-spring<br/><i>Spring AI</i>"]
    end

    subgraph "๐Ÿ“ฆ Distribution"
        metrics["spector-metrics<br/><i>Prometheus + JVM</i>"]
        bench["spector-bench<br/><i>JMH benchmarks</i>"]
        dist["spector-dist<br/><i>Fat JAR</i>"]
    end

Module Dependency Graph

graph TD
    node["๐ŸŒ node"] --> runtime["โšก runtime"]
    node --> mcp["๐Ÿค– mcp"]
    node --> metrics["๐Ÿ“ˆ metrics"]
    mcp --> runtime
    mcp --> ingestion["๐Ÿ“ฅ ingestion"]
    cli["๐Ÿ–ฅ๏ธ cli"] --> runtime
    cli --> client["๐Ÿ“ฆ client"]

    runtime --> engine["โšก engine"]
    runtime --> memory["๐Ÿง  memory"]
    runtime --> ingestion

    engine --> query["๐Ÿ” query"]
    engine --> rag["๐Ÿค– rag"]
    engine --> ingestion
    engine --> index["๐Ÿ“Š index"]
    engine --> storage["๐Ÿ’พ storage"]
    engine --> embedapi["๐Ÿงฌ embed-api"]
    engine -.-> gpu["๐ŸŽฎ gpu"]

    memory --> index
    memory --> storage
    memory --> ingestion
    memory --> embedapi
    memory --> core["๐Ÿ”ฌ core"]

    metrics --> engine
    metrics --> memory

    ingestion --> config["โš™๏ธ config"]
    ingestion --> embedapi

    rag --> query
    rag --> index
    rag --> storage
    rag --> embedapi

    query --> index
    index --> storage
    index --> config
    storage --> config
    storage --> core
    config --> core

    embedapi --> commons["๐Ÿ“„ commons"]
    gpu --> core
    gpu --> storage

    dist["๐Ÿ“ฆ dist"] --> mcp
    dist --> cli
    dist --> runtime

    spring["๐ŸŒฑ spring"] --> engine
    spring --> memory
    spring --> metrics
    bench["๐Ÿงช bench"] --> engine
    bench --> memory

Legend: Solid arrows = compile dependency. Dotted arrow (gpu) = optional dependency.

Architecture

spector-ingestion defines the IngestionPipeline and IngestionTarget interface. Both spector-engine and spector-memory depend on it to implement their IngestionTarget. spector-memory is fully independent of spector-engine โ€” they are peers, wired together only at the SpectorRuntime composition root.


Architecture: Entry Points โ†’ Runtime โ†’ Subsystems

All entry points (MCP, CLI, Server) route through SpectorRuntime:

graph TD
    cli["๐Ÿ–ฅ๏ธ spector-cli<br/><i>SpectorCtl</i>"]
    mcp["๐Ÿค– spector-mcp<br/><i>SpectorMcpMain</i>"]
    node["๐ŸŒ spector-node<br/><i>SpectorNode (Armeria)</i>"]

    cli --> runtime
    mcp --> runtime
    node --> runtime

    runtime["โšก SpectorRuntime<br/><i>Composition Root</i>"]

    runtime --> sh["SearchHandler<br/><i>mode-aware search</i>"]
    runtime --> ih["IngestionHandler<br/><i>delegates to IngestionPipeline</i>"]

    sh --> engine["SpectorEngine"]
    sh --> memory["SpectorMemory"]
    ih --> pipeline["IngestionPipeline<br/><i>chunk โ†’ embed โ†’ store</i>"]
    pipeline --> engineTarget["EngineIngestionTarget<br/><i>SEARCH mode</i>"]
    pipeline --> memTarget["CognitiveIngestionTarget<br/><i>MEMORY mode</i>"]

SpectorRuntime is a thin composition root โ€” it creates and wires subsystems but contains no business logic. Each handler owns its domain:

Handler Responsibility Routes to
SearchHandler Mode-aware search Engine (SEARCH mode) or Memory (MEMORY mode)
IngestionHandler Delegates to unified IngestionPipeline Pipeline โ†’ EngineIngestionTarget or CognitiveIngestionTarget

Module Overview

Foundation Layer

Module Description
spector-commons Shared utilities โ€” concurrent primitives, I/O helpers
spector-core Core abstractions โ€” quantization, SIMD, similarity functions
spector-config Configuration โ€” SpectorProperties, SpectorConfigFactory, YAML loading
spector-storage Persistent storage โ€” memory-mapped files, arena management

Embedding Layer

Module Description
spector-embed-api Embedding provider SPI โ€” model-agnostic interface
spector-embed-ollama Ollama embedding implementation

Search Layer

Module Description
spector-index Vector indexing โ€” HNSW, IVF, brute-force
spector-query Query processing โ€” parsing, planning, execution
spector-gpu GPU acceleration โ€” Panama FFM bindings

Intelligence Layer

Module Description
spector-rag RAG pipeline โ€” retrieval-augmented generation
spector-engine Search engine โ€” orchestrates index + RAG + storage
spector-ingestion Unified ingestion pipeline โ€” IngestionPipeline (builder), IngestionTarget interface, FileDiscoveryService
spector-memory Cognitive memory โ€” biologically-inspired agent memory

Runtime Layer

Module Description
spector-runtime Composition root โ€” wires engine + memory + ingestion pipeline, exposes SearchHandler and IngestionHandler
spector-mcp MCP server โ€” Model Context Protocol integration via stdio
spector-node Unified node โ€” Armeria HTTP REST + gRPC + SSE events + cluster coordination

Client Layer

Module Description
spector-cli CLI tool โ€” spectorctl with remote (HTTP) and local batch (runtime) modes
spector-client Java client โ€” programmatic HTTP API access
spector-spring Spring AI integration โ€” auto-configuration

Infrastructure

Module Description
spector-metrics Metrics โ€” Prometheus + JVM instrumentation
spector-bench Benchmarks โ€” JMH performance testing
spector-dist Distribution โ€” single fat JAR packaging