Back to overview

Run it

Self-hosted, any LLM, your data — never locked in

Open source under Apache 2.0. Bring any LLM provider, your own search engine and your own storage. Multi-tenant, observable, and running entirely on your infrastructure.

  • Bring any LLM

    OpenAI, Anthropic Claude, Google Gemini (native SDK or OpenAI-compatible), Azure OpenAI and local Ollama models — all behind one pluggable provider interface. Switch providers per agent; API keys are stored encrypted.

  • Bring your search engine & storage

    Run on Apache Solr, Elasticsearch or embedded Lucene, and back assets with MinIO, the filesystem or nothing at all. Turing adapts to the infrastructure you already operate.

  • Multi-tenant by design

    Isolate tenants behind a single identity realm with tenant-owned infrastructure, gated behind a feature flag so a single-tenant deployment stays simple.

  • Observable & operable

    Micrometer metrics, chat & conversion analytics, cache-hit gauges and per-tool latency percentiles give you the operational visibility a production search platform needs.

  • Measure the funnel in the analytics stack you already run

    Server metrics tell you the platform is healthy; the SDK tells you what your users do. It emits a canonical, vendor-neutral event for every step of the funnel — query, no-results, result click, chat start, conversion and abandonment. A GA4 / Google Tag Manager sink auto-detects the gtag / dataLayer your page already loads (Adobe Edge Delivery Services included), so it lights up with zero extra config — with a generic escape hatch for Segment, Matomo or Plausible. Cross-surface session stitching ties a chat lead back to the search that started it, and because it's your own tag on your own page, you decide what's collected.

  • A real developer experience

    A zero-dependency CLI (init / dev / deploy / eval / logs), official React and vanilla-JS SDKs, and YAML eval suites to gate agent and prompt changes in CI.

Pluggable storage & provider config (application.yaml)
turing:
  storage:
    type: filesystem        # none | minio | filesystem
    filesystem:
      path: ./store/assets
  tenancy:
    enabled: false          # flip on for multi-tenant