Skip to content

Commit 3ae2648

Browse files
committed
Add commands
1 parent 07935b6 commit 3ae2648

3 files changed

Lines changed: 204 additions & 0 deletions

File tree

‎assets/commands/age-inspect.md‎

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# TAGLINE
2+
3+
Inspect age-encrypted files without decrypting them
4+
5+
# TLDR
6+
7+
**Show metadata** about an age file
8+
9+
```age-inspect [secrets.age]```
10+
11+
**Read from stdin**
12+
13+
```cat [secrets.age] | age-inspect```
14+
15+
**Read from stdin** with explicit dash
16+
17+
```age-inspect - < [secrets.age]```
18+
19+
**Emit machine-readable JSON** for scripting
20+
21+
```age-inspect --json [secrets.age]```
22+
23+
**Print the version** and exit
24+
25+
```age-inspect --version```
26+
27+
# SYNOPSIS
28+
29+
**age-inspect** [**--json**] [_INPUT_]
30+
31+
# DESCRIPTION
32+
33+
**age-inspect** reports metadata about a file produced by **age**(1) without performing any decryption. It parses the age header to identify the file format version, list the recipient stanza types used to wrap the file key (for example `X25519`, `scrypt`, `ssh-ed25519`, or the post-quantum `mlkem768x25519`), and report whether ASCII armor was used.
34+
35+
When the input is a regular file (not a pipe) the tool also prints a size breakdown — header, armor overhead, encryption overhead and payload — so the size of the protected data can be estimated without supplying an identity. Because no key material is required, **age-inspect** is safe to run on files received from untrusted parties to determine whether they can be decrypted with a given identity, or to audit a directory of archived secrets.
36+
37+
If _INPUT_ is omitted or set to `-`, the file is read from standard input.
38+
39+
# PARAMETERS
40+
41+
**--json**
42+
> Emit the inspection result as a JSON object suitable for programmatic processing (recipient types, post-quantum flag, armored flag, size fields).
43+
44+
**--version**
45+
> Print the **age-inspect** version and exit.
46+
47+
# CAVEATS
48+
49+
**age-inspect** never decrypts the payload, so it cannot tell you whether a given identity will succeed in decryption — only which recipient stanza types are present. Size figures are exact for seekable files; when reading from a pipe, the payload size is reported as unknown. The tool was added to the official **age** distribution in version **1.3.0**; older releases ship only `age` and `age-keygen`.
50+
51+
# HISTORY
52+
53+
**age-inspect** ships with the reference **age** implementation by **Filippo Valsorda**. It was introduced in **age 1.3.0** in **2025**, alongside support for the post-quantum `mlkem768x25519` recipient type, to make it possible to reason about archived age files (recipient mix, armor, size) without unsealing them.
54+
55+
# SEE ALSO
56+
57+
[age](/man/age)(1), [age-keygen](/man/age-keygen)(1), [gpg](/man/gpg)(1), [openssl](/man/openssl)(1)

‎assets/commands/hw-probe.md‎

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
# TAGLINE
2+
3+
Probe Linux hardware and upload reports to the Linux hardware database
4+
5+
# TLDR
6+
7+
**Probe all hardware** and upload the report to linux-hardware.org
8+
9+
```sudo -E hw-probe -all -upload```
10+
11+
**Probe and run operability checks** (graphics, drive, CPU, memory)
12+
13+
```sudo -E hw-probe -all -check -upload```
14+
15+
**Probe locally** without uploading (saved under `/root/HW_PROBE/`)
16+
17+
```sudo -E hw-probe -all```
18+
19+
**Disable** specific log collectors
20+
21+
```sudo -E hw-probe -all -upload -disable [xdpyinfo,xorg.conf]```
22+
23+
**Tag a probe** with an inventory identifier
24+
25+
```sudo -E hw-probe -all -upload -i [INVENTORY_ID]```
26+
27+
**Generate** a new inventory ID linked to your email
28+
29+
```sudo -E hw-probe -generate-inventory -email [you@example.com]```
30+
31+
**Install a daily cron job** that probes the system and alerts on failures
32+
33+
```sudo -E hw-probe -start```
34+
35+
**Dump and decode** the ACPI tables (requires `acpica-tools`)
36+
37+
```sudo -E hw-probe -all -dump-acpi -decode-acpi -upload```
38+
39+
# SYNOPSIS
40+
41+
**hw-probe** [_options_]
42+
43+
# PARAMETERS
44+
45+
**-all**
46+
> Probe for all hardware. Equivalent to enabling every individual probe collector.
47+
48+
**-probe**
49+
> Probe for hardware (a lighter probe than **-all**).
50+
51+
**-logs**
52+
> Collect system logs (dmesg, journal, lspci, lsusb, etc.).
53+
54+
**-log-level** _N_
55+
> Set log collection verbosity: `mini`, `default`, or `maximal`.
56+
57+
**-upload**
58+
> Upload the resulting probe to linux-hardware.org and print the public URL.
59+
60+
**-check**
61+
> Run operability sanity tests on graphics, drive, CPU and memory.
62+
63+
**-check-graphics**
64+
> Test integrated and discrete graphics with **glxgears**.
65+
66+
**-check-hdd**
67+
> Test drive read speed with **hdparm**.
68+
69+
**-check-cpu**
70+
> Test CPU using **dd** and **md5sum**.
71+
72+
**-check-memory**
73+
> Test RAM with **memtester**.
74+
75+
**-id** _DESC_, **-name** _DESC_
76+
> Set a custom name or description for the probe.
77+
78+
**-i** _ID_
79+
> Tag the probe with an inventory identifier.
80+
81+
**-generate-inventory**, **-generate-inventory-id**
82+
> Request a new inventory ID, linked to **-email**.
83+
84+
**-email** _ADDR_
85+
> Email address to associate with a generated inventory ID.
86+
87+
**-disable** _A,B,C_
88+
> Disable specific log collectors (e.g. `xdpyinfo,xorg.conf`).
89+
90+
**-enable** _A,B,C_
91+
> Force-enable specific log collectors disabled by default.
92+
93+
**-dump-acpi**
94+
> Dump the ACPI tables.
95+
96+
**-decode-acpi**
97+
> Decode dumped ACPI tables (requires **acpica-tools**).
98+
99+
**-show**
100+
> Show summary of probe data on the console.
101+
102+
**-verbose**
103+
> Print detailed log output during probing.
104+
105+
**-pci-ids** _PATH_, **-usb-ids** _PATH_, **-sdio-ids** _PATH_, **-pnp-ids** _PATH_
106+
> Use a custom IDs database file when decoding device IDs.
107+
108+
**-import** _DIR_
109+
> Re-create probes from a directory of previously-saved probe data.
110+
111+
**-start**
112+
> Install a daily cron job that probes the system and emails on hardware failure.
113+
114+
**-stop**
115+
> Remove the daily cron job created by **-start**.
116+
117+
**-debug**
118+
> Enable debug output and keep temporary files.
119+
120+
**-help**
121+
> Print full usage information.
122+
123+
# DESCRIPTION
124+
125+
**hw-probe** collects a snapshot of a machine's hardware configuration and the related kernel/userspace logs, then optionally uploads it to the public **Linux Hardware Database** at linux-hardware.org. The uploaded probe gets a permanent URL that can be shared on bug trackers, mailing lists, or vendor support requests.
126+
127+
A probe combines the output of standard tools (lspci, lsusb, lscpu, dmidecode, smartctl, lshw, edid, dmesg, Xorg.log, etc.) into a structured, anonymized bundle. The database aggregates these reports to track hardware compatibility across Linux distributions, identify suitable drivers for unsupported devices, and recommend kernels known to work with a given configuration.
128+
129+
The tool also doubles as a self-monitoring agent: with **-start** it adds a cron job that runs daily, compares the new probe with the previous one and emails the user if a disk SMART error, missing device, or other anomaly appears. It is widely used by distributions, vendors, and end users to diagnose driver issues, plan upgrades, and inventory fleets of machines.
130+
131+
# CAVEATS
132+
133+
Most probes require **root** privileges to read SMART data, DMI tables and X session logs — invoke via `sudo -E` so that environment variables (notably `DISPLAY`) are preserved. A full probe with **-check** can take a minute or more because of memtester and disk timing tests. Uploaded probes are public; they are anonymized but inventory tags and machine names are kept verbatim, so do not include sensitive identifiers in **-id** or **-i**.
134+
135+
# CONFIGURATION
136+
137+
Local probes are written to `/root/HW_PROBE/LATEST/` (or `~/HW_PROBE/LATEST/` for non-root probes). The cron job created by **-start** lives in `/etc/cron.daily/hw-probe`. Decoding ACPI requires the **acpica-tools** package; reading SMART requires **smartmontools**; graphics checks require **mesa-utils** for **glxgears**.
138+
139+
# HISTORY
140+
141+
**hw-probe** was created by **Andrey Ponomarenko** as the front-end client for the Linux Hardware Database project, first released in **2018**. It is written in Perl and ships in the AUR, Debian/Ubuntu, Fedora, openSUSE and FreeBSD ports. The companion site, linux-hardware.org, has since collected millions of public probes used by kernel developers and distribution maintainers to track Linux hardware support over time.
142+
143+
# SEE ALSO
144+
145+
[lshw](/man/lshw)(1), [lspci](/man/lspci)(8), [lsusb](/man/lsusb)(8), [dmidecode](/man/dmidecode)(8), [hwinfo](/man/hwinfo)(8), [smartctl](/man/smartctl)(8), [inxi](/man/inxi)(1)

‎assets/commands/index.txt‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ afm2tfm.md
114114
afmtodit.md
115115
ag.md
116116
agate.md
117+
age-inspect.md
117118
age-keygen.md
118119
age.md
119120
agent-vault.md
@@ -3222,6 +3223,7 @@ huntd.md
32223223
hurl.md
32233224
husky.md
32243225
hut.md
3226+
hw-probe.md
32253227
hwatch.md
32263228
hwclock.md
32273229
hwdb.md

0 commit comments

Comments
 (0)