Documentation

Everything you need to go from signup to your first hybrid query.

Quickstart

Sign up at /signup to provision an organization, project and API key automatically.

# 1. Install the CLI (Rust toolchain required — pre-built binaries coming)
cargo install --git https://github.com/astersearch/astersearch aster-cli

# 2. Configure (writes ./aster.toml)
aster init --api-key ask_live_xxxxxxxxxxxx

# 3. Push documents
aster push products products.jsonl

# 4. Search
aster q products "wireless noise cancelling headphones"

CLI reference

The CLI reads configuration from ./aster.toml, then environment variables (ASTER_API_URL, ASTER_API_KEY), then CLI flags. Flags win.

Commands

REST API

The full OpenAPI 3.0 spec is served by the control plane at GET /openapi.yaml. Common endpoints:

POST /v1/indexes                          # create index
POST /v1/indexes/:index/ingest/bulk       # bulk-ingest documents
POST /v1/indexes/:index/search            # hybrid / lexical / vector search
GET  /v1/indexes/:index/stats             # doc counts + size
POST /v1/api-keys                         # create scoped key

Every index is built with both a Tantivy inverted index and a USearch HNSW vector index. Queries can be routed to one or both:

POST /v1/indexes/products/search
{
  "query": "wireless headphones",
  "mode": "hybrid",   // "lexical" | "vector" | "hybrid"
  "limit": 10
}

In hybrid mode results are fused with Reciprocal Rank Fusion (k=60 by default).

Authentication

API keys are prefixed with environment: ask_live_… (production) or ask_test_… (testing). Pass them as Authorization: Bearer <key>. Keys can be scoped to specific tenants and to read-only or read-write privileges in the console.

Self-hosting

The whole stack ships as a docker-compose.yml at the repo root: control-api, search-node, ingest-node, embedding-worker, Postgres and Redis. docker compose up gets you a working cluster on a single host. See the repo for production deployment notes.