<!-- # hard line break macro for HTML -->

<a id="enterprise-agent"></a>

# FiftyOne Agent


<div class="available-in">
    <div class="available-in-row">
        <span class="available-in-label">Available in:</span>
        <span class="available-in-pill available-in-pill--enterprise">Enterprise</span>
    </div>
    <div class="available-in-row">
        <span class="available-in-versions">Introduced in <a href="../release-notes.html#fiftyone-enterprise-2-25-0">FiftyOne Enterprise 2.25.0</a></span>
    </div>
    
    <div class="available-in-cta">
        <a href="https://voxel51.com/book-a-demo" class="available-in-cta-link" rel="noopener noreferrer" target="_blank">
            Schedule a demo to get started with FiftyOne Enterprise
        </a>
    </div>

</div>

The FiftyOne Agent is an AI-powered assistant built into the
[FiftyOne Enterprise App](app.md#enterprise-app). It lets you work with your
datasets using natural language. You can import data, run model inference,
find duplicates, evaluate predictions, and more, all from a conversational
interface.

![fiftyone-agent-demo](https://cdn.voxel51.com/voxel-agent/enterprise/voxel_agent_demo_1.webp)

<a id="enterprise-agent-setup"></a>

## Setup

1. Contact your Customer Success representative to enable the FiftyOne Agent
   for your deployment.
2. Open any dataset in the FiftyOne Enterprise App. You will see a new Agent
   button in the upper-right corner of the App.

![fiftyone-agent-button-location](https://cdn.voxel51.com/voxel-agent/enterprise/location_agent.webp)

#### NOTE
The FiftyOne Agent now ships as a built-in feature of the FiftyOne
Enterprise App rather than a separately installed plugin. If you
installed an earlier standalone version of the Agent plugin, you can
remove it once your deployment is upgraded. The built-in version
replaces it entirely.

<a id="enterprise-agent-providers"></a>

## Configuring model providers

The first time you open the Agent, you will be prompted to configure a model
provider. The Agent supports over 100 providers, including Anthropic, OpenAI,
Google, and more.

![fiftyone-agent-settings](https://cdn.voxel51.com/voxel-agent/enterprise/agent_settings.webp)

To add a provider, fill in the following fields:

- **Name**: a label for this provider configuration
- **Provider**: select from the list of supported providers
- **Endpoint** (optional): use this to route requests to a custom URL, such
  as an internal enterprise gateway or a self-hosted model server
- **API key**: your provider’s API key
- **Models**: select one or more models to make available
- **Custom model names** (optional): enter model identifiers that are not in
  the standard picker, such as non-standard IDs used by an enterprise gateway.
  Prefix with the provider slug (e.g. `openai/my-model-id`) to ensure
  correct routing when the model name alone is ambiguous
- **Extra headers** (optional): static key-value HTTP headers sent with every
  request (e.g. `User-Agent`, project tokens required by your gateway)

![fiftyone-agent-provider-details](https://cdn.voxel51.com/voxel-agent/enterprise/provider_more_details.webp)

You can click **Test connection** to verify your credentials before saving.

To choose which model new users start with, use the **Default model** picker
at the top of the Connections list.

![fiftyone-agent-default-model](https://cdn.voxel51.com/voxel-agent/enterprise/agent_default_model.webp)

#### NOTE
API keys are automatically stored securely using FiftyOne
Enterprise’s [Secrets](secrets.md#enterprise-secrets) infrastructure. No
manual secret configuration is required.

<a id="enterprise-agent-permissions"></a>

## Permissions

Any user who can view a dataset can chat with the Agent and ask it to take
action on that dataset. A few capabilities require additional permissions:

- **Managing connections** (adding, editing, or removing a model provider,
  or changing the default model) requires the Admin role.
- **Generating and testing plugins** with the Agent requires the Admin role.

![fiftyone-agent-develop-plugin](https://cdn.voxel51.com/fiftyone-internal-skills/develop_plugin.webp)
- **Generating and executing SDK code** with the Agent requires a role with
  API key access enabled. See [Roles and permissions](roles_and_permissions.md#enterprise-roles) for which roles support this by default and how to
  change it.

![fiftyone-agent-write-code](https://cdn.voxel51.com/fiftyone-internal-skills/write_code.webp)

<a id="enterprise-agent-custom-gateway"></a>

## Custom endpoints and enterprise gateways

If your organization routes LLM traffic through an internal gateway or proxy,
you can point the Agent at it using the **Endpoint** and **Extra headers**
fields on any provider configuration.

![fiftyone-agent-custom-gateway](https://cdn.voxel51.com/voxel-agent/enterprise/custom_gateway_screenshot.webp)

**Provider, match the API format, not the model brand**

The **Provider** field controls the request format the Agent uses, not which
model it calls. Set it to match what your gateway expects:

- If your gateway exposes an OpenAI-compatible API (`/chat/completions`),
  select `openai`, even if the underlying model is Claude or Gemini
- If your gateway exposes the Anthropic Messages API (`/v1/messages`)
  natively, select `anthropic`

**Endpoint, base URL only**

Enter only the base URL of your gateway — do not include the API path. The
Agent appends the correct path automatically based on the provider you
selected. For example:

```text
✓  https://gateway.internal/api/openai/v1
✗  https://gateway.internal/api/openai/v1/chat/completions
```

**Model names, always prefix with the provider slug**

Use the model identifier your gateway provides, prefixed with the provider
slug. The prefix prevents the model ID from being misrouted to a cloud
provider instead of your gateway, and is stripped before the name is sent:

```text
openai/your-model-id
anthropic/your-model-id
```

This is especially important when your gateway returns model IDs that start
with a vendor name (e.g. `anthropic.claude-sonnet`). Without the prefix,
those IDs may be misrouted to a cloud provider instead of your gateway.

Use **Test connection** to verify the full configuration works before saving.

![fiftyone-agent-extra-headers](https://cdn.voxel51.com/voxel-agent/enterprise/custom_gateway_headers_screenshot.webp)

Use **Extra headers** for any additional authentication or routing headers your
gateway requires, such as project tokens or custom `User-Agent` values.

**Per-user attribution**

When a custom endpoint is configured, the Agent automatically adds an
`X-FiftyOne-User-Email` header to every request containing the email address
of the currently logged-in user. Gateways can use this header to attribute
requests to individual users rather than a shared system account, which is
useful for enforcing per-user quotas or audit logging.

#### NOTE
Admins are responsible for ensuring that the configured endpoint’s data
handling and retention align with their organization’s privacy policy.

<a id="enterprise-agent-instructions"></a>

## Custom instructions

You can give the Agent standing instructions that are automatically included
in every conversation, at three scopes:

- **Organization**: written by an admin, applied to every conversation for
  every user in the deployment
- **User**: personal instructions that apply only to your own conversations
- **Dataset**: shared instructions that apply to every conversation involving
  a specific dataset, for everyone with access to it

![fiftyone-agent-instructions](https://cdn.voxel51.com/voxel-agent/enterprise/agent_instructions.webp)

Configure instructions from the Agent’s settings panel.

<a id="enterprise-agent-knowledge"></a>

## Grounding answers in the documentation

The Agent can ground its answers in the live FiftyOne documentation. Before
answering a question about the SDK, an operator, or an API, it searches a
knowledge base that stays continuously in sync with the docs, so answers
reflect the current release and cite the sources they came from.

This is powered by a [Kapa](https://www.kapa.ai) knowledge base hosted by
Voxel51. To enable it, set the `KAPA_API_KEY` secret in your deployment.
Your customer success contact can provide the key.

```shell
export KAPA_API_KEY=...
```

The lookup is optional, and the Agent works without it. We strongly recommend
enabling it: without the key, FiftyOne questions are answered from the model’s
general knowledge, which is not tied to your version and drifts as the product
evolves.

#### NOTE
No dataset content is sent to the knowledge base. Only the search query
the Agent formulates is transmitted.

<a id="enterprise-agent-using"></a>

## Using the agent

Once a provider is configured, you can start a conversation with the Agent.
Type any task in plain language and the Agent will execute it against your
dataset.

![fiftyone-agent-chat](https://cdn.voxel51.com/voxel-agent/enterprise/agent_chat.webp)

Some examples of what you can ask:

-  *“Find and remove duplicate images from this dataset”*
-  *“Run object detection and show me low-confidence predictions”*
-  *“Export this dataset to COCO format”*

To start a new conversation, click the **+** button.

![fiftyone-agent-new-conversation](https://cdn.voxel51.com/voxel-agent/enterprise/new_conversation.webp)

To return to a previous conversation, click **History**.

![fiftyone-agent-conversation-history](https://cdn.voxel51.com/voxel-agent/enterprise/conversation_history.webp)

<a id="enterprise-agent-screenshot"></a>

## Asking about the current App state

Click the screenshot icon next to the attach icon in the message box to
capture what’s currently on screen and attach it to your next message.

![fiftyone-agent-screenshot-location](https://cdn.voxel51.com/voxel-agent/enterprise/agent_screenshot_location.webp)

This lets you ask the Agent about exactly what you’re looking at, such as a
specific sample, a plot, or a 3D scene, without describing it in words. Your
browser will prompt you to choose what to share before the screenshot is
attached.

![fiftyone-agent-screenshot](https://cdn.voxel51.com/voxel-agent/enterprise/agent_screenshot.webp)

If you select one or more samples in the grid first, an additional icon lets
you attach their images directly, so you can ask the Agent about specific
samples without describing or searching for them in words. Up to 20 samples
can be attached at once; if more are selected, only the first 20 are
attached.

![fiftyone-agent-attach-samples](https://cdn.voxel51.com/voxel-agent/enterprise/agent_attach_samples.webp)

<a id="enterprise-agent-workspace"></a>

## Returning to a previous view

Whenever the Agent changes what you’re looking at, such as applying a
filter, loading a view, or running an operator, that step gets a
**Load Workspace** button. Click it any time, even after navigating away, to
instantly restore the App to that exact state.

![fiftyone-agent-load-workspace-location](https://cdn.voxel51.com/voxel-agent/enterprise/agent_load_workspace_location.webp)

<a id="enterprise-agent-delegated-ops"></a>

## Tracking delegated operations

When the Agent runs a long-running task as a [delegated operation](plugins.md#enterprise-delegated-operations), it appears in a tray showing how many are
queued, running, completed, and failed, so you can keep chatting while it
runs in the background.

![fiftyone-agent-delegated-ops](https://cdn.voxel51.com/voxel-agent/enterprise/agent_delegated_ops.webp)

Click a job in the tray to see its own progress and details.

![fiftyone-agent-delegated-ops-detail](https://cdn.voxel51.com/voxel-agent/enterprise/agent_delegated_ops_detail.webp)

<a id="enterprise-agent-usage"></a>

## Usage

The Agent’s settings panel includes a Usage tab showing your own token and
request counts for the current period. Admins additionally see usage totals
for the entire organization.

![fiftyone-agent-usage](https://cdn.voxel51.com/voxel-agent/enterprise/agent_usage.webp)

<a id="enterprise-agent-skills"></a>

## Skills

The Agent ships with a set of built-in skills that cover the most common
computer vision workflows. Skills are structured instructions that tell the
agent exactly how to perform a task, step by step.

![fiftyone-agent-skills](https://cdn.voxel51.com/voxel-agent/enterprise/skills.webp)

Open any skill to read its full definition: the description that tells the
Agent when to use it, and the step-by-step instructions it follows. Built-in
skills are read-only, so you can always see exactly what the Agent was told
to do.

Use the toggle on each skill to control which ones the Agent may use. Turning
a skill off removes it from the Agent’s options without deleting anything.

<a id="enterprise-agent-skills-editing"></a>

## Creating and editing skills

Admins can extend the Agent with their own skills, directly from the settings
panel. No plugin packaging or deployment step is required.

![fiftyone-agent-skill-editor](https://cdn.voxel51.com/voxel-agent/enterprise/skill_editor.webp)

Click **Create skill** to write a new one. Every skill needs three things:

- **Name**: lowercase and dash-separated, e.g. `triage-blurry-images`
- **Description**: when the Agent should reach for this skill. This is the
  only thing the Agent sees when choosing between skills, so write it as
  *when to use this*, not *what this is*
- **Instructions**: the workflow itself, in Markdown, covering what to check
  first, which operators to call, and the steps to follow

To adapt a built-in skill, open it and click **Duplicate**. This gives you an
editable copy, leaving the original untouched. The copy needs its own name and
its own description: two skills that describe themselves the same way make the
Agent’s choice between them arbitrary.

Once your copy is saved, switch the built-in skill **off** using its toggle.
The Agent then uses your version instead, and you keep the original in place
to turn back on or duplicate again later.

To remove a custom skill for good, open it and click **Delete**. You will be
asked to confirm, and the skill is gone for everyone in the deployment.
Built-in skills cannot be deleted, only switched off.

![fiftyone-agent-skill-toggle](https://cdn.voxel51.com/voxel-agent/enterprise/skills.webp)

#### NOTE
Custom skills are stored as a plugin in your deployment, so they can be
downloaded and shared like any other plugin. See
[Writing a skill](../agents/developing_skills.md#developing-skills-authoring) if you would rather
author them as files.

<a id="enterprise-agent-skills-ask"></a>

## Asking the Agent to write a skill

You can also ask the Agent to write or improve a skill for you, for example
 *“turn the steps we just worked through into a skill”* or  *“add a validation
step to my triage skill”*.

![fiftyone-agent-skill-review-card](https://cdn.voxel51.com/voxel-agent/enterprise/skill_agent_authored.webp)

The Agent never writes a skill on its own. It proposes the change in a review
card showing exactly what would be added and removed, line by line, against
the current version. Nothing is saved until you click **Approve**, and
rejecting leaves the skill exactly as it was.

Built-in skills stay protected here too: if you ask the Agent to change one,
it will propose a copy instead of modifying the original.

<div style="margin:0; display:flex; justify-content:flex-end;">
    <a href="../agents/index.html?tag=Enterprise" class="sd-btn sd-btn-primary book-a-demo" rel="noopener noreferrer" data-cta-dynamic="true">
        <div class="arrow">
            <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" class="size-3">
            <path stroke="currentColor" stroke-width="1.5"
                    d="M1.458 11.995h20.125M11.52 22.063 21.584 12 11.521 1.937"
                    vector-effect="non-scaling-stroke"></path>
            </svg>  
        </div>
        <div class="text">Browse Enterprise Skills</div>
    </a>
</div>
