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://mp-staging.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
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