v0.4.58
Signedpublished October 12, 2026What changed
- See how much disk a workspace uses. A workspace's General tab has a
new Disk row: the total, then the parts that make it up. Those are its
/workspacevolume, its Docker data if it is Docker-enabled, and its container, which covers everything else it has written, such as installed packages and the home directory. The card on the Workspaces page shows the total, with the parts when you point at it. Administrators get a Disk column for every workspace on the System page, stopped ones included. Snapshots are not counted here; they are listed where they always were. Measuring walks every volume on the server, so it happens in the background (at most every five minutes while someone is looking, and every half hour otherwise) and pages never wait for it. Each figure says how old it is. The API has it atGET /api/v1/workspaces/disk-usage. - The System page shows when it is still catching up. After you stop, start or resize a workspace, its row stays busy and Refresh spins until the list has reloaded. Before, the confirmation appeared while the row still showed the old state for a few seconds.
- The nested domain section is no longer only about DevGrail. The Domains
tab describes a nested domain as what it is: every name under it sent to a
server in the workspace that handles its own TLS, whether that is Traefik,
Caddy or another DevGrail. The form no longer previews an inner dashboard, and
a claimed domain no longer lists settings for an inner DevGrail or links to
one. The checklist says "Ready" once everything passes. The API and the MCP
tools follow suit: a nested domain and its check no longer carry
dashboard_url, and the check no longer carriesinner_settings.
Container images
Installer files
devgrail-desktop-files.tar.gz31 KB
sha256:2f2bf722f47a45ee336dd9c9d76b984cb53840a8584b4a4e915543b247fe42bcdevgrail-desktop-install.sh46 KB
sha256:f6dc82abc6b0624660adb45d6e234f1bc5b93f2e030e1cf39a976234f939efebdevgrail-desktop-linux-amd6411 MB
sha256:c46837f4879a727f4aed41b13bc4e31a22f72728908731db33a9dd8dc906795adevgrail-desktop-linux-arm649.9 MB
sha256:607d4adcd40f5712ed6d8b6fd5dc28e0416d005ec30645b260137ef95f838c22Signature
ecdsa-p256-sha256key f1f1eaf642454d65
One signature covers every artifact above. It is made off this host, and neither this site nor the registry behind it can check it — that is the point, and it is why verifying it catches things a checksum from the same server cannot. How to verify it.
Verify devgrail-container (amd64)
curl -fsSL https://web-dev.trixibot.com/api/registry/releases/v0.4.58 -o release.json
# -j, not -r: -r appends a newline the signer never saw, and the check fails.
jq -j '.signature.payload' release.json > payload
jq -r '.signature.signature' release.json | base64 -d > payload.sig
openssl dgst -sha256 -verify devgrail-release.pem -signature payload.sig payload
# -> Verified OK
# The payload must name this release, so an older signed one cannot be replayed.
head -2 payload
# ...and it must name this exact file. -qxF: whole line, literal.
grep -qxF 'image devgrail-container 41 amd64 2f4e28dc59dd04f37f4414569cac7d5166e6e7e78d4636422fa6246b33281ee9' payload && echo "digest is covered by the signature"The signed payload — shown for reading, not for verifying
Copy this from the manifest with jq -j, never from this page: the signature covers exact bytes, and rendering here drops the trailing newline the signer included.
devgrail-release-signature-v1
release v0.4.58
asset devgrail-desktop-files.tar.gz 7 2f2bf722f47a45ee336dd9c9d76b984cb53840a8584b4a4e915543b247fe42bc
asset devgrail-desktop-install.sh 7 f6dc82abc6b0624660adb45d6e234f1bc5b93f2e030e1cf39a976234f939efeb
asset devgrail-desktop-linux-amd64 7 c46837f4879a727f4aed41b13bc4e31a22f72728908731db33a9dd8dc906795a
asset devgrail-desktop-linux-arm64 7 607d4adcd40f5712ed6d8b6fd5dc28e0416d005ec30645b260137ef95f838c22
asset docker-compose.yml 68 5ba6b6d89a988ec87ac18f252a067a8e5902c291d945317ee2b0b2cef9c3e841
asset install.sh 68 caf15cca443c16d8e1728f9c1c893ffc6c492dd6ca99aff1406556c2490c2414
asset traefik-dynamic-http.yml 67 787e7e7ff8099a2dc084b4204a68f7f666561b5adf709ec7f859f9fae34d9163
asset traefik-dynamic.yml 68 3fe40a3d1c61b71aacd1db9b5e20132c8e69d19d44e5f193f8a27375ed921273
asset uninstall.sh 68 bb505e7b33f61de131f45dec9d76e80fb3e60bbdc227a2f5163760f9ac789778
image devgrail-container 41 amd64 2f4e28dc59dd04f37f4414569cac7d5166e6e7e78d4636422fa6246b33281ee9
image devgrail-container 41 arm64 463e6def84e50544425b898edf607a8dc696a5794aef90e1ce571d8ee2e14853
image devgrail-server 84 amd64 efb3c305cf5d0929f72c9691b369c5c968eaf69f51f32d55d5d2599c0b53d998
image devgrail-server 84 arm64 3295e6895e2025ca61e7cd5c5bcc870a5f70ab90a2c545ffec811078a72ad372