Skip to main content
This page is for operators self-hosting Dataerai. End users and organization admins don’t need any of it — they use AI search, agent configuration, and AI policy & access from the web UI.
Almost every setting below ships with a working default tuned for the bundled docker compose stack. A fresh deployment typically overrides only a handful — usually nothing at all if you run the bundled ollama and clip-service containers. Override a variable only when you’re moving a service off its default host or turning on an opt-in lane.

The local planner (Ollama)

AI search translates natural language into the metadata DSL using a local model — the unrestricted-tier provider is pinned to ollama_planner in code, not via an environment variable, so a plain docker restart applies it. You point it at a model with these:
These defaults assume the bundled ollama service. To run AI search against a model on hardware you control without editing operator env, use agent configuration from the web UI instead — it overrides the resolved endpoint per organization or per user.

The CLIP embedding service

The optional semantic_match lane ranks figures by visual similarity. It embeds query text and figure images into a shared CLIP space.
semantic_match stays dormant until SEMANTIC_MATCH_ENABLED=true and your images have been embedded. With the flag off, the parser strips the op and topical queries fall back to the structured translation — so turning the flag on before backfilling yields empty visual results, not errors.

External provider tiers

These are only consulted when an organization has allowed external AI and a stricter tier serves its requests. Each tier resolves a provider by name; an unconfigured provider safely degrades to the disabled provider rather than leaking to a default.

Connection-probe guard

The Test connection button in agent configuration makes the Dataerai server probe the URL an admin entered. To prevent it from being used to reach internal infrastructure (SSRF), public destinations are rejected unless explicitly allowlisted.
Saved CLIP service tokens are encrypted at rest using the same secret store as other repository secrets. The token is write-only over the API — it is never returned once saved.

Vocabulary discovery

The lane that designs multi-branch queries from per-scope metadata statistics (Grounded OR-tree search). Both feature flags ship off; the profile worker and statistics build in the background regardless, so flipping the read flag on is graceful.
Profiles are keyed on the collections/grants the access-control layer actually grants, and merged at request time from live permission rows — so revoking a share drops that data from a user’s evidence on their very next search, with no rebuild. No statistic or value from data a user can’t see ever enters their prompt, counts, or suggestions.
The background worker that builds profiles and value embeddings runs as its own deployment (profileWorker in the Helm values) with a nightly self-heal job; it is a no-op for the value lane until LLM_VALUE_EMBED_ENABLED is on.

AI-search (Ask AI) visibility

There are no build-time frontend flags for LLM-search — the feature ships compiled into every build. Visibility of the Ask AI button is controlled at runtime by two policy gates that Dataerai combines in acl.llm_search_allowed_for_user: Both must be true for the Ask AI affordance to render. The user opt-in is checked first — an opted-out user is hidden from the feature even if their org permits external AI.

Search log retention

Each AI-search request is recorded in an internal search log used for observability and usage reporting. The log grows with traffic, so prune it on a schedule with the management command:
It deletes entries older than the retention window (--days, default 90) in bounded batches, leaving recent ones for reporting. Run it from a nightly cron job to keep the table bounded; pass --dry-run to preview how many rows would be removed.

The minimal set

If you run the bundled docker compose stack with the built-in ollama and clip-service containers, the defaults already work. In practice a real deployment touches only:
  • CLIP_SERVICE_TOKEN — replace the dev token.
  • OLLAMA_PLANNER_MODEL — pin the model you’ve pulled (if not qwen2.5:7b).
  • SEMANTIC_MATCH_ENABLED — flip to true once you’ve backfilled embeddings.
  • Provider-tier and Bedrock vars — only if you offer external AI tiers.
  • An org admin flips Organization.allow_external_ai = true on each org that should see the feature.
Everything else has a safe default or is pinned in code.

Next steps

Agent configuration

The web-UI way to redirect inference, no operator env required.

AI policy & access

The org-level opt-in that gates external providers.