Open-source enterprise search for Adobe AEM, WordPress, databases, and files — Semantic Navigation, Generative AI (RAG), AI Agents, and Tool Calling. A self-hosted alternative to Algolia, Coveo, and Lucidworks that keeps your content on your own infrastructure.
|
Note
|
This repository is the public distribution of Viglet Turing ES Community Edition, published as a clean snapshot at each release — so its history is one commit per release. Issues and pull requests are welcome here; the maintainers integrate accepted contributions and they ship in the next release. |
Viglet Turing ES is an open-source platform that combines enterprise search with generative AI. Index content from Adobe Experience Manager (AEM), WordPress, databases, file systems, and web crawls; deliver faceted, semantic search experiences; and enable conversational AI (RAG) grounded in your own data — all self-hosted under Apache 2.0.
Looking for an open-source alternative to Algolia, Coveo, or Lucidworks for AEM or WordPress search? See the guide: Add enterprise search to Adobe AEM.
-
Semantic Navigation — faceted search, spotlights, targeting rules, autocomplete, multi-language
-
Generative AI (RAG) — LLM responses grounded in your indexed content
-
AI Agents — assistants with independent LLMs, native tools, and MCP server support
-
Multi-Engine — pluggable backend: Apache Solr, Elasticsearch, or embedded Lucene
-
Connectors — Adobe AEM, web crawler, databases, filesystem, WordPress via Viglet Dumont DEP
-
SDKs — Java (Maven Central) and JavaScript/TypeScript (npm)
docker pull ghcr.io/openviglet/turing-ce:latest
docker run -p 2700:2700 ghcr.io/openviglet/turing-ce:latestOpen http://localhost:2700/console — set admin password via TURING_ADMIN_PASSWORD env var on first run.
git clone https://github.com/openviglet/turing-ce.git
cd turing-ce
docker-compose up -dHttpTurSNServer server = new HttpTurSNServer("http://localhost:2700/api/sn/MySite");
TurSNQuery query = new TurSNQuery();
query.setQuery("artificial intelligence");
query.setRows(10);
QueryTurSNResponse response = server.query(query);
response.getResults().getDocument().forEach(doc ->
System.out.println(doc.getFields().get("title"))
);import { TurSNSiteSearchService } from '@viglet/turing-react-sdk';
const search = new TurSNSiteSearchService('http://localhost:2700');
const results = await search.search('sample-site', {
q: 'machine learning', rows: 10, localeRequest: 'en_US'
});
results.results?.document?.forEach(doc =>
console.log(doc.fields?.title)
);# Search
curl "http://localhost:2700/api/sn/sample-site/search?q=enterprise+search&rows=10&_setlocale=en_US"
# Autocomplete
curl "http://localhost:2700/api/sn/sample-site/ac?q=enterp&_setlocale=en_US"
# RAG Chat (SSE stream)
curl "http://localhost:2700/api/sn/sample-site/chat?q=What+is+enterprise+search"query {
siteSearch(
siteName: "sample-site"
searchParams: { q: "technology", rows: 10, p: 1 }
locale: "en_US"
) {
queryContext { count, responseTime }
results {
document {
fields { title, text, url }
}
}
}
}Interactive GraphiQL IDE at http://localhost:2700/graphiql.
turing-ce/
├── turing-app/ # Spring Boot 4 backend (Java 21)
├── frontend/ # pnpm + Turborepo monorepo
│ ├── apps/turing-app/ # React 19 + TypeScript admin console (Vite, shadcn/ui)
│ ├── apps/marketplace/ # example apps
│ └── packages/ # SDKs: react-sdk, sdk (vanilla JS), react-ui, shared-types
├── turing-commons/ # Shared library
├── turing-spring/ # Shared Spring library
├── turing-java-sdk/ # Java SDK
├── turing-utils/ # Utilities
├── k8s/ # Kubernetes manifests
└── docker-compose.yaml # Docker Compose stackFor architecture details, configuration, connectors, API reference, deployment guides, and more:
Architecture, configuration, connectors, admin guide |
|
Release packages |
|
|
-
Report Issues — GitHub Issues
-
Discussions — GitHub Discussions
-
Code — fork, branch, open a pull request here; accepted changes are integrated by the maintainers and ship in a following release.