Jetson Headless Mode
NVIDIAOfficialCreated by Jetson TeamDistributed by NVIDIA
- Skill
- Workflow
- Cloud and DevOps
- Apache-2.0
- Medium risk
- Has scripts
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a structured, reversible workflow to transition NVIDIA Jetson devices into a headless state. By analyzing current system state via memory audit data, it identifies and disables non-essential daemons and the graphical desktop environment. The process emphasizes safety through dry-run defaults, explicit user approval, and documented reversal commands, ensuring that critical services like camera pipelines and power management remain intact.
What it does
- Generates a memory reclamation plan based on live system audit data.
- Switches the systemd default target from graphical to multi-user.
- Disables non-essential background services like Bluetooth, printing, and crash reporting.
- Provides a dry-run mechanism to preview changes before application.
- Includes built-in reversal commands for every applied change.
- Calculates estimated memory savings based on the specific device configuration.
When to use it
- When preparing a Jetson device for deployment as an edge inference appliance.
- When you need to maximize available system memory by removing GUI overhead.
- After running a memory audit that confirms the device is running unnecessary display managers.
- When you have confirmed the user does not require local display output or a desktop environment.
Advantages
- High-yield memory reclamation with minimal risk.
- Fully reversible changes ensure system state can be restored.
- Uses live device data for accurate, context-aware savings estimates.
- Prevents accidental disabling of critical system services like nvargus-daemon.
- Safe-by-default execution model requires explicit user confirmation for mutations.
Usage examples
- “How much memory can I save by putting my Jetson in headless mode?”
- The agent runs the planning script against your current audit data and reports the estimated total savings in MB, along with a list of recommended services to disable.
- “Apply headless mode to my Jetson device.”
- The agent performs a dry run of the headless configuration, displays the proposed changes for your approval, and then executes the changes if authorized.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/nvidia/jetson-headless-mode/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip jetson-headless-mode.zip -d .agents/skills
Documentation by Jetson Team
Jetson Headless Mode
Plan-then-apply for safe, reversible user-space memory reclamation: switch the default systemd target away from graphical.target and disable a curated set of non-essential daemons. This is the highest-yield, lowest-risk memory win on Jetson.
Purpose
Build a user-approved headless-mode plan from live audit data, then apply only safe, reversible user-space changes that reduce desktop and daemon memory use on Jetson.
When to use
"Free as much memory as possible — I don't need the GUI."
"I'm shipping this Jetson as an inference appliance / edge node."
After
jetson-memory-auditshowsdefault_systemd_target=graphical.targetor showsgdm3/lightdm/sddmactive on a system the user describes as headless.
When NOT to use
The user needs the local desktop, display output, kiosk UI, or any X/Wayland session. In that case, do not recommend disabling the graphical target or display manager; use
jetson-memory-auditfor a read-only view and suggest non-GUI memory options instead.You do not have current audit data. Run
jetson-memory-auditfirst, or ask the user for its output, before proposing changes or estimating savings.
Use live device data as the source of truth. Jetson family, SKU/variant, memory totals, active display services, and savings estimates must come from jetson-diagnostic/scripts/detect_jetson.sh, audit.json, or a fresh jetson-memory-audit run. If a value is not available, say it is unknown instead of guessing. The savings numbers below are upper bounds; the real delta is whatever a before/after audit reports.
Prerequisites
Start from a current
jetson-memory-auditJSON snapshot.Confirm the user does not need the local desktop, display output, kiosk UI, or X/Wayland session.
Mutating changes require
sudoand explicit user approval; dry-run first unless approval was already given in the same prompt.Run on the Jetson host or in a host-visible sandbox with access to systemd state.
Available Scripts
| Script | Purpose | Arguments |
|---|---|---|
scripts/plan.sh | Reads a memory audit JSON and emits a plan containing safe, reversible recommendations. | --audit PATH or --audit -, plus --human. |
scripts/apply.sh | Prints or applies the safe commands from a plan JSON. Dry-run by default. | --plan PATH or --plan -, --apply, --reboot, --drop-caches. |
If your agent runtime supports run_script, use it to run scripts/plan.sh and scripts/apply.sh and summarize the returned output. Otherwise run the scripts with bash from the repository root.
Instructions
Run
scripts/plan.shto readaudit.json(fromjetson-memory-audit) and emit a plan with onlysafety: safeknobs (target switch, display managers, audio, print, modem, etc.).Show the plan to the user and confirm.
Run
scripts/apply.sh --plan plan.jsonfor a dry run. Re-run with--applyto execute. Add--drop-cachesto flush the page cache afterward, or--rebootto take effect immediately.Re-run
jetson-memory-audit/scripts/audit.shto verify the actual delta.
Expected workflow
Use the scripts for estimates and application so recommendations are based on the current device state rather than the static upper-bound table alone.
For "what would headless save", "estimate", "plan", or production planning prompts, run
scripts/plan.sh --audit <audit.json>and reportestimated_total_savings_mb, the toprecommendations[*].knob, and whether any display manager orgraphical.targetis active. Do not runapply.sh.For prompts where the user explicitly says to apply headless mode now, run
scripts/apply.sh --plan <plan.json>once as a dry run first. If the user has already approved mutation in the same prompt, re-run the same command with--applyand mention the reversible command(s).If direct execution fails in an agent runtime, invoke scripts with
bash {baseDir}/scripts/<script-name> .... Do not try tochmodinstalled skill files.
Plan / apply contract
plan.shemits the same JSON shape asjetson-inference-mem-tune/scripts/recommend.py: an array ofrecommendationswith{layer, knob, estimated_savings_mb, safety, command, reversible_command, rationale}.apply.shfilters entries tosafety == "safe"with a non-emptycommand, then re-checks the filtered safety marker in the shell loop before execution. Anything else, such as kernel command-line changes, device-tree changes, or accuracy tradeoffs, is out of scope for this skill.Default mode is dry-run.
--applyis required to mutate the system.
Knobs covered
| Knob | Action | Estimated savings | Reversible? |
|---|---|---|---|
disable-graphical-target | systemctl set-default multi-user.target | up to 865 MB | yes |
stop-gdm3 / gdm / lightdm / sddm / display-manager | systemctl disable --now <svc> | ~200 MB / svc | yes |
stop-pulseaudio | disable audio daemon | ~8 MB | yes |
stop-bluetooth | disable Bluetooth stack | ~6 MB | yes |
stop-ModemManager | disable WWAN manager | ~4 MB | yes |
stop-cups / stop-cups-browsed | disable print stack | ~5 / ~3 MB | yes |
stop-snapd | disable Snap daemon | ~30 MB | yes |
stop-whoopsie / kerneloops | disable crash reporters | ~4 / ~2 MB | yes |
stop-avahi-daemon | disable mDNS | ~3 MB | yes |
stop-unattended-upgrades / packagekit | disable background package work | ~6 / ~8 MB | yes |
Do NOT disable these services
nvargus-daemon— required for any libargus camera pipeline.nvgetty.service— serial console; disabling can lock you out of recovery.nvpmodel— power-mode service; required for clock/power tuning.containerd/docker— leave on if you run containers (most inference workloads do).nvfb/nvdisplay-related kernel services — tied to boot-time display configuration, so this skill does not change them.
Safety
Does not edit
/boot/extlinux/extlinux.conf, the device tree, or boot-time memory reservations.Does not disable services it does not have an explicit entry for (no blanket "disable everything not whitelisted").
Every applied change has a documented
reversible_command. Re-running the plan with the reverts is sufficient to restore.Dry-run by default.
--applyis the only way to mutate.Report only device facts and savings figures that came from live detection or audit output.
Cross-platform behavior
The same set of knobs applies to every Jetson family in the matrix above. The script reads JETSON_GENERATION / JETSON_PRODUCT_LINE / JETSON_VARIANT from jetson-diagnostic/scripts/detect_jetson.sh (and still exports legacy JETSON_SKU) so the agent can attribute the savings correctly in its summary, but it does not branch on product line.
Files
- ATTRIBUTION.mdAdded by AutoGineer923 B
- BENCHMARK.md3.2 KiB
- LICENSELicence file added by AutoGineer11.2 KiB
- SKILL.md7.5 KiB
- evals/evals.json6.4 KiB
- scripts/apply.shScript5.7 KiB
- scripts/plan.shScript5.1 KiB
- skill-card.md3.6 KiB
- skill.oms.sig4.9 KiB
skill-card.md
Description: <br>
Plan and apply safe Jetson headless-mode changes to reclaim GUI and daemon memory. <br>
This skill is ready for commercial/non-commercial use. <br>
Owner
NVIDIA <br>
License/Terms of Use: <br>
CC-BY-4.0 AND Apache 2.0 <br>
Use Case: <br>
Developers and engineers converting NVIDIA Jetson devices into headless inference appliances or edge nodes by safely disabling the desktop environment and non-essential daemons to reclaim memory. <br>
Deployment Geography for Use: <br>
Global <br>
Known Risks and Mitigations: <br>
Risk: Review before execution as proposals could introduce incorrect or misleading guidance into skills. <br> Mitigation: Review and scan skill before deployment. <br>
Reference(s): <br>
Agent Skills <br>
jetson-bsp-skills <br>
Skill Output: <br>
Output Type(s): [Shell commands, Configuration instructions] <br> Output Format: [JSON plan with inline bash commands] <br> Output Parameters: [1D] <br> Other Properties Related to Output: [Dry-run by default; --apply flag required for mutation] <br>
Evaluation Agents Used: <br>
Claude Code (
claude-code) <br>Codex (
codex) <br>
Evaluation Tasks: <br>
Evaluated against 8 evaluation tasks in the astra-sandbox environment using the NVSkills-Eval external profile. <br>
Evaluation Metrics Used: <br>
Reported benchmark dimensions: <br>
Security: Checks whether skill-assisted execution avoids unsafe behavior such as secret leakage, destructive commands, or unauthorized access. <br>
Correctness: Checks whether the agent follows the expected workflow and produces the correct final output. <br>
Discoverability: Checks whether the agent loads the skill when relevant and avoids using it when irrelevant. <br>
Effectiveness: Checks whether the agent performs measurably better with the skill than without it. <br>
Efficiency: Checks whether the agent uses fewer tokens and avoids redundant work. <br>
Underlying evaluation signals used in this run: <br>
security: Checks for unsafe operations, secret leakage, and unauthorized access. <br>skill_execution: Verifies that the agent loaded the expected skill and workflow. <br>skill_efficiency: Checks routing quality, decoy avoidance, and redundant tool usage. <br>accuracy: Grades final-answer correctness against the reference answer. <br>goal_accuracy: Checks whether the overall user task completed successfully. <br>behavior_check: Verifies expected behavior steps, including safety expectations. <br>token_efficiency: Compares token usage with and without the skill. <br>
Evaluation Results: <br>
| Dimension | Num | claude-code | codex |
|---|---|---|---|
| Security | 4 | 100% (+0%) | 100% (+0%) |
| Correctness | 4 | 87% (+52%) | 84% (+37%) |
| Discoverability | 4 | 89% (+43%) | 78% (+28%) |
| Effectiveness | 4 | 61% (+34%) | 51% (+20%) |
| Efficiency | 4 | 75% (+19%) | 67% (+18%) |
Skill Version(s): <br>
0.0.1 (source: frontmatter) <br>
Ethical Considerations: <br>
NVIDIA believes Trustworthy AI is a shared responsibility and we have established policies and practices to enable development for a wide array of AI applications. When downloaded or used in accordance with our terms of service, developers should work with their internal team to ensure this skill meets requirements for the relevant industry and use case and addresses unforeseen product misuse. <br>
(For Release on NVIDIA Platforms Only) <br> Please report quality, risk, security vulnerabilities or NVIDIA AI Concerns here. <br>
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs Node.js
Security
What our scanner noticed· Medium risk
- Large base64-encoded blobs
- Scripts that your agent may run
This skill includes scripts that your agent may run. Read them before you use it.
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- Jetson Team
- Publisher
- NVIDIA (Official)
- Distributed by
- NVIDIA
- Source
- NVIDIA/skills · skills/jetson-headless-mode · commit fce3cca
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE-APACHE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Jetson Team or NVIDIA.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download jetson-headless-mode.zip