Jetson Headless Memory Optimizer
Reclaim memory on GUI-free Jetson devices through safe, reversible system-service changes.
The skill requires current audit data and explicit user approval, defaults to dry-run, restricts apply.sh to a small systemctl allowlist, documents reversible commands, and avoids critical services and boot configuration. Points are deducted because sudo actions and disabling updates/crash reporting can still affect operations, while dependency checks, per-change rollback verification, and stronger recovery safeguards are absent.
SKILL.md, plan.sh, and apply.sh describe a consistent workflow with JSON validation, command allowlisting, and diagnostic errors. Points are deducted because shared-script dependencies are outside the selected path, audit-schema validation is shallow, pipeline execution may weaken failure propagation, and key paths were not executable under this static review.
The audience, triggers, non-fit cases, audit input, and JSON plan output are clearly described, including an explicit desktop-preservation exclusion. Points are deducted for no Chinese-language documentation or localized examples and limited evidence for cross-product compatibility; the core function is local and does not depend on unreachable overseas services, but host compatibility still requires confirmation.
The documentation is layered across purpose, prerequisites, scripts, workflow, safety, and limitations, and includes version, licensing, ownership clues, and a benchmark. Points are deducted for the missing recommended Examples section, nonconforming author format, absent changelog and explicit update path, and inconsistent license wording between frontmatter and the skill card.
The skill converts live audit data into a previewable headless plan with estimates, reversible commands, and post-change verification guidance; the benchmark reports limited correctness and effectiveness uplift. Points are deducted because savings are static upper bounds, actual benefit is device-dependent, the evaluation dataset is unavailable, and users still need review and on-device verification.
The scripts, input/output contract, and some benchmark metrics are auditable, providing limited execution evidence. Points are deducted because the benchmark dataset is unavailable, only part of the task set is shown, and no skill-specific committed test suite or independent corroboration is provided, limiting reproducibility.
- Applying the plan changes the systemd default target and may disable display, audio, discovery, WWAN, printing, or automatic updates; confirm each dependency and retain console or remote recovery access.
- Savings are upper bounds rather than measured results; after application, rerun the memory audit and verify services, inference, camera, and container workloads.
- The frontmatter license, skill-card license, and repository dual-license wording should be reconciled before publication.
- The benchmark claims 8 tasks but reports only 4, and the source dataset is unavailable, so it is not sufficient independent validation.
What does this skill do, and when should you use it?
This skill is for Jetson devices that do not need a local graphical interface. It builds a headless-mode plan from a current memory audit, then can switch the default systemd target from graphical.target to multi-user.target and disable explicitly listed non-essential user-space services. Planning is data-driven, dry-run by default, and mutation requires sudo plus explicit approval. It does not modify boot arguments, the device tree, or boot-time memory reservations, and it preserves critical camera, power-management, serial-recovery, and container services.
Reads a JSON snapshot produced by jetson-memory-audit; runs scripts/plan.sh to produce a JSON plan with safe recommendations, estimated savings, commands, reversible commands, and rationales; and can run scripts/apply.sh to print or apply that plan, with --apply, --reboot, and --drop-caches options. Covered services include the graphical target, display managers, audio, Bluetooth, modem management, printing, Snap, crash reporting, mDNS, and background package services. After application, it directs the agent to rerun jetson-memory-audit/scripts/audit.sh to verify the actual memory delta.
- A Jetson is being shipped as an inference appliance or edge node without a local desktop.
- A memory audit reports graphical.target as the default target on a system the user describes as headless.
- gdm3, lightdm, or sddm is active, and the user confirms that display output and X/Wayland sessions are unnecessary.
- A production planner needs a device-state-based estimate of the memory benefit from headless mode.
What are this skill's strengths and limitations?
- Separates planning from application and defaults to dry-run; --apply is required to mutate the system.
- Documents a reversible_command for every applied change.
- Restricts application to explicitly listed safety=safe user-space adjustments and avoids kernel command-line, device-tree, and boot-reservation changes.
- Leaves nvargus-daemon, nvgetty.service, nvpmodel, and containerd/docker available when required.
- Requires a current jetson-memory-audit snapshot and access to systemd state on the Jetson host or a host-visible sandbox.
- Is unsuitable for systems that need a local desktop, display output, kiosk UI, or an X/Wayland session.
- The savings table contains upper bounds; actual results must be measured with before-and-after audits.
- The supplied material does not show a test suite, model-specific coverage results, or benchmark data.
How do you install this skill?
Install the skill using the repository README's supported CLI command:
npx skills add nvidia/skills --skill jetson-headless-mode --yes
The repository bundles 324 skills; this command selects only jetson-headless-mode. The exact installation directory is handled by the skills CLI and the target client.
How do you use this skill?
Obtain a current jetson-memory-audit JSON snapshot and confirm that the user does not need the local desktop, display output, kiosk UI, or an X/Wayland session. From the repository root, run:
bash scripts/plan.sh --audit <audit.json>
Show the plan and obtain confirmation. The default application mode is a dry run:
bash scripts/apply.sh --plan <plan.json>
Use --apply only after explicit approval. Rerun jetson-memory-audit/scripts/audit.sh afterward to verify the actual change. If current audit data is unavailable, do not propose changes or estimate savings.
How does this skill compare with similar options?
jetson-memory-audit is a complementary prerequisite rather than a replacement: it provides the read-only current-state audit, while jetson-headless-mode uses that data to plan and apply headless changes.