# Configure an Agent Provider

The Console is the normal place to add and update providers. Vifu saves the
provider definition for the deployment and keeps its project assignment in
PostgreSQL.

## 1. Add the provider

Open the project, select **Providers**, then select **Add provider**. Choose the
adapter that matches the service you already run:

- choose **OpenClaw** for an OpenClaw Gateway;
- choose **OpenAI-compatible** for a model endpoint with an OpenAI-compatible
  API;
- choose a speech adapter when adding voice or transcription to an Agent.

Enter a clear name, the reachable service URL, and any credential requested by
the adapter. Select **Add provider** to save it.

## 2. Check the connection

Open the provider card and use its connection test. A provider can be saved
before the external service is online, but its Agents cannot run until the card
reports that the service is reachable.

Container networking changes what `localhost` means:

- use `127.0.0.1` when Vifu and the provider run as native processes on the
  same machine;
- use `host.docker.internal` when Vifu runs in Docker and the provider runs on
  the host; or
- use the provider's real hostname when it runs on another machine.

## 3. Add Agents

Open **Agents**. Providers with discovery, such as OpenClaw, add newly detected
Agents automatically. Removed Agents remain available from **Add agent** so you
can restore them later.

For a model provider without discovery, select **Add agent**, choose the
provider, enter the model or resource ID, and create the Agent. You can then
edit its persona, capabilities, and active version.

## 4. Use the project endpoint

Publish or expose the Agent, create a project key under **Publish & API**, and
list the available model IDs:

```bash
curl http://127.0.0.1:6790/my-project/v1/models \
  --header "Authorization: Bearer $VIFU_API_KEY"
```

Use one returned ID as `model` in an OpenAI-compatible chat-completions request.

## Configuration file

The Vifu executable creates `~/.vifu/providers.json` on first run. The Console
uses the same provider schema and writes deployment provider definitions there
when file-backed configuration is active. Advanced local setups may edit this
file directly, but a new user does not need to do so before using **Providers**.

Provider credentials stay in the Vifu deployment. They are excluded from
application clients, runtime bundles, logs, and public application state.
