Domain-agnostic retrieval-augmented generation engine delivered as a TypeScript monorepo with an HTTP API.
Teams need retrieval, guardrails, and observability to stay coherent as vendors change; Auris isolates every external system behind ports and wires concrete adapters in one place. It answers questions by retrieving grounded chunks with dense plus sparse search, optional reranking, and an LLM over a packed context. Configuration lives in YAML and environment variables, pipelines emit tracing spans per step, and you can replace vector stores, sparse engines, or LLMs without rewriting core logic.
| Feature | Status |
|---|---|
| Hexagonal ports and adapters for external services | ✓ |
| Hybrid dense and sparse retrieval with RRF fusion | ✓ |
| HyDE and multi-query expansion | ✓ |
| Cross-encoder reranking (Cohere) | ⚙ Configurable |
| Input and output guardrails | ✓ |
| Pluggable chunking strategies | ✓ |
| ChromaDB vector store client | ✓ |
| Elasticsearch or Typesense sparse search | ✓ |
| Filesystem prompt templates | ✓ |
| Index fingerprinting and content-hash skips | ✓ |
REST API (/v1/query, /v1/index, /v1/health) |
✓ |
| Golden-set assets for evaluation | ✓ |
| Docker Compose for Chroma and Elasticsearch | ✓ |
| Extension-based local file ingestion | ✓ |
| Scheduled incremental sync worker | 🔜 Planned |
| Additional vector stores (Weaviate, pgvector) | 🔜 Planned |
| Component | Default / Alternatives |
|---|---|
| Runtime | Node.js 20+ |
| Package manager | pnpm 9.15.0 |
| API | Express |
| Language | TypeScript 5.7 |
| Embeddings | OpenAI text-embedding-3-large (stub without API key) |
| Vector store | ChromaDB HTTP client |
| Sparse search | Elasticsearch 8.x, Typesense, or noop |
| Fusion | Reciprocal rank fusion (weighted merge in config) |
| Reranker | Cohere rerank v3 or noop |
| LLM | OpenAI GPT-4o family (stubs for other enums) |
| Guardrails | Composite heuristic provider |
| Tracing | Console spans with optional vendor tags (Langfuse, LangSmith, Phoenix) |
| Orchestration | Custom Node pipelines |
| Configuration | config/default.yaml merged with AURIS_* environment variables |
git clone https://github.com/ftonato/auris.gitcd auriscorepack enable && corepack prepare pnpm@9.15.0 --activatepnpm installpnpm docker:upcp .env.example .env${EDITOR:-vi} .envpnpm data:seedpnpm devcurl -s -X POST http://127.0.0.1:3000/v1/query -H 'content-type: application/json' -d '{"query":"How to protect plants from cutworms?"}'
{
"answer": "string",
"citations": [{ "chunkId": "string", "score": 0, "source": "string" }],
"confidence": 0,
"traceId": "string",
"pipeline": {
"expansionUsed": true,
"fusion": "rrf",
"rerankerSkipped": false
}
}- Node.js >=20.0.0 (see root
package.jsonengines.node) - pnpm 9.15.0 (see root
packageManager) - Docker Engine 24+ with the Compose v2 plugin
pnpm installpnpm docker:upcp .env.example .envpnpm data:seedpnpm devpnpm test
Required .env keys are listed in CONTRIBUTING.md.
| Script | What it does |
|---|---|
pnpm dev |
Start the HTTP API in watch mode |
pnpm docker:up |
Start local ChromaDB and Elasticsearch |
pnpm data:seed |
Build shared types and run the indexing worker |
pnpm types:check |
Typecheck every workspace package |
pnpm test |
Run unit tests |
pnpm lint |
Run ESLint in all packages |
pnpm repo:setup |
Install, start Compose, then pnpm types:check |
See CONTRIBUTING.md for the full script catalog (formatting, coverage, evaluation, and Docker helpers).
→ ARCHITECTURE.md
→ CONTRIBUTING.md
→ CHANGELOG.md
This project is licensed under the MIT License.