Tools used by Kramden for the computer refurbishing process. Each tool is a GTK4/Adwaita application that guides the technician through the workflow.
- Spec — Registers/updates the device in Sortly inventory, runs hardware checks, and generates a tracking sheet PDF.
- OS Load — Identifies the device (K-number), registers with Landscape, and collects system information.
- Final Test — Performs final hardware validation before the device ships.
- Device — End-user application that displays the Kramden guide and device information (hardware specs). Creates a
~/.config/kramden-intro-donemarker on close to track first launch.
The OS Load and Spec workflows integrate with the Sortly inventory API to look up, create, and update device records.
On startup each workflow looks up the device by its serial number. If a matching Sortly record is found the K-number is pre-populated and the record is updated with the latest system information (brand, model, CPU, RAM, storage, serial, GPU, battery health, etc.).
| Environment Variable | Description |
|---|---|
SORTLY_API_KEY |
Required. API key for authenticating with the Sortly API. |
KRAMDEN_TEST |
Optional. When set, all workflows use TEST_FOLDER_IDS instead of their stage-specific folders. |
Each workflow searches its own set of top-level Sortly folders and recursively discovers all subfolders underneath them:
| Workflow | Folder IDs |
|---|---|
| Spec | SPEC_FOLDER_IDS |
| OS Load | OSLOAD_FOLDER_IDS |
| Test | TEST_FOLDER_IDS |
Standalone scripts for working with Sortly outside the wizard workflows:
# Look up a device by serial number (auto-detects if no serial given)
SORTLY_API_KEY=... python3 src/sortly_lookup_by_serial.py [serial] [--stage=spec|osload|test]
# Look up a device by name
SORTLY_API_KEY=... python3 src/sortly_lookup_by_name.py <name> [--stage=spec|osload|test]
# Update a device record with system info
SORTLY_API_KEY=... python3 src/sortly_update_system_info.py <item_name>sudo apt install python3-gi gir1.2-gtk-4.0 python3-psutil python3-pyudev python3-reportlab python3-requestscd src/
./osload.py
./spec.py
./finaltest.py
./deviceinfo.pypython3 -m unittest discover tests- build-essential
- meson
rm -rf builddir
meson setup -Dprefix=$HOME/.local builddir
meson compile -C builddir --verbose
meson install -C builddir
$HOME/.local/bin/kramden-provision-osload
$HOME/.local/bin/kramden-spec
$HOME/.local/bin/kramden-provision-finaltest
$HOME/.local/bin/kramden-device