High-Level Architecture (v2.6.33)

Last modified by Robert Schaub on 2026/02/08 08:31

Information

Current Implementation (v2.6.33) - Two-service architecture: Next.js web app for UI and analysis, .NET API for job persistence.

High-Level Architecture


graph TB
    subgraph Client[Client Layer]
        BROWSER[Web Browser]
    end

    subgraph NextJS[Next.js Web App]
        ANALYZE[analyze page]
        JOBS[jobs page]
        JOBVIEW[jobs id page]
        ANALYZE_API[api fh analyze]
        JOBS_API[api fh jobs]
        RUN_JOB[api internal run-job]
        ORCH[orchestrated.ts]
        CANON[monolithic-canonical.ts]
        SHARED[Shared Modules]
        WEBSEARCH[web-search.ts]
        MBFC[source-reliability.ts]
    end

    subgraph DotNet[.NET API]
        DOTNET_API[ASP.NET Core API]
        JOBS_CTRL[JobsController]
        HEALTH_CTRL[HealthController]
        SQLITE[(SQLite factharbor.db)]
    end

    subgraph External[External Services]
        LLM[LLM Providers]
        SEARCH[Search Providers]
    end

    BROWSER --> ANALYZE
    BROWSER --> JOBS
    BROWSER --> JOBVIEW
    ANALYZE --> ANALYZE_API
    ANALYZE_API --> DOTNET_API
    DOTNET_API --> SQLITE
    RUN_JOB --> ORCH
    RUN_JOB --> CANON
    ORCH --> SHARED
    CANON --> SHARED
    ORCH --> LLM
    CANON --> LLM
    ORCH --> WEBSEARCH
    WEBSEARCH --> SEARCH
    SHARED --> MBFC

Component Summary

 Component  Technology  Purpose
 Web App  Next.js 14  UI, API routes, AKEL pipeline
 API  ASP.NET Core  Job persistence, health checks
 Database  SQLite  Jobs, events, results (JSON blob)
 LLM  AI SDK  Multi-provider LLM abstraction
 Search  Google CSE / SerpAPI  Web search for evidence

Key Files

 File  Lines  Purpose
 orchestrated.ts  9000  Main orchestrated pipeline
 monolithic-canonical.ts  1100  Monolithic canonical pipeline
 scopes.ts  600  Scope detection
 aggregation.ts  300  Verdict aggregation

Environment Variables

 Variable  Default  Purpose
 LLM_PROVIDER  anthropic  Primary LLM provider
 FH_SEARCH_ENABLED  true  Enable web search
 FH_DETERMINISTIC  true  Zero temperature