Skip to content

docs: add Fern scaffolding and publish agent docs to docs.nvidia.com/… - #238

Open
ebalduf wants to merge 7 commits into
mainfrom
docs-to-nvidia-try-2
Open

docs: add Fern scaffolding and publish agent docs to docs.nvidia.com/…#238
ebalduf wants to merge 7 commits into
mainfrom
docs-to-nvidia-try-2

Conversation

@ebalduf

@ebalduf ebalduf commented Jul 29, 2026

Copy link
Copy Markdown
Collaborator

…fleet-intel/agent

  • Restructure docs/ into versioned subdirectories (1.2/, 1.3/) sourced from the v1.2.1 and v1.3.1 release tags respectively, making the repo the single source of truth for agent documentation
  • Add fern/ scaffold (docs.yml, fern.config.json) targeting docs.nvidia.com/fleet-intel/agent with a 1.2/1.3 version selector; version management is manual per minor release, not per patch tag
  • Add docs/index-1.2.yml and docs/index-1.3.yml navigation files
  • Add GitHub Actions workflows for Fern CI (check + lychee link check), PR preview (build + comment), and publish on release
  • Fix MDX safety issues in both doc versions (bare angle brackets, autolink syntax) and replace cross-directory ../CONTRIBUTING.md link with a GitHub blob URL
  • Update README to direct users to docs.nvidia.com/fleet-intel/agent rather than the in-repo docs/ files

Description

This will move the docs into docs.nvidia.com/fleet-intel/agent for publishing, but leave the sources here in this repo. Contributors can continue to work with the docs here, but we'll cut specific releases for the docs.nvidia.com site when we make a major release (i.e. 1.2, 1.3 and 1.4). This will give us a more coheasive document set at docs.nvidia.com

Summary by CodeRabbit

  • New Features

    • Added automated documentation previews for pull requests, including build artifacts and stable preview comments.
    • Expanded Fleet Intelligence Agent documentation for versions 1.2 and 1.3, covering architecture, configuration, usage, development, and DEB/RPM/Helm installation.
  • Documentation

    • Added versioned navigation and hosted publishing configuration.
    • Refreshed README links and corrected CLI examples, troubleshooting guidance, and reference links.
  • Automation / Release

    • Added documentation validation for MDX safety and links.
    • Improved documentation publishing workflows with clearer gating and error reporting.

@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: d4c79c0e-08d1-415f-88ee-2db8b2831965

📥 Commits

Reviewing files that changed from the base of the PR and between 691f00b and f155707.

📒 Files selected for processing (24)
  • .github/workflows/fern-docs-ci.yml
  • .github/workflows/fern-docs-preview-build.yml
  • .github/workflows/fern-docs-preview-comment.yml
  • .github/workflows/publish-fern-docs.yml
  • README.md
  • docs/1.2/architecture.md
  • docs/1.2/configuration.md
  • docs/1.2/development.md
  • docs/1.2/install-deb.md
  • docs/1.2/install-helm.md
  • docs/1.2/install-rpm.md
  • docs/1.2/usage.md
  • docs/1.3/architecture.md
  • docs/1.3/configuration.md
  • docs/1.3/development.md
  • docs/1.3/install-deb.md
  • docs/1.3/install-helm.md
  • docs/1.3/install-rpm.md
  • docs/1.3/usage.md
  • docs/index-1.2.yml
  • docs/index-1.3.yml
  • fern/.gitignore
  • fern/docs.yml
  • fern/fern.config.json
🚧 Files skipped from review as they are similar to previous changes (6)
  • README.md
  • docs/1.3/install-deb.md
  • fern/.gitignore
  • docs/1.2/install-deb.md
  • docs/1.2/development.md
  • docs/1.3/install-rpm.md

📝 Walkthrough

Walkthrough

Adds Fern site configuration, versioned 1.2 and 1.3 documentation, CI validation, release publishing, and pull-request preview workflows that upload artifacts and maintain preview comments.

Changes

Fern documentation platform

Layer / File(s) Summary
Fern site and version configuration
fern/docs.yml, fern/fern.config.json, docs/index-*.yml, fern/.gitignore, README.md
Defines Fern metadata, version navigation, organization/version settings, ignore rules, and hosted documentation links.
Version 1.2 documentation
docs/1.2/*
Adds architecture, configuration, installation, usage, and development guides for version 1.2.
Version 1.3 documentation
docs/1.3/*
Adds version 1.3 documentation and updates endpoint, reference-link, and rendered-markup examples.
Documentation validation and publication
.github/workflows/fern-docs-ci.yml, .github/workflows/publish-fern-docs.yml
Adds Fern CLI checks, MDX and offline link validation, release/manual publication, and published URL reporting.
Pull-request documentation previews
.github/workflows/fern-docs-preview-*.yml
Builds preview artifacts, generates Fern previews, maps changed pages, and creates or updates pull-request comments.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant PullRequest
  participant PreviewBuild
  participant PreviewArtifact
  participant PreviewComment
  participant FernCLI
  participant FernAPI
  PullRequest->>PreviewBuild: trigger on documentation changes
  PreviewBuild->>PreviewArtifact: upload preview sources and metadata
  PreviewComment->>PreviewArtifact: download fern-preview
  PreviewComment->>FernCLI: generate documentation preview
  FernCLI-->>PreviewComment: return preview URL
  PreviewComment->>FernAPI: resolve changed files to page slugs
  PreviewComment-->>PullRequest: create or update preview comment
Loading

Suggested reviewers: jingxiang-z

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the primary changes: adding Fern scaffolding and preparing the agent documentation for publication.
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.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs-to-nvidia-try-2

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

@ebalduf
ebalduf force-pushed the docs-to-nvidia-try-2 branch from e802207 to ff14edb Compare July 29, 2026 18:55
@ebalduf
ebalduf marked this pull request as ready for review July 30, 2026 19:47
@ebalduf
ebalduf requested a review from jingxiang-z July 30, 2026 19:47

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

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 @.github/workflows/fern-docs-preview-comment.yml:
- Around line 46-84: The preview job currently runs fork-controlled Fern sources
with DOCS_FERN_TOKEN. Update the workflow condition governing the preview steps,
including the `Generate preview URL` path, to require that the workflow run
originates from a same-repository pull request before downloading artifacts,
installing the CLI, or invoking Fern; otherwise skip the job. Do not expose the
token to fork-provided inputs.

In @.github/workflows/publish-fern-docs.yml:
- Around line 62-65: Update the URL parsing block in the publish workflow to
fail explicitly when the published URL cannot be extracted from
/tmp/fern-output.log, instead of suppressing the grep failure or silently
skipping the summary. Preserve the existing GITHUB_STEP_SUMMARY output when a
URL is found.
- Around line 27-30: Update the release-triggered publish job to check out only
the canonical docs branch, or gate execution so non-current-version releases
cannot publish. In the Fern URL parsing step, validate that a published link was
emitted and explicitly fail the step when none is found, rather than allowing
the publish job to succeed silently.

In `@docs/1.2/usage.md`:
- Around line 140-142: Add the text language identifier to the fenced output
block containing “Enrollment succeeded” in docs/1.2/usage.md (lines 140-142),
and to the project-structure fenced block in docs/1.3/development.md (lines
33-52).
- Line 111: Correct the fleetint enroll command in the usage documentation by
inserting a space between the endpoint URL and the --token option, so they are
passed as separate arguments.
- Line 272: Update the metrics curl example in the usage documentation to
request the documented component name accelerator-nvidia-dcgm-thermal instead of
accelerator-nvidia-temperature.
🪄 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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: e520f767-6bb3-4b53-83cf-d197bb61bfaf

📥 Commits

Reviewing files that changed from the base of the PR and between 4e8272c and 185f0a1.

📒 Files selected for processing (24)
  • .github/workflows/fern-docs-ci.yml
  • .github/workflows/fern-docs-preview-build.yml
  • .github/workflows/fern-docs-preview-comment.yml
  • .github/workflows/publish-fern-docs.yml
  • README.md
  • docs/1.2/architecture.md
  • docs/1.2/configuration.md
  • docs/1.2/development.md
  • docs/1.2/install-deb.md
  • docs/1.2/install-helm.md
  • docs/1.2/install-rpm.md
  • docs/1.2/usage.md
  • docs/1.3/architecture.md
  • docs/1.3/configuration.md
  • docs/1.3/development.md
  • docs/1.3/install-deb.md
  • docs/1.3/install-helm.md
  • docs/1.3/install-rpm.md
  • docs/1.3/usage.md
  • docs/index-1.2.yml
  • docs/index-1.3.yml
  • fern/.gitignore
  • fern/docs.yml
  • fern/fern.config.json

Comment thread .github/workflows/fern-docs-preview-comment.yml Outdated
Comment thread .github/workflows/publish-fern-docs.yml
Comment thread .github/workflows/publish-fern-docs.yml
Comment thread docs/1.2/usage.md Outdated
Comment thread docs/1.2/usage.md
Comment thread docs/1.2/usage.md

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 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 @.github/workflows/publish-fern-docs.yml:
- Around line 63-66: Update the shell setup in the workflow step that runs Fern
generation to use `set -euo pipefail` instead of only enabling pipefail,
ensuring a nonzero `fern generate` failure terminates the step before the URL
validation and success summary.
🪄 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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 54343506-ef9f-4909-bf9c-64a3108b3357

📥 Commits

Reviewing files that changed from the base of the PR and between 185f0a1 and 89e9e4e.

📒 Files selected for processing (3)
  • .github/workflows/fern-docs-preview-comment.yml
  • .github/workflows/publish-fern-docs.yml
  • docs/1.2/usage.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/1.2/usage.md

Comment thread .github/workflows/publish-fern-docs.yml

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 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 @.github/workflows/publish-fern-docs.yml:
- Around line 44-47: Update the Checkout repository step in the release-publish
workflow to explicitly check out the canonical documentation branch or commit
instead of the release event ref. Preserve workflow_dispatch behavior as
appropriate, ensuring publishes always use the current fern/docs.yml rather than
potentially stale release-tag contents.
🪄 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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: ea9f3097-7cd5-42d7-952a-8f05de749f8d

📥 Commits

Reviewing files that changed from the base of the PR and between 89e9e4e and 6f6fc3f.

📒 Files selected for processing (1)
  • .github/workflows/publish-fern-docs.yml

Comment thread .github/workflows/publish-fern-docs.yml
@ebalduf
ebalduf force-pushed the docs-to-nvidia-try-2 branch from 6f6fc3f to 691f00b Compare July 30, 2026 22:41
ebalduf and others added 7 commits July 30, 2026 17:53
…fleet-intel/agent

- Restructure docs/ into versioned subdirectories (1.2/, 1.3/) sourced
  from the v1.2.1 and v1.3.1 release tags respectively, making the repo
  the single source of truth for agent documentation
- Add fern/ scaffold (docs.yml, fern.config.json) targeting
  docs.nvidia.com/fleet-intel/agent with a 1.2/1.3 version selector;
  version management is manual per minor release, not per patch tag
- Add docs/index-1.2.yml and docs/index-1.3.yml navigation files
- Add GitHub Actions workflows for Fern CI (check + lychee link check),
  PR preview (build + comment), and publish on release
- Fix MDX safety issues in both doc versions (bare angle brackets,
  autolink syntax) and replace cross-directory ../CONTRIBUTING.md link
  with a GitHub blob URL
- Update README to direct users to docs.nvidia.com/fleet-intel/agent
  rather than the in-repo docs/ files

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Ed Balduf <ebalduf@nvidia.com>
Signed-off-by: Ed Balduf <ebalduf@nvidia.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Signed-off-by: Ed Balduf <ebalduf@users.noreply.github.com>
Signed-off-by: Ed Balduf <ebalduf@nvidia.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Signed-off-by: Ed Balduf <ebalduf@users.noreply.github.com>
Signed-off-by: Ed Balduf <ebalduf@nvidia.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Signed-off-by: Ed Balduf <ebalduf@users.noreply.github.com>
Signed-off-by: Ed Balduf <ebalduf@nvidia.com>
- Skip publish job for pre-release tags (e.g. v1.3.2-rc.1); only stable
  releases and manual workflow_dispatch trigger production publish
- Explicitly fail the publish step when fern generate --docs does not
  emit a published URL, preventing silent success on output format changes

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Ed Balduf <ebalduf@nvidia.com>
Without -e, a fern generate failure would not terminate the step
immediately — execution would continue to the URL grep and fail with a
misleading error. -u catches unset variable references as an added guard.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Ed Balduf <ebalduf@nvidia.com>
@ebalduf
ebalduf force-pushed the docs-to-nvidia-try-2 branch from 691f00b to f155707 Compare July 30, 2026 23:53

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 9

🤖 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 @.github/workflows/fern-docs-ci.yml:
- Around line 105-106: Validate the .version value with the existing preview
workflow’s semver validation before installation, assign it to VERSION, and
install the exact package using the VERSION variable. Apply this change at
.github/workflows/fern-docs-ci.yml lines 105-106 and
.github/workflows/publish-fern-docs.yml lines 54-55.

In `@docs/1.2/configuration.md`:
- Around line 196-201: Update the Kubernetes verification commands in
docs/1.2/configuration.md lines 196-201 and docs/1.3/configuration.md lines
203-206 to use helm get values --all, ensuring both examples display chart
defaults and user overrides.
- Around line 104-107: Pin the Helm chart version in both installation examples:
update docs/1.2/configuration.md lines 104-107 to use --version 1.2.1, and
docs/1.3/configuration.md lines 109-114 to use --version 1.3.0, preserving the
existing command structure.

In `@docs/1.2/install-helm.md`:
- Around line 172-178: Update the DCGM troubleshooting commands near the
DCGM_URL environment check to use the configured $DCGM_URL for connectivity
testing instead of the hardcoded nvidia-dcgm.gpu-operator.svc:5555 endpoint.
Make the kubectl service lookup explicitly default-only or otherwise
configurable, preserving the documented custom env.DCGM_URL override behavior.

In `@docs/1.2/install-rpm.md`:
- Around line 80-84: Update the release link and package version placeholders in
the installation and update sections to target the documented 1.2 release line:
link to the v1.2.1 release and require a compatible 1.2.x RPM instead of using
the latest release or unconstrained VERSION.

In `@docs/1.2/usage.md`:
- Around line 304-313: The “Exposing the Agent for External Monitoring”
documentation uses an unsafe all-interfaces listener as the primary example.
Make 127.0.0.1:15133 the default example, retain a specific remote address only
with guidance to restrict access through a firewall or private network, and
document that remote scraping should use a TLS-authenticated reverse proxy
because the TCP API is unauthenticated plaintext HTTP.

In `@docs/1.3/configuration.md`:
- Around line 63-65: Update the configuration documentation around the
duration-valued environment variable descriptions to state that the table covers
both Fleet Intelligence settings and process-level environment tuning. Remove
MALLOC_ARENA_MAX from the telemetry exporter and runtime interval description,
and describe its glibc allocator behavior separately.

In `@docs/1.3/development.md`:
- Around line 33-52: Update the project-structure code fence in the
documentation to include the `text` language identifier after the opening
backticks, preserving the diagram contents unchanged.

In `@docs/1.3/install-helm.md`:
- Around line 36-44: Update the enrollment Secret creation instructions under
“Create enrollment secret” to avoid passing ENROLL_TOKEN via the kubectl command
line. Use a safer input mechanism that does not expose the token in process
arguments, while preserving the existing secret name, namespace, and token key
behavior.
🪄 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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: d4c79c0e-08d1-415f-88ee-2db8b2831965

📥 Commits

Reviewing files that changed from the base of the PR and between 691f00b and f155707.

📒 Files selected for processing (24)
  • .github/workflows/fern-docs-ci.yml
  • .github/workflows/fern-docs-preview-build.yml
  • .github/workflows/fern-docs-preview-comment.yml
  • .github/workflows/publish-fern-docs.yml
  • README.md
  • docs/1.2/architecture.md
  • docs/1.2/configuration.md
  • docs/1.2/development.md
  • docs/1.2/install-deb.md
  • docs/1.2/install-helm.md
  • docs/1.2/install-rpm.md
  • docs/1.2/usage.md
  • docs/1.3/architecture.md
  • docs/1.3/configuration.md
  • docs/1.3/development.md
  • docs/1.3/install-deb.md
  • docs/1.3/install-helm.md
  • docs/1.3/install-rpm.md
  • docs/1.3/usage.md
  • docs/index-1.2.yml
  • docs/index-1.3.yml
  • fern/.gitignore
  • fern/docs.yml
  • fern/fern.config.json
🚧 Files skipped from review as they are similar to previous changes (6)
  • README.md
  • docs/1.3/install-deb.md
  • fern/.gitignore
  • docs/1.2/install-deb.md
  • docs/1.2/development.md
  • docs/1.3/install-rpm.md

Comment on lines +105 to +106
- name: Install Fern CLI
run: npm install -g fern-api@$(jq -r .version fern/fern.config.json)

Copy link
Copy Markdown

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

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -e
printf '%s\n' '--- target workflow excerpts ---'
for f in .github/workflows/fern-docs-ci.yml .github/workflows/publish-fern-docs.yml; do
  echo "### $f"
  sed -n '85,120p' "$f" 2>/dev/null || sed -n '35,70p' "$f"
done
printf '%s\n' '--- all fern CLI installation and VERSION validation sites ---'
rg -n -C 5 'Install Fern CLI|npm install -g fern-api|VERSION=.*fern|valid semver|semver' .github/workflows
printf '%s\n' '--- referenced config files and version values ---'
for f in fern/fern.config.json; do
  if [ -f "$f" ]; then
    jq -c '{version: .version}' "$f"
  else
    echo "$f: missing"
  fi
done
printf '%s\n' '--- workflow file list ---'
git ls-files '.github/workflows/*'

Repository: NVIDIA/fleet-intelligence-agent

Length of output: 5161


🏁 Script executed:

#!/bin/bash
set -e
printf '%s\n' '--- workflow triggers, checkout, and permissions ---'
for f in .github/workflows/fern-docs-ci.yml .github/workflows/publish-fern-docs.yml .github/workflows/fern-docs-preview-comment.yml; do
  echo "### $f"
  sed -n '1,95p' "$f"
done
printf '%s\n' '--- all references to fern.config.json and workflow-controlled inputs ---'
rg -n -C 4 'fern\.config\.json|pull_request|workflow_dispatch|repository_dispatch|ref:|checkout|paths:|permissions:' .github/workflows
printf '%s\n' '--- package-manager availability and npm spec parser metadata (read-only) ---'
command -v npm || true
npm --version 2>/dev/null || true
node --version 2>/dev/null || true
npm view npm version 2>/dev/null || true

Repository: NVIDIA/fleet-intelligence-agent

Length of output: 29230


🏁 Script executed:

#!/bin/bash
set -e
node - <<'JS'
const candidates = [
  'fern-api@5.67.1',
  'fern-api@latest',
  'fern-api@^5.67.1',
  'fern-api@~5.67.1',
  'fern-api@npm:some-other-package@1.0.0',
  'fern-api@file:../local-package',
  'fern-api@https://example.invalid/pkg.tgz',
];
let parse;
try {
  parse = require('npm-package-arg');
} catch (e) {
  console.error(`npm-package-arg unavailable: ${e.message}`);
  process.exit(2);
}
for (const spec of candidates) {
  try {
    const p = parse(spec);
    console.log(JSON.stringify({spec, type: p.type, rawSpec: p.rawSpec, fetchSpec: p.fetchSpec, name: p.name}));
  } catch (e) {
    console.log(JSON.stringify({spec, error: e.message}));
  }
}
JS
printf '%s\n' '--- preview regex acceptance ---'
node - <<'JS'
const re = /^[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z0-9.]+)?$/;
for (const v of ['5.67.1', '5.67.1-beta.1', 'latest', '^5.67.1', '~5.67.1', 'npm:other@1.0.0', 'file:../x', '5.67.1+build.1', '5.67.1-a..b', '5.67.1-01']) {
  console.log(`${v}\t${re.test(v)}`);
}
JS

Repository: NVIDIA/fleet-intelligence-agent

Length of output: 279


🏁 Script executed:

#!/bin/bash
set -e
printf '%s\n' '--- locate npm package-spec parser bundled with npm ---'
npm_root="$(npm root -g)"
echo "global root: $npm_root"
find /usr/local /usr/lib "$npm_root" -type f -path '*/npm-package-arg/*' 2>/dev/null | head -20
printf '%s\n' '--- evaluate the validation pattern independently ---'
node - <<'JS'
const re = /^[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z0-9.]+)?$/;
for (const v of ['5.67.1', '5.67.1-beta.1', 'latest', '^5.67.1', '~5.67.1', 'npm:other@1.0.0', 'file:../x', '5.67.1+build.1', '5.67.1-a..b', '5.67.1-01']) {
  console.log(`${v}\t${re.test(v)}`);
}
JS

Repository: NVIDIA/fleet-intelligence-agent

Length of output: 1062


🌐 Web query:

npm package spec documentation aliases tags ranges exact version package@spec

💡 Result:

In the npm ecosystem, a package specifier (or package-spec) is a string used to identify a package in commands like npm install or within a package.json file [1][2][3]. These specifiers allow you to request specific packages using different methods, including by name, version, range, tag, or alias [1][2]. Package Name and Versions A basic package specifier typically follows the format [<@scope>/] [1][3]. To specify a version, you use the @ symbol followed by the desired version, tag, or range [1][2][3]. - Exact Version: To install a specific version, use package@version (e.g., npm@6.13.1) [1][2][3]. - Version Ranges: You can specify a version range to allow for flexible updates, following semantic versioning (SemVer) rules, such as ^1.2.3 or ~1.2.3 (e.g., npm@^4.0.0) [1][3][4]. - Tags (Dist-tags): Distribution tags are human-readable labels that point to specific versions [5]. You can install a package by tag using package@tag (e.g., npm@latest or npm@beta) [6][7][8]. If no tag or version is specified, npm defaults to the latest tag [6][8][9]. Tags must not be interpretable as valid SemVer ranges (e.g., avoid tags starting with a number or the letter v) [6][8][9]. Aliases Package aliases allow you to install a package under a custom name, which is useful for resolving naming conflicts or using multiple versions of the same package simultaneously [7]. The syntax is @npm: [1][2]. For example, running npm install my-alias@npm:original-package installs original-package into your project but renames it to my-alias within your node_modules folder [7]. General Syntax The overarching format for a named package specifier is [1][3]: - [<@scope>/] - [<@scope>/]@ - [<@scope>/]@ - [<@scope>/]@ Other types of specifiers, such as local folders (prefixed with./ or /), tarballs, and git URLs, also exist within the broader definition of a package-spec [1][3].

Citations:


🏁 Script executed:

#!/bin/bash
set -e
node - <<'JS'
const parse = require('/usr/local/lib/node_modules/npm/node_modules/npm-package-arg');
const candidates = [
  'fern-api@5.67.1',
  'fern-api@latest',
  'fern-api@^5.67.1',
  'fern-api@~5.67.1',
  'fern-api@npm:some-other-package@1.0.0',
  'fern-api@file:../local-package',
  'fern-api@https://example.invalid/pkg.tgz',
];
for (const spec of candidates) {
  try {
    const p = parse(spec);
    console.log(JSON.stringify({spec, type: p.type, rawSpec: p.rawSpec, fetchSpec: p.fetchSpec, name: p.name, alias: p.subSpec && p.subSpec.name}));
  } catch (e) {
    console.log(JSON.stringify({spec, error: e.message}));
  }
}
JS

Repository: NVIDIA/fleet-intelligence-agent

Length of output: 1076


Validate .version before installing Fern CLI.

Both workflows pass the unvalidated value to npm, which accepts ranges, tags, aliases, and other package specs. Apply the preview workflow’s semver validation and install "fern-api@${VERSION}" in both locations.

🧰 Tools
🪛 zizmor (1.28.0)

[warning] 106-106: ad-hoc installation of packages (adhoc-packages): installs a package outside of a lockfile

(adhoc-packages)

📍 Affects 2 files
  • .github/workflows/fern-docs-ci.yml#L105-L106 (this comment)
  • .github/workflows/publish-fern-docs.yml#L54-L55
🤖 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 @.github/workflows/fern-docs-ci.yml around lines 105 - 106, Validate the
.version value with the existing preview workflow’s semver validation before
installation, assign it to VERSION, and install the exact package using the
VERSION variable. Apply this change at .github/workflows/fern-docs-ci.yml lines
105-106 and .github/workflows/publish-fern-docs.yml lines 54-55.

Source: Linters/SAST tools

Comment thread docs/1.2/configuration.md
Comment on lines +104 to +107
helm upgrade --install fleet-intelligence-agent \
oci://ghcr.io/nvidia/charts/fleet-intelligence-agent \
-n <namespace> \
-f values.yaml

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -e
printf '%s\n' '--- targeted documentation excerpts ---'
for f in docs/1.2/configuration.md docs/1.3/configuration.md; do
  echo "### $f"
  if [ -f "$f" ]; then
    nl -ba "$f" | sed -n '90,125p;180,215p'
  else
    echo "missing"
  fi
done
printf '%s\n' '--- chart/version references ---'
rg -n -i --glob '!node_modules' \
  'fleet-intelligence-agent|helm (upgrade|install|get values)|appVersion|version:' \
  docs charts .github 2>/dev/null | head -300

Repository: NVIDIA/fleet-intelligence-agent

Length of output: 10868


🏁 Script executed:

#!/bin/bash
set -e
for f in docs/1.2/configuration.md docs/1.3/configuration.md \
         docs/1.2/install-helm.md docs/1.3/install-helm.md \
         deployments/helm/fleet-intelligence-agent/Chart.yaml \
         .github/workflows/release.yml; do
  echo "### $f"
  if [ -f "$f" ]; then
    awk 'NR>=1 && NR<=240 {printf "%6d %s\n", NR, $0}' "$f" |
      grep -E -C 4 \
        'helm (upgrade|install)|fleet-intelligence-agent|version:|appVersion|CHART_VERSION|VERSION=' |
      head -240
  else
    echo "missing"
  fi
done
printf '%s\n' '--- repository tags and release references ---'
git tag --list | tail -30
git branch --show-current
git status --short

Repository: NVIDIA/fleet-intelligence-agent

Length of output: 16280


🌐 Web query:

NVIDIA fleet-intelligence-agent GitHub releases tags Fleet Intelligence Agent 1.2 1.3 Helm chart

💡 Result:

The NVIDIA Fleet Intelligence Agent is a host agent designed for GPU telemetry collection and attestation [1][2]. As of July 30, 2026, the project is hosted on GitHub [2]. Releases and Tags The official GitHub repository for the project manages versioned releases [3]. Recent stable versions include: - v1.3.0 (published June 4, 2026) [1] - v1.2.1 (published May 5, 2026) [4] These releases provide binary assets, including DEB and RPM packages for various architectures [1][4]. Helm Chart The Fleet Intelligence Agent supports installation via a Helm chart [5][6]. The chart is hosted in the GitHub Container Registry (ghcr.io) [5]. Installation and upgrades are performed using the following OCI-compliant command: helm install fleet-intelligence-agent oci://ghcr.io/nvidia/charts/fleet-intelligence-agent --version "$CHART_VERSION" --namespace "$NS" [5] When installing or upgrading, it is recommended to switch to the specific release tag in the repository documentation to ensure compatibility, as the main branch may contain unreleased changes [2][6]. Comprehensive documentation, including architectural details and installation guides, is available in the GitHub repository [6].

Citations:


Pin the chart version in both installation examples.

Use --version 1.2.1 in docs/1.2/configuration.md and --version 1.3.0 in docs/1.3/configuration.md; otherwise these commands install whichever chart is latest rather than the documented release.

📍 Affects 2 files
  • docs/1.2/configuration.md#L104-L107 (this comment)
  • docs/1.3/configuration.md#L109-L114
🤖 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 `@docs/1.2/configuration.md` around lines 104 - 107, Pin the Helm chart version
in both installation examples: update docs/1.2/configuration.md lines 104-107 to
use --version 1.2.1, and docs/1.3/configuration.md lines 109-114 to use
--version 1.3.0, preserving the existing command structure.

Comment thread docs/1.2/configuration.md
Comment on lines +196 to +201
### Kubernetes

```bash
helm get values fleet-intelligence-agent -n <namespace>
kubectl get daemonset fleet-intelligence-agent -n <namespace> -o yaml
kubectl logs -n <namespace> -l app.kubernetes.io/name=fleet-intelligence-agent --tail=100

Copy link
Copy Markdown

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

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -eu
for f in docs/1.2/configuration.md docs/1.3/configuration.md; do
  echo "=== $f ==="
  sed -n '180,215p' "$f"
done
printf '\n=== Helm value-inspection references ===\n'
rg -n -C 3 'helm get values|--all|effective configuration|merged values' docs README.md .github 2>/dev/null || true

Repository: NVIDIA/fleet-intelligence-agent

Length of output: 2676


🌐 Web query:

Helm 3 helm get values --all documentation computed values user-supplied values

💡 Result:

In Helm 3, the helm get values command retrieves the configuration values used for a specific release [1][2]. The behavior of this command depends on whether the --all (or -a) flag is used: 1. Default Behavior (Without --all): When run without the --all flag, helm get values returns only the user-supplied values [2]. These are the specific overrides provided during the installation or upgrade of the chart (e.g., via -f values.yaml or --set flags) [2][3]. If no specific overrides were provided for a release, the output may appear empty [2]. 2. With --all Flag: When the --all (or -a) flag is used, helm get values returns the full set of computed values [1][2]. This includes the merged result of both the user-supplied overrides and the chart's default values defined in its internal values.yaml file [2][3]. This distinction is important because the user-supplied values represent only the modifications made to the chart's base configuration, whereas the computed values represent the final, effective configuration that was actually rendered during deployment [2][3]. Using helm get values --all is the recommended approach for auditing the exact configuration of a running release or for reproducing it [2].

Citations:


Use helm get values --all in both Kubernetes verification examples so the command includes chart defaults and user overrides, rather than only user-supplied values.

📍 Affects 2 files
  • docs/1.2/configuration.md#L196-L201 (this comment)
  • docs/1.3/configuration.md#L203-L206
🤖 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 `@docs/1.2/configuration.md` around lines 196 - 201, Update the Kubernetes
verification commands in docs/1.2/configuration.md lines 196-201 and
docs/1.3/configuration.md lines 203-206 to use helm get values --all, ensuring
both examples display chart defaults and user overrides.

Comment thread docs/1.2/install-helm.md
Comment on lines +172 to +178
kubectl get svc -n gpu-operator nvidia-dcgm

# Test DCGM connectivity from a pod
kubectl exec -n "$NS" "$POD_NAME" -- curl -v telnet://nvidia-dcgm.gpu-operator.svc:5555

# Check DCGM URL environment variable
kubectl get pods -n "$NS" "$POD_NAME" -o jsonpath='{.spec.containers[0].env[?(@.name=="DCGM_URL")].value}'

Copy link
Copy Markdown

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

Use the configured DCGM endpoint in troubleshooting.

The installation instructions allow overriding env.DCGM_URL in Lines 104-108, but these checks always query nvidia-dcgm.gpu-operator.svc:5555. With a custom service or port, troubleshooting tests the default endpoint instead of the configured one. Use $DCGM_URL for the connectivity check and make the service lookup explicitly default-only or configurable.

🤖 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 `@docs/1.2/install-helm.md` around lines 172 - 178, Update the DCGM
troubleshooting commands near the DCGM_URL environment check to use the
configured $DCGM_URL for connectivity testing instead of the hardcoded
nvidia-dcgm.gpu-operator.svc:5555 endpoint. Make the kubectl service lookup
explicitly default-only or otherwise configurable, preserving the documented
custom env.DCGM_URL override behavior.

Comment thread docs/1.2/install-rpm.md
Comment on lines +80 to +84
Download the package from [Latest stable release](https://github.com/NVIDIA/fleet-intelligence-agent/releases/latest), then install:

```bash
# RHEL/Rocky/AlmaLinux/Amazon Linux (x86_64)
sudo dnf install ./fleetint-VERSION-1.x86_64.rpm

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Pin the package instructions to the documented 1.2 release line.

Because this page is under docs/1.2/, linking to /releases/latest and leaving VERSION unconstrained can direct users to a newer release than the documentation describes. Link to the v1.2.1 release (or explicitly require a compatible 1.2.x package) in both the installation and update sections.

Also applies to: 97-106

🤖 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 `@docs/1.2/install-rpm.md` around lines 80 - 84, Update the release link and
package version placeholders in the installation and update sections to target
the documented 1.2 release line: link to the v1.2.1 release and require a
compatible 1.2.x RPM instead of using the latest release or unconstrained
VERSION.

Comment thread docs/1.2/usage.md
Comment on lines +304 to +313
## Exposing the Agent for External Monitoring

By default, fleetint uses a Unix socket for security. To allow external monitoring tools like Prometheus to scrape metrics over the network, switch to a TCP listener with the `--listen-address` flag:

```bash
# Expose on all interfaces
sudo fleetint run --listen-address=0.0.0.0:15133

# Or expose on a specific IP address
sudo fleetint run --listen-address=192.168.1.100:15133

Copy link
Copy Markdown

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

🧩 Analysis chain

🏁 Script executed:

rg -n -C 8 -- '--listen-address|listen.address|listen_address|Unix socket|TCP listener|TLS|authentication|metrics' docs src .github 2>/dev/null | head -n 240

Repository: NVIDIA/fleet-intelligence-agent

Length of output: 18064


🏁 Script executed:

printf '%s\n' '--- docs/1.2/usage.md ---'
sed -n '288,322p' docs/1.2/usage.md

printf '%s\n' '--- candidate files ---'
git ls-files | rg '(^|/)(cmd|internal|pkg|server|api|.*http.*|.*listen.*|.*metric.*)' | head -n 200

printf '%s\n' '--- relevant declarations and routes ---'
rg -n -C 6 --glob '!vendor/**' --glob '!node_modules/**' \
  'listen-address|ListenAndServe|ListenAndServeTLS|http\.Server|Serve\(|HandleFunc|/metrics|BasicAuth|Authorization|TLSConfig|certificate|bearer|auth' . | head -n 320

Repository: NVIDIA/fleet-intelligence-agent

Length of output: 30357


🏁 Script executed:

printf '%s\n' '--- internal/server outline ---'
ast-grep outline internal/server/server.go internal/server/handlers.go

printf '%s\n' '--- server implementation ---'
cat -n internal/server/server.go
cat -n internal/server/handlers.go

printf '%s\n' '--- run command and config ---'
cat -n cmd/fleetint/run.go
rg -n -C 8 -- 'ListenAddress|listen-address|NewServer|server\.Start|http\.NewServeMux|ServeMux|middleware|Authorization|TLS|BasicAuth' \
  cmd/fleetint internal/config internal/server

Repository: NVIDIA/fleet-intelligence-agent

Length of output: 50387


Use a loopback listener as the primary example and document network controls. The TCP server exposes the unauthenticated API over plaintext HTTP, so 0.0.0.0:15133 makes telemetry and host information reachable on every interface. Show 127.0.0.1 by default and require a firewall/private network or TLS-authenticated reverse proxy for remote scraping.

🤖 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 `@docs/1.2/usage.md` around lines 304 - 313, The “Exposing the Agent for
External Monitoring” documentation uses an unsafe all-interfaces listener as the
primary example. Make 127.0.0.1:15133 the default example, retain a specific
remote address only with guidance to restrict access through a firewall or
private network, and document that remote scraping should use a
TLS-authenticated reverse proxy because the TCP API is unauthenticated plaintext
HTTP.

Comment thread docs/1.3/development.md
Comment on lines +33 to +52
```
fleetint/
├── cmd/
│ └── fleetint/ # Main CLI application
├── internal/
│ ├── cmdutil/ # Command utilities
│ ├── config/ # Configuration management
│ ├── exporter/ # Data export functionality
│ │ ├── collector/ # Data collection
│ │ ├── converter/ # Format conversion (CSV, OTLP)
│ │ └── writer/ # Output writers (file, HTTP)
│ ├── machineinfo/ # Machine information gathering
│ ├── server/ # HTTP API server
│ └── version/ # Version information
├── deployments/
│ └── packages/ # Package build configurations
│ ├── scripts/ # Install/uninstall scripts
│ └── systemd/ # Systemd service files
└── docs/ # Documentation
```

Copy link
Copy Markdown

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

Add a language identifier to the project-structure code fence.

The unlabeled fence triggers Markdownlint MD040; use text (or another appropriate language) after the opening backticks.

🧰 Tools
🪛 markdownlint-cli2 (0.23.1)

[warning] 33-33: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 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 `@docs/1.3/development.md` around lines 33 - 52, Update the project-structure
code fence in the documentation to include the `text` language identifier after
the opening backticks, preserving the diagram contents unchanged.

Source: Linters/SAST tools

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Caution

Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 9

🤖 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 @.github/workflows/fern-docs-ci.yml:
- Around line 105-106: Validate the .version value with the existing preview
workflow’s semver validation before installation, assign it to VERSION, and
install the exact package using the VERSION variable. Apply this change at
.github/workflows/fern-docs-ci.yml lines 105-106 and
.github/workflows/publish-fern-docs.yml lines 54-55.

In `@docs/1.2/configuration.md`:
- Around line 196-201: Update the Kubernetes verification commands in
docs/1.2/configuration.md lines 196-201 and docs/1.3/configuration.md lines
203-206 to use helm get values --all, ensuring both examples display chart
defaults and user overrides.
- Around line 104-107: Pin the Helm chart version in both installation examples:
update docs/1.2/configuration.md lines 104-107 to use --version 1.2.1, and
docs/1.3/configuration.md lines 109-114 to use --version 1.3.0, preserving the
existing command structure.

In `@docs/1.2/install-helm.md`:
- Around line 172-178: Update the DCGM troubleshooting commands near the
DCGM_URL environment check to use the configured $DCGM_URL for connectivity
testing instead of the hardcoded nvidia-dcgm.gpu-operator.svc:5555 endpoint.
Make the kubectl service lookup explicitly default-only or otherwise
configurable, preserving the documented custom env.DCGM_URL override behavior.

In `@docs/1.2/install-rpm.md`:
- Around line 80-84: Update the release link and package version placeholders in
the installation and update sections to target the documented 1.2 release line:
link to the v1.2.1 release and require a compatible 1.2.x RPM instead of using
the latest release or unconstrained VERSION.

In `@docs/1.2/usage.md`:
- Around line 304-313: The “Exposing the Agent for External Monitoring”
documentation uses an unsafe all-interfaces listener as the primary example.
Make 127.0.0.1:15133 the default example, retain a specific remote address only
with guidance to restrict access through a firewall or private network, and
document that remote scraping should use a TLS-authenticated reverse proxy
because the TCP API is unauthenticated plaintext HTTP.

In `@docs/1.3/configuration.md`:
- Around line 63-65: Update the configuration documentation around the
duration-valued environment variable descriptions to state that the table covers
both Fleet Intelligence settings and process-level environment tuning. Remove
MALLOC_ARENA_MAX from the telemetry exporter and runtime interval description,
and describe its glibc allocator behavior separately.

In `@docs/1.3/development.md`:
- Around line 33-52: Update the project-structure code fence in the
documentation to include the `text` language identifier after the opening
backticks, preserving the diagram contents unchanged.

In `@docs/1.3/install-helm.md`:
- Around line 36-44: Update the enrollment Secret creation instructions under
“Create enrollment secret” to avoid passing ENROLL_TOKEN via the kubectl command
line. Use a safer input mechanism that does not expose the token in process
arguments, while preserving the existing secret name, namespace, and token key
behavior.
🪄 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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: d4c79c0e-08d1-415f-88ee-2db8b2831965

📥 Commits

Reviewing files that changed from the base of the PR and between 691f00b and f155707.

📒 Files selected for processing (24)
  • .github/workflows/fern-docs-ci.yml
  • .github/workflows/fern-docs-preview-build.yml
  • .github/workflows/fern-docs-preview-comment.yml
  • .github/workflows/publish-fern-docs.yml
  • README.md
  • docs/1.2/architecture.md
  • docs/1.2/configuration.md
  • docs/1.2/development.md
  • docs/1.2/install-deb.md
  • docs/1.2/install-helm.md
  • docs/1.2/install-rpm.md
  • docs/1.2/usage.md
  • docs/1.3/architecture.md
  • docs/1.3/configuration.md
  • docs/1.3/development.md
  • docs/1.3/install-deb.md
  • docs/1.3/install-helm.md
  • docs/1.3/install-rpm.md
  • docs/1.3/usage.md
  • docs/index-1.2.yml
  • docs/index-1.3.yml
  • fern/.gitignore
  • fern/docs.yml
  • fern/fern.config.json
🚧 Files skipped from review as they are similar to previous changes (6)
  • README.md
  • docs/1.3/install-deb.md
  • fern/.gitignore
  • docs/1.2/install-deb.md
  • docs/1.2/development.md
  • docs/1.3/install-rpm.md
🛑 Comments failed to post (2)
docs/1.3/configuration.md (1)

63-65: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Separate allocator tuning from Fleet Intelligence settings.

MALLOC_ARENA_MAX controls glibc allocator behavior; it does not modify telemetry exporter configuration or runtime loop intervals. Clarify that this table includes process-level environment tuning in addition to Fleet Intelligence settings.

🤖 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 `@docs/1.3/configuration.md` around lines 63 - 65, Update the configuration
documentation around the duration-valued environment variable descriptions to
state that the table covers both Fleet Intelligence settings and process-level
environment tuning. Remove MALLOC_ARENA_MAX from the telemetry exporter and
runtime interval description, and describe its glibc allocator behavior
separately.
docs/1.3/install-helm.md (1)

36-44: 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Avoid exposing the enrollment token through the kubectl command line.

--from-literal=token="$ENROLL_TOKEN" expands the secret into kubectl’s process arguments, allowing exposure through /proc/<pid>/cmdline or process listings. This conflicts with docs/1.3/usage.md’s recommendation to avoid command-line token exposure.

Proposed fix
-kubectl create secret generic "$ENROLL_TOKEN_SECRET_NAME" \
-  --namespace "$NS" \
-  --from-literal=token="$ENROLL_TOKEN"
+printf '%s' "$ENROLL_TOKEN" |
+  kubectl create secret generic "$ENROLL_TOKEN_SECRET_NAME" \
+    --namespace "$NS" \
+    --from-file=token=/dev/stdin
📝 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.

## Create enrollment secret

If you need to enroll nodes, create the token Secret. The secret name should match the `ENROLL_TOKEN_SECRET_NAME` variable set above:

🤖 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 `@docs/1.3/install-helm.md` around lines 36 - 44, Update the enrollment Secret
creation instructions under “Create enrollment secret” to avoid passing
ENROLL_TOKEN via the kubectl command line. Use a safer input mechanism that does
not expose the token in process arguments, while preserving the existing secret
name, namespace, and token key behavior.

@jingxiang-z

Copy link
Copy Markdown
Collaborator

Thanks for this PR! Maintaining separate directories such as docs/1.2 and docs/1.3 on main feels unintuitive and could allow release documentation to drift. Also, patch releases can differ—for example, 1.2.1 may have different behavior, configuration, or installation instructions from 1.2.0—so versioning only by major/minor may not be precise enough.

I'm proposing this change:

  • Keep one working documentation tree on main.
  • Trigger publishing when a final vX.Y.Z tag is pushed.
  • Treat every final release, including patch releases, as an immutable documentation version.
  • Exclude prerelease tags such as v1.3.0-rc.1.
  • Have CI assemble Fern’s versioned content from Git tag snapshots and generate the versions configuration before publishing.

This would give each released artifact an exact matching documentation snapshot without maintaining multiple copies on main.

@ebalduf

ebalduf commented Jul 31, 2026

Copy link
Copy Markdown
Collaborator Author

I will work on making the CI pull the latest two major versions into what Fern needs. We'll only keep 2 major versions since we don't support being further behind than that.. in fact right now we don't support being behind 1.3, based on the service requiring 1.3. We also shouldn't need different documents for minor version (ie. Z), if we need to change the documents for minor versions, it actually a major version release ... Z should only be patches, not functionality changes.

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