Skip to content

Anet#813

Merged
braginini merged 14 commits into
mainfrom
feature/anet
Jun 27, 2026
Merged

Anet#813
braginini merged 14 commits into
mainfrom
feature/anet

Conversation

@braginini

@braginini braginini commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

  • New Features
    • Added a new Agent Network documentation section with navigation for setup, providers, policies, usage, logs, and integrations.
    • Published new guides covering the quickstart, how Agent Network works, provider setup, policy limits, guardrails, usage and access logs, and log collection/retention.
    • Added integration docs for Claude Code, Codex, and LiteLLM.
    • Added a page for account-wide global limits and improved in-product documentation links across the section.

@coderabbitai

coderabbitai Bot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Adds a new Agent Network documentation section, including sidebar navigation and MDX pages for the landing overview, architecture, quickstart, providers, policies, limits, global limits, usage and logs, and Claude Code, Codex, and LiteLLM integration guides.

Changes

Agent Network documentation

Layer / File(s) Summary
Navigation registration
src/components/NavigationDocs.jsx
Adds the AGENT NETWORK sidebar group with nested policy, usage & logs, integration, provider, and global-limits links.
Landing page and architecture overview
src/pages/agent-network/index.mdx, src/pages/agent-network/how-it-works.mdx
Adds the Agent Network landing page and how-it-works page covering the overview, dual traffic paths, LLM request lifecycle, identity and routing, policy and guardrail enforcement, keyless access, usage logging, and WireGuard transport.
Quickstart guide
src/pages/agent-network/quickstart.mdx
Adds the Agent Network quickstart from prerequisites and installation through device enrollment, provider connection, agent configuration, policy creation, and usage-log verification.
Providers page
src/pages/agent-network/providers.mdx
Adds the providers page covering supported provider types, provider setup, model and pricing settings, and the shared keyless endpoint.
Policies section: index, limits, and guardrails
src/pages/agent-network/policies/*.mdx
Adds the policies index, token and budget limits, and guardrails pages describing policy routing, fixed-window caps, and model and prompt restrictions.
Global limits page
src/pages/agent-network/global-limits.mdx
Adds the global limits page describing account-wide token and spend caps, fixed-window enforcement, and setup in the configuration UI.
Usage & Logs section
src/pages/agent-network/usage-and-logs/*.mdx
Adds the usage overview, access logs, and log-collection pages covering usage charts, request logs, filters, retention, and prompt-capture settings.
Integrations section
src/pages/agent-network/integrations/*.mdx
Adds the integrations index plus Claude Code, Codex, and LiteLLM setup guides for keyless routing, provider connection, policy setup, and identity forwarding.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • netbirdio/docs#779 — Also updates src/components/NavigationDocs.jsx navigation entries and sidebar structure.
  • netbirdio/docs#796 — Also changes src/components/NavigationDocs.jsx docs navigation data.

Suggested reviewers

  • SunsetDrifter
  • jnfrati
  • TechHutTV

Poem

I hopped through docs with whiskers high,
New trails for agents cross the sky.
Claude, Codex, LiteLLM align,
With policies and logs in tidy line.
🐇 The network path now reads just right.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title is too vague to describe the large Agent Network documentation update. Rename it to a short descriptive title that summarizes the main change, such as adding Agent Network documentation pages.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/anet

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

src/components/NavigationDocs.jsx

Oops! Something went wrong! :(

ESLint: 9.39.4

TypeError: Converting circular structure to JSON
--> starting at object with constructor 'Object'
| property 'configs' -> object with constructor 'Object'
| property 'flat' -> object with constructor 'Object'
| ...
| property 'plugins' -> object with constructor 'Object'
--- property 'react' closes the circle
Referenced from:
at JSON.stringify ()
at file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/shared/config-validator.js:308:45
at Array.map ()
at ConfigValidator.formatErrors (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/shared/config-validator.js:299:23)
at ConfigValidator.validateConfigSchema (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/shared/config-validator.js:330:84)
at ConfigArrayFactory._normalizeConfigData (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/config-array-factory.js:676:19)
at ConfigArrayFactory._loadConfigData (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/config-array-factory.js:641:21)
at ConfigArrayFactory._loadExtendedShareableConfig (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/config-array-factory.js:946:21)
at ConfigArrayFactory._loadExtends (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/config-array-factory.js:814:25)
at ConfigArrayFactory._normalizeObjectConfigDataBody (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/config-array-factory.js:752:25)

src/pages/agent-network/global-limits.mdx

Oops! Something went wrong! :(

ESLint: 9.39.4

TypeError: Converting circular structure to JSON
--> starting at object with constructor 'Object'
| property 'configs' -> object with constructor 'Object'
| property 'flat' -> object with constructor 'Object'
| ...
| property 'plugins' -> object with constructor 'Object'
--- property 'react' closes the circle
Referenced from:
at JSON.stringify ()
at file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/shared/config-validator.js:308:45
at Array.map ()
at ConfigValidator.formatErrors (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/shared/config-validator.js:299:23)
at ConfigValidator.validateConfigSchema (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/shared/config-validator.js:330:84)
at ConfigArrayFactory._normalizeConfigData (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/config-array-factory.js:676:19)
at ConfigArrayFactory._loadConfigData (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/config-array-factory.js:641:21)
at ConfigArrayFactory._loadExtendedShareableConfig (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/config-array-factory.js:946:21)
at ConfigArrayFactory._loadExtends (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/config-array-factory.js:814:25)
at ConfigArrayFactory._normalizeObjectConfigDataBody (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/config-array-factory.js:752:25)

src/pages/agent-network/how-it-works.mdx

Oops! Something went wrong! :(

ESLint: 9.39.4

TypeError: Converting circular structure to JSON
--> starting at object with constructor 'Object'
| property 'configs' -> object with constructor 'Object'
| property 'flat' -> object with constructor 'Object'
| ...
| property 'plugins' -> object with constructor 'Object'
--- property 'react' closes the circle
Referenced from:
at JSON.stringify ()
at file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/shared/config-validator.js:308:45
at Array.map ()
at ConfigValidator.formatErrors (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/shared/config-validator.js:299:23)
at ConfigValidator.validateConfigSchema (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/shared/config-validator.js:330:84)
at ConfigArrayFactory._normalizeConfigData (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/config-array-factory.js:676:19)
at ConfigArrayFactory._loadConfigData (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/config-array-factory.js:641:21)
at ConfigArrayFactory._loadExtendedShareableConfig (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/config-array-factory.js:946:21)
at ConfigArrayFactory._loadExtends (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/config-array-factory.js:814:25)
at ConfigArrayFactory._normalizeObjectConfigDataBody (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/config-array-factory.js:752:25)

  • 14 others

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/pages/agent-network/how-it-works.mdx`:
- Around line 58-59: Replace the concrete endpoint example in how-it-works.mdx
with a placeholder hostname. Update the sentence in the public docs content to
use a generic value like https://<your-agent-endpoint>.netbird.ai instead of the
real hostname, keeping the rest of the explanation the same. Use the existing
documentation text in the page body as the location to edit and avoid any real
customer or internal identifiers.

In `@src/pages/agent-network/index.mdx`:
- Around line 62-64: The internal-resources diagram in the “Agentic Access to
Internal Resources and Local Models” section has misleading alt text; update the
img element’s alt attribute in the agent-network page so it accurately describes
the internal-resources policy diagram instead of “agent network llm policy.” Use
the existing image markup in that section and keep the description concise but
content-matched for accessibility.

In `@src/pages/agent-network/policies/index.mdx`:
- Around line 27-28: The allow condition in the policy overview omits
guardrails, so update the sentence in the policies page to reflect that a
request is allowed only when the caller’s groups connect to the resolved
provider, no applicable limit is exhausted, and guardrails do not deny it. Make
this change in the prose near the policy enforcement description so the success
condition matches the rest of the page.
- Around line 1-18: The MDX page uses Note without importing it locally, so
update the policies page to import Note from `@/components/mdx` before the first
use. Keep the existing description and content intact, and add the missing
component import alongside the other top-level MDX symbols in index.mdx so the
<Note> block resolves correctly.

In `@src/pages/agent-network/quickstart.mdx`:
- Line 14: The repository link in quickstart.mdx points to an invalid target and
should be updated. Fix the markdown link for the NetBird repository reference so
it points to the repo root or the correct tree path under netbirdio/netbird,
using the existing link text and adjusting the URL in the affected quickstart
content.
- Around line 126-133: Clarify that the quick test request in the quickstart is
Anthropic-specific rather than provider-agnostic. Update the surrounding copy in
quickstart.mdx near the curl example to explicitly mention that it only works
with Anthropic-style /v1/messages requests and the anthropic-version header, and
direct readers to use the appropriate OpenAI-compatible or gateway example
elsewhere if they are following those paths.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 174ced50-6fe4-438e-a92d-5bdc6e2d47ca

📥 Commits

Reviewing files that changed from the base of the PR and between e21d6da and 170d343.

⛔ Files ignored due to path filters (34)
  • public/docs-static/img/agent-network/global-limits/agent-network-create-global-limit.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/global-limits/agent-network-global-limits-list.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/how-it-works/agent-network-diagram-internal-resources.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/how-it-works/agent-network-diagram-llm-apis.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/integrations/agent-network-connect-anthropic.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/integrations/agent-network-connect-litellm.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/integrations/agent-network-connect-openai.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/integrations/agent-network-create-policy-codex.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/integrations/agent-network-create-policy-litellm.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/integrations/agent-network-create-policy.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/integrations/agent-network-litellm-access-logs.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/integrations/agent-network-litellm-tag-management.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/integrations/agent-network-litellm-tag-usage.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/overview/agent-network-control-center-v2.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/overview/agent-network-control-center.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/overview/agent-network-internal-resources-policy.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/overview/agent-network-llm-policy.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/policies/agent-network-access-log.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/policies/agent-network-create-policy.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/policies/agent-network-guardrails.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/policies/agent-network-policy-limits.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/providers/agent-network-create-provider.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/providers/agent-network-providers-list.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/quickstart/agent-network-add-policy.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/quickstart/agent-network-add-provider.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/quickstart/agent-network-agent-config.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/quickstart/agent-network-connect-device.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/quickstart/agent-network-empty-endpoint.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/quickstart/agent-network-endpoint.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/quickstart/agent-network-usage-and-logs.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/usage-and-logs/agent-network-access-log-filters.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/usage-and-logs/agent-network-access-logs.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/usage-and-logs/agent-network-log-collection.png is excluded by !**/*.png
  • public/docs-static/img/agent-network/usage-and-logs/agent-network-usage-overview.png is excluded by !**/*.png
📒 Files selected for processing (17)
  • src/components/NavigationDocs.jsx
  • src/pages/agent-network/global-limits.mdx
  • src/pages/agent-network/how-it-works.mdx
  • src/pages/agent-network/index.mdx
  • src/pages/agent-network/integrations/claude-code.mdx
  • src/pages/agent-network/integrations/codex.mdx
  • src/pages/agent-network/integrations/index.mdx
  • src/pages/agent-network/integrations/litellm.mdx
  • src/pages/agent-network/policies/guardrails.mdx
  • src/pages/agent-network/policies/index.mdx
  • src/pages/agent-network/policies/limits.mdx
  • src/pages/agent-network/providers.mdx
  • src/pages/agent-network/quickstart.mdx
  • src/pages/agent-network/usage-and-logs/access-logs.mdx
  • src/pages/agent-network/usage-and-logs/index.mdx
  • src/pages/agent-network/usage-and-logs/log-collection.mdx
  • src/pages/agent-network/usage-and-logs/usage-overview.mdx

Comment on lines +58 to +59
The endpoint hostname itself (for example `https://sailcloth.netbird.ai`) is generated
when you connect your first provider and is only reachable from inside your overlay.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Use a placeholder hostname instead of a concrete endpoint.

Please replace https://sailcloth.netbird.ai with a placeholder-style value (for example, https://<your-agent-endpoint>.netbird.ai) in public docs.

As per coding guidelines, “Never include real customer names, internal hostnames, IPs, or production credentials in MDX documentation or public/ files — use placeholders instead”.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/pages/agent-network/how-it-works.mdx` around lines 58 - 59, Replace the
concrete endpoint example in how-it-works.mdx with a placeholder hostname.
Update the sentence in the public docs content to use a generic value like
https://<your-agent-endpoint>.netbird.ai instead of the real hostname, keeping
the rest of the explanation the same. Use the existing documentation text in the
page body as the location to edit and avoid any real customer or internal
identifiers.

Source: Coding guidelines

Comment on lines +62 to +64
<p>
<img src="/docs-static/img/agent-network/overview/agent-network-internal-resources-policy.png" alt="agent network llm policy" className="imagewrapper" />
</p>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Fix misleading alt text for the internal-resources diagram.

The image in the “Agentic Access to Internal Resources and Local Models” section still uses alt="agent network llm policy", which doesn’t match the content.

Suggested fix
-    <img src="/docs-static/img/agent-network/overview/agent-network-internal-resources-policy.png" alt="agent network llm policy" className="imagewrapper" />
+    <img src="/docs-static/img/agent-network/overview/agent-network-internal-resources-policy.png" alt="agent network internal resources policy" className="imagewrapper" />
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<p>
<img src="/docs-static/img/agent-network/overview/agent-network-internal-resources-policy.png" alt="agent network llm policy" className="imagewrapper" />
</p>
<p>
<img src="/docs-static/img/agent-network/overview/agent-network-internal-resources-policy.png" alt="agent network internal resources policy" className="imagewrapper" />
</p>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/pages/agent-network/index.mdx` around lines 62 - 64, The
internal-resources diagram in the “Agentic Access to Internal Resources and
Local Models” section has misleading alt text; update the img element’s alt
attribute in the agent-network page so it accurately describes the
internal-resources policy diagram instead of “agent network llm policy.” Use the
existing image markup in that section and keep the description concise but
content-matched for accessibility.

Comment on lines +1 to +18
export const description =
'Policies connect users and agents to AI providers, with optional token and budget limits plus guardrails for LLM access.'

# Policies

Policies connect users and agents (source groups) to AI providers — controlling
which identities can reach which providers and models, with optional limits and
guardrails.

<p>
<img src="/docs-static/img/agent-network/policies/agent-network-create-policy.png" alt="agent network llm policy" className="imagewrapper" />
</p>

<Note>
This page explains how to create and manage access to AI providers and gateways. If you are
looking for a guide on how to manage access to internal resources, see
[Access Control](/manage/access-control).
</Note>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Import Note before using it.

<Note> is referenced here without a local import, so the MDX page will fail unless some external wrapper injects the component. As per coding guidelines, import custom components from @/components/mdx as needed.

🔧 Suggested fix
+import { Note } from '`@/components/mdx`'
+
 export const description =
   'Policies connect users and agents to AI providers, with optional token and budget limits plus guardrails for LLM access.'
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
export const description =
'Policies connect users and agents to AI providers, with optional token and budget limits plus guardrails for LLM access.'
# Policies
Policies connect users and agents (source groups) to AI providers — controlling
which identities can reach which providers and models, with optional limits and
guardrails.
<p>
<img src="/docs-static/img/agent-network/policies/agent-network-create-policy.png" alt="agent network llm policy" className="imagewrapper" />
</p>
<Note>
This page explains how to create and manage access to AI providers and gateways. If you are
looking for a guide on how to manage access to internal resources, see
[Access Control](/manage/access-control).
</Note>
import { Note } from '`@/components/mdx`'
export const description =
'Policies connect users and agents to AI providers, with optional token and budget limits plus guardrails for LLM access.'
# Policies
Policies connect users and agents (source groups) to AI providers — controlling
which identities can reach which providers and models, with optional limits and
guardrails.
<p>
<img src="/docs-static/img/agent-network/policies/agent-network-create-policy.png" alt="agent network llm policy" className="imagewrapper" />
</p>
<Note>
This page explains how to create and manage access to AI providers and gateways. If you are
looking for a guide on how to manage access to internal resources, see
[Access Control](/manage/access-control).
</Note>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/pages/agent-network/policies/index.mdx` around lines 1 - 18, The MDX page
uses Note without importing it locally, so update the policies page to import
Note from `@/components/mdx` before the first use. Keep the existing description
and content intact, and add the missing component import alongside the other
top-level MDX symbols in index.mdx so the <Note> block resolves correctly.

Source: Coding guidelines

Comment on lines +27 to +28
A request is allowed when a policy connects the caller's groups to the resolved
provider and no applicable limit is exhausted.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Mention guardrails in the allow/deny rule.

This sentence says limits are the only remaining gate, but the page also defines guardrails as part of policy enforcement and they can deny requests too. Include them in the success condition.

✏️ Suggested fix
 A request is allowed when a policy connects the caller's groups to the resolved
-provider and no applicable limit is exhausted.
+provider, attached guardrails accept the request, and no applicable limit is
+exhausted.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
A request is allowed when a policy connects the caller's groups to the resolved
provider and no applicable limit is exhausted.
A request is allowed when a policy connects the caller's groups to the resolved
provider, attached guardrails accept the request, and no applicable limit is
exhausted.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/pages/agent-network/policies/index.mdx` around lines 27 - 28, The allow
condition in the policy overview omits guardrails, so update the sentence in the
policies page to reflect that a request is allowed only when the caller’s groups
connect to the resolved provider, no applicable limit is exhausted, and
guardrails do not deny it. Make this change in the prose near the policy
enforcement description so the success condition matches the rest of the page.

<Note>
NetBird Agent Network is open source and self-hosted, so you can run it on your own servers. This guide sets up a minimal
NetBird deployment with the core Agent Network functionality. You can enable the full platform later.
The code lives in the [netbirdio/netbird](https://github.com/netbirdio/netbird/agent-network) repository.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Fix the repository link target.

https://github.com/netbirdio/netbird/agent-network is not a permalink to the source tree, so this link is likely to 404 or land on the wrong page. Point it at the repo root or the /tree/main/agent-network path instead.

🔧 Suggested fix
- The code lives in the [netbirdio/netbird](https://github.com/netbirdio/netbird/agent-network) repository.
+ The code lives in the [netbirdio/netbird](https://github.com/netbirdio/netbird/tree/main/agent-network) repository.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
The code lives in the [netbirdio/netbird](https://github.com/netbirdio/netbird/agent-network) repository.
The code lives in the [netbirdio/netbird](https://github.com/netbirdio/netbird/tree/main/agent-network) repository.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/pages/agent-network/quickstart.mdx` at line 14, The repository link in
quickstart.mdx points to an invalid target and should be updated. Fix the
markdown link for the NetBird repository reference so it points to the repo root
or the correct tree path under netbirdio/netbird, using the existing link text
and adjusting the URL in the affected quickstart content.

Comment on lines +126 to +133
Run it as usual, or send a quick test request, using a model your provider allows:

```bash
curl https://<your-endpoint>/v1/messages \
--header "Content-Type: application/json" \
--header "anthropic-version: 2023-06-01" \
--data '{"model":"claude-opus-4-8","max_tokens":1024,"messages":[{"role":"user","content":"What is NetBird?"}]}'
```

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Call out that this example is Anthropic-only.

The quickstart reads as provider-agnostic, but this request uses /v1/messages plus anthropic-version, so it won't work for the OpenAI-compatible or gateway paths you just introduced.

🛠 Suggested fix
+This example is specific to Anthropic-compatible providers.
+
 ```bash
 curl https://<your-endpoint>/v1/messages \
   --header "Content-Type: application/json" \
   --header "anthropic-version: 2023-06-01" \
   --data '{"model":"claude-opus-4-8","max_tokens":1024,"messages":[{"role":"user","content":"What is NetBird?"}]}'
</details>

<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

```suggestion
Run it as usual, or send a quick test request, using a model your provider allows:

This example is specific to Anthropic-compatible providers.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/pages/agent-network/quickstart.mdx` around lines 126 - 133, Clarify that
the quick test request in the quickstart is Anthropic-specific rather than
provider-agnostic. Update the surrounding copy in quickstart.mdx near the curl
example to explicitly mention that it only works with Anthropic-style
/v1/messages requests and the anthropic-version header, and direct readers to
use the appropriate OpenAI-compatible or gateway example elsewhere if they are
following those paths.

@braginini braginini merged commit 51c1990 into main Jun 27, 2026
3 checks passed
@braginini braginini deleted the feature/anet branch June 27, 2026 20:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants