Document the Connect Agent page
|
After Width: | Height: | Size: 111 KiB |
|
After Width: | Height: | Size: 63 KiB |
|
After Width: | Height: | Size: 253 KiB |
|
After Width: | Height: | Size: 146 KiB |
|
Before Width: | Height: | Size: 335 KiB After Width: | Height: | Size: 317 KiB |
|
Before Width: | Height: | Size: 127 KiB After Width: | Height: | Size: 173 KiB |
|
After Width: | Height: | Size: 134 KiB |
|
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 112 KiB |
@@ -508,6 +508,10 @@ export const docsNavigation = [
|
|||||||
{ title: 'How It Works', href: '/agent-network/how-it-works' },
|
{ title: 'How It Works', href: '/agent-network/how-it-works' },
|
||||||
{ title: 'Quickstart', href: '/agent-network/quickstart' },
|
{ title: 'Quickstart', href: '/agent-network/quickstart' },
|
||||||
{ title: 'Providers', href: '/agent-network/providers' },
|
{ title: 'Providers', href: '/agent-network/providers' },
|
||||||
|
{
|
||||||
|
title: 'Connect Agents',
|
||||||
|
href: '/agent-network/connect-agents',
|
||||||
|
},
|
||||||
{ title: 'Clusters', href: '/agent-network/clusters' },
|
{ title: 'Clusters', href: '/agent-network/clusters' },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -0,0 +1,94 @@
|
|||||||
|
import { Note } from '@/components/mdx'
|
||||||
|
|
||||||
|
export const description =
|
||||||
|
'Point a local AI tool at NetBird Agent Network from the Connect Agent page: the keyless endpoint, ready-made configuration for Claude Code, Codex, the OpenAI SDK and cURL, and the providers and models your own policies allow.'
|
||||||
|
|
||||||
|
# Connect Agents
|
||||||
|
|
||||||
|
**Connect Agent** is the self-service page each user configures their own tools from. It
|
||||||
|
carries the account's [keyless endpoint](/agent-network/providers#the-keyless-endpoint), a
|
||||||
|
ready-made configuration snippet for common agent tools, and the providers and models the
|
||||||
|
user's own policies allow.
|
||||||
|
|
||||||
|
Unlike the rest of Agent Network, the page needs no administrative permission. Every
|
||||||
|
authenticated account member sees it, and the answer behind it is computed from the caller's
|
||||||
|
own group memberships, so two users on the same account can see different providers.
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<img src="/docs-static/img/agent-network/connect-agent/agent-network-connect-agent.png" alt="Connect Agent page with the API base URL, the Claude Code configuration snippet, and the caller's providers and models" className="imagewrapper-big" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
## API Base URL
|
||||||
|
|
||||||
|
The endpoint is the account's Agent Network base URL, shared by every connected provider
|
||||||
|
and reachable only over the NetBird overlay.
|
||||||
|
|
||||||
|
Agents send ordinary LLM requests to it with no provider API key. NetBird
|
||||||
|
authenticates the caller through your identity provider, authorizes the request against
|
||||||
|
your [policies](/agent-network/policies), and injects the upstream provider key
|
||||||
|
server-side.
|
||||||
|
|
||||||
|
## Configure Your Tool
|
||||||
|
|
||||||
|
Pick the tab that matches your tool. Each snippet is pre-filled with your endpoint, so it
|
||||||
|
can be copied and applied as it is:
|
||||||
|
|
||||||
|
- **Claude Code** — writes `ANTHROPIC_BASE_URL` into `~/.claude/settings.json`, together
|
||||||
|
with an `apiKeyHelper` that satisfies the client's key check without a real key. Use the
|
||||||
|
**Shell** link above the snippet to switch to the equivalent `export` lines, and **JSON**
|
||||||
|
to switch back.
|
||||||
|
- **Codex** — a provider block for `~/.codex/config.toml`.
|
||||||
|
- **OpenAI SDK** — a Python client pointed at the endpoint's `/v1` path, with a placeholder
|
||||||
|
`api_key` the client requires but NetBird ignores.
|
||||||
|
- **cURL** — a complete request, handy for a first smoke test.
|
||||||
|
|
||||||
|
The dropdown above the Claude Code snippet selects which backend the configuration targets:
|
||||||
|
**Anthropic API**, **Vertex AI**, or **Bedrock**. Claude Code reaches Vertex AI and Bedrock
|
||||||
|
through their own base URL variables, so the snippet changes accordingly.
|
||||||
|
|
||||||
|
<Note>
|
||||||
|
A **Kimi CLI** tab and a **Kimi (Moonshot AI)** entry in the Claude Code dropdown appear
|
||||||
|
only when a Kimi provider is reachable for you, since that configuration works only against
|
||||||
|
an endpoint that can route to it. See the
|
||||||
|
[Kimi integration guide](/agent-network/integrations/kimi) for the provider side.
|
||||||
|
</Note>
|
||||||
|
|
||||||
|
## Your Providers & Models
|
||||||
|
|
||||||
|
The table lists what the caller's policies authorize, not everything the account has
|
||||||
|
connected. Each row names the provider as the administrator labelled it, with the catalog
|
||||||
|
provider underneath, and the models it may be called with:
|
||||||
|
|
||||||
|
- **All Models** — no [guardrail](/agent-network/policies/guardrails) model allowlist
|
||||||
|
restricts this provider for you.
|
||||||
|
- One or two model names, or a count such as **3 Models** past that — the effective
|
||||||
|
allowlist. Hover the count to read the full list.
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<img src="/docs-static/img/agent-network/connect-agent/agent-network-connect-agent-providers-models.png" alt="Your Providers & Models table listing a Bedrock provider limited to three models and an OpenAI provider with all models allowed" className="imagewrapper" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
A provider the account has connected but no policy of yours references does not appear
|
||||||
|
here, and a request to it is refused at the endpoint the same way.
|
||||||
|
|
||||||
|
## No Providers Available Yet
|
||||||
|
|
||||||
|
Agent Network denies every request by default, so a user no policy covers yet sees the
|
||||||
|
endpoint and the snippets but an empty provider list.
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<img src="/docs-static/img/agent-network/connect-agent/agent-network-connect-agent-no-providers.png" alt="Connect Agent page with an empty provider list explaining that no access policy covers the user yet" className="imagewrapper" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
The empty state states the fix in the terms of whoever is reading it:
|
||||||
|
|
||||||
|
- Users who can edit policies are pointed straight at **Policies**, where adding one of
|
||||||
|
their groups to a policy grants them access.
|
||||||
|
- Everyone else is asked to have an administrator add them to an Agent Network access
|
||||||
|
policy.
|
||||||
|
|
||||||
|
This is also what an account with no providers connected at all looks like from a member's
|
||||||
|
side: with nothing connected there is nothing for a policy to authorize. An administrator
|
||||||
|
starts by [connecting a provider](/agent-network/providers#connect-a-provider), then
|
||||||
|
[creating a policy](/agent-network/policies) that covers the group the user belongs to. The
|
||||||
|
page fills in as soon as both exist, no change is needed on the agent.
|
||||||
@@ -136,6 +136,48 @@ Self-hosters can seed the catalog defaults these fields prefill from with a
|
|||||||
pricing file. See
|
pricing file. See
|
||||||
[`server.agentNetwork.pricingDefaultsFile`](/selfhosted/maintenance/configuration-files#agent-network-settings).
|
[`server.agentNetwork.pricingDefaultsFile`](/selfhosted/maintenance/configuration-files#agent-network-settings).
|
||||||
|
|
||||||
|
### Loading Models from the Provider
|
||||||
|
|
||||||
|
The catalog ships the model line-up NetBird knew about when your version was built. It
|
||||||
|
cannot know what your credential is actually entitled to, and it drifts as vendors add
|
||||||
|
and retire models. **Load models from provider** on the **Models** tab closes that gap: it
|
||||||
|
asks the vendor which models this credential can reach and merges the answer into the model
|
||||||
|
picker.
|
||||||
|
|
||||||
|
That matters differently per provider:
|
||||||
|
|
||||||
|
- **AWS Bedrock** — models are region-scoped inference profiles whose ids carry a geography
|
||||||
|
prefix, such as `eu.anthropic.claude-sonnet-4-5-20250929-v1:0`. Only the exact id AWS
|
||||||
|
issues works at invoke time, and which ones exist depends on your account and region, so
|
||||||
|
there is nothing for a shipped catalog to list.
|
||||||
|
- **Google Vertex AI** — models are enabled per project and region, so two projects with the
|
||||||
|
same key material expose different lists.
|
||||||
|
- **OpenAI** and **Anthropic** — the public line-up is in the catalog, but an organization's
|
||||||
|
access is not: preview and early-access models never appear, and models retired since your
|
||||||
|
NetBird release still do.
|
||||||
|
|
||||||
|
1. Open the **Models** tab while connecting a provider, or when editing a saved one.
|
||||||
|
2. Click **Load models from provider**. A provider you are still typing in needs its
|
||||||
|
endpoint URL and API key filled first; a saved provider reuses its stored credential
|
||||||
|
server-side, so the key never returns to the browser.
|
||||||
|
3. Pick what you need with **Add More**, which searches the catalog and the loaded models
|
||||||
|
together.
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<img src="/docs-static/img/agent-network/providers/agent-network-load-models.png" alt="Models tab of the Connect Provider modal with the Load models from provider button" className="imagewrapper" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
Loaded models arrive with the rates NetBird would bill them at, taken from the same table
|
||||||
|
the proxy meters with, so a prefilled row shows what a request actually costs. A model
|
||||||
|
NetBird has no rate for arrives at zero and is flagged: register it as it is and every
|
||||||
|
request to it records a cost of zero, so set its prices yourself.
|
||||||
|
|
||||||
|
<Note>
|
||||||
|
Most gateways publish no model listing. For those the button reports that the provider has
|
||||||
|
no listing endpoint and the catalog list is used instead — the provider still works, and an
|
||||||
|
empty model list keeps it a catch-all that accepts any model.
|
||||||
|
</Note>
|
||||||
|
|
||||||
### Adding a Model Not in the Catalog
|
### Adding a Model Not in the Catalog
|
||||||
|
|
||||||
If the model you need isn't in the picker, type its model ID directly into the **Model** field
|
If the model you need isn't in the picker, type its model ID directly into the **Model** field
|
||||||
|
|||||||
@@ -95,16 +95,20 @@ Point your agent at the NetBird endpoint as its **base URL**. No provider API ke
|
|||||||
is needed on the client. NetBird authorizes each request against your policies and
|
is needed on the client. NetBird authorizes each request against your policies and
|
||||||
injects the upstream provider key server-side.
|
injects the upstream provider key server-side.
|
||||||
|
|
||||||
1. Next to your agent network endpoint, click **Agent Config**.
|
1. Go to **Agent Network > Connect Agent**. Every account member has this page, and it
|
||||||
|
shows the endpoint along with the providers their own policies allow.
|
||||||
2. Pick the tab that matches your tool, Claude Code, Codex, OpenAI SDK, or cURL. The
|
2. Pick the tab that matches your tool, Claude Code, Codex, OpenAI SDK, or cURL. The
|
||||||
dashboard pre-fills your endpoint for you.
|
dashboard pre-fills your endpoint for you.
|
||||||
3. Copy the snippet and apply it. Claude Code reads `~/.claude/settings.json` and Codex
|
3. Copy the snippet and apply it. Claude Code reads `~/.claude/settings.json` and Codex
|
||||||
reads `~/.codex/config.toml`.
|
reads `~/.codex/config.toml`.
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<img src="/docs-static/img/agent-network/integrations/agent-network-configure-agent-claude-code.png" alt="NetBird Configure Your Agent modal showing Claude Code configuration" className="imagewrapper" />
|
<img src="/docs-static/img/agent-network/quickstart/agent-network-connect-agent.png" alt="Connect Agent page showing the endpoint and the Claude Code configuration snippet" className="imagewrapper" />
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
See [Connect Agents](/agent-network/connect-agents) for the rest of the page, including
|
||||||
|
what each tab configures.
|
||||||
|
|
||||||
## Create a Policy
|
## Create a Policy
|
||||||
|
|
||||||
By default, Agent Network denies every request. Nothing reaches a provider until a
|
By default, Agent Network denies every request. Nothing reaches a provider until a
|
||||||
@@ -120,7 +124,7 @@ and budget limits and guardrails.
|
|||||||
6. Save the policy.
|
6. Save the policy.
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<img src="/docs-static/img/agent-network/quickstart/agent-network-add-policy.png" alt="agent network add policy" className="imagewrapper" />
|
<img src="/docs-static/img/agent-network/quickstart/agent-network-add-policy.png" alt="Create Agent Policy modal with a source group and a provider selected" className="imagewrapper" />
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
With the policy in place, the agent you configured above can now reach the provider.
|
With the policy in place, the agent you configured above can now reach the provider.
|
||||||
|
|||||||