> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dataerai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Agent configuration

> Point Dataerai's AI features at your own Ollama and CLIP service instead of the built-in ones — set an organization default, and optionally let members override it.

**Agent configuration** lets you run the AI behind [AI search](/ai/llm-search) on your own infrastructure. Instead of the built-in models, you can point Dataerai at:

* your own **Ollama** instance — runs the language model that translates questions into queries, and
* your own **CLIP service** — produces the image/text embeddings behind visual similarity search.

This keeps inference on hardware you control. It's optional: leave the fields blank and Dataerai uses its defaults.

## Where it's configured

The **organization default** is set in the web app. Open an organization in **Organization settings**, then use the **Agent configuration** section to enter the URLs and model. The same panel also holds the [AI policy controls](/ai/policy-and-access).

Values resolve **most-specific-first**: a member's own setting wins; otherwise the organization default applies; otherwise Dataerai's built-in default is used.

<Note>
  Per-user overrides only take effect if the organization has turned on **Allow per-user agent configuration** (a checkbox in the same organization settings panel). It is **off by default** — until an admin enables it, the organization default always applies and a member can't redirect inference on their own.
</Note>

<Note>
  The web app currently exposes agent configuration at the **organization level** only. A per-user override is supported by the API but has no input fields in the Profile dialog yet — set it programmatically via the REST API if you need it. When a personal endpoint is active, AI search shows a badge that reads **"Using personal Ollama endpoint"** with the URL.
</Note>

## Fields

| Field                         | Purpose                                                                                                                                                                                                       |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Ollama URL**                | Base URL of your Ollama server, e.g. `https://ollama.your-lab.net:11434`.                                                                                                                                     |
| **Ollama model**              | The model tag to use for query translation, e.g. `qwen2.5:7b`. Must be pulled on that server.                                                                                                                 |
| **clip-service URL**          | Base URL of your embedding service.                                                                                                                                                                           |
| **clip-service bearer token** | Bearer token for the clip-service. Stored **encrypted**; once saved it is never shown again — the form only indicates whether a token is set. Leave blank to keep the existing one, or clear it to remove it. |

## Test the connection before saving

Each section has a test button — **Test Ollama** and **Test clip-service**. It checks that the Dataerai server can actually reach the URL you entered (and, for Ollama, whether the model you named is present) before you commit it as the active endpoint. Use it to catch typos and reachability problems early.

<Warning>
  **The Dataerai server must be able to reach the URL** — not your laptop. A plain `http://localhost:11434` or a machine behind NAT won't work. Expose your service through Tailscale, a tunnel like ngrok, or a real reverse proxy, and enter that reachable address.
</Warning>

## Choosing a model

The query-translation task asks the model to emit strictly-structured output. Modern instruct models handle this well; older ones often don't. `qwen2.5:7b` is a reliable default. If AI search returns empty results for clearly concrete queries, try a more capable model before assuming a configuration problem.

## Next steps

<CardGroup cols={2}>
  <Card title="AI policy & access" icon="shield-check" href="/ai/policy-and-access">
    How local vs. external providers interact with your AI opt-in.
  </Card>

  <Card title="Configuration reference" icon="sliders" href="/ai/configuration-reference">
    Self-hosting defaults and environment variables.
  </Card>
</CardGroup>
