It's sort of like LazyFS.
Paths
AppFS should normally be mounted on "/opt/appfs".
/opt/appfs/hostname
Fetches: http://hostname/appfs/index
Contains CSV file: hash,extraData
Fetches: http://hostname/appfs/sha1/
/opt/appfs/hostname/package/os-cpuArch/version
/opt/appfs/hostname/sha1/
Fetches: http://hostname/appfs/sha1/
/opt/appfs/hostname/{sha1,package/os-cpuArch/version}/file
Fetches: http://hostname/appfs/sha1/
Database
hostname_to_packages(hostname, sha1);
package_info(sha1 PRIMARY KEY, package, version, os, cpuArch, isLatest)
package_to_files(package_sha1, type, time, source, size, file_sha1, name)