Backpack: Difference between revisions

From Local Area Network
New tool page, source-checked against the project README
 
Plainer prose: fewer quotes, project claims attributed, glosses folded in
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
{{Infobox tool
{{Infobox tool
| name        = Backpack
| name        = Backpack
| what        = Install Android apps from repositories that live in Logos Storage
| what        = Installs Android apps from repositories that live in Logos Storage
| stage      = Prototype
| stage      = Prototype
| licence    = MIT or Apache-2.0
| licence    = MIT or Apache-2.0
Line 10: Line 10:
| verified_against = README and commit of 2 November 2026
| verified_against = README and commit of 2 November 2026
}}
}}
'''Backpack''' is an Android app store whose repositories live in [[Logos Storage]], with update notes carried over [[Logos Messaging]] (Logos Delivery). It is published by the GitHub user vpavlin.
'''Backpack''' is an Android app store by the GitHub user vpavlin whose repositories live in [[Logos Storage]], with update notes carried over [[Logos Messaging]] (Logos Delivery).


== What it does ==
== What it does ==
* Works as "a tiny F-Droid", where the APKs, their icons and the repository index are all Storage objects fetched by CID.
* It works as "a tiny F-Droid" (F-Droid is an open-source Android app store). The APKs, their icons and the repository index are all Storage objects fetched by CID (content identifier).
* Gives publishers a desktop command-line tool, <code>backpack</code>, that uploads APKs and icons to a Storage node, publishes a signed index and prints the repository link.
* Publishers get a desktop command-line tool, <code>backpack</code>, that uploads APKs and icons to a Storage node, publishes a signed index and prints the repository link.
* Gives users an Android app that adds a repository from a <code>backpack://</code> link, lists its apps, and installs or updates them. Logos Storage runs on the phone.
* Users get an Android app, with Logos Storage running on the phone, that adds a repository from a <code>backpack://</code> link, lists its apps, and installs or updates them.
* Announces each new index with a small signed note on a Logos Delivery topic. HTTPS addresses in the link can also carry the note, but that setting is off by default.
* Each new index is announced by a small signed note on a Logos Delivery topic. HTTPS addresses in the link can also carry the note, though that setting is off by default.
* Checks the signature and sequence number of every note and index, the SHA-256 of every APK, and that each APK's signing certificate matches the pinned one.
* Backpack checks the signature and sequence number of every note and index, the SHA-256 of every APK, and that each APK's signing certificate matches the pinned one.
* Imports an existing F-Droid repository, but only through a verified index.
* An existing F-Droid repository can be imported, but only through a verified index.
* Can install app updates automatically, as a setting.
* A setting lets app updates install automatically.


Stage: Prototype. The README states no stage. The page lists it as Prototype because it has working code. The install steps cover the publisher CLI, and the Android app is built from source. Its list of limits says Delivery needs the Loam app on the phone, there is no key rotation yet, downloads run at about 200 to 500 KB/s, and only arm64 phones are supported. The README does not say whether it is an official Logos project.
Stage: Prototype. The README states no stage, so the page lists it as Prototype on the strength of its working code. The install steps cover the publisher CLI, and the Android app is built from source. The README's list of limits says Delivery needs Loam, a separate app that runs a shared node on the phone, and that there is no key rotation yet. The same list says downloads from the publisher's server run at 200 to 500 KB/s and only arm64 phones are supported. The README does not say whether it is an official Logos project.


== Use it ==
== Use it ==
# Publisher: in <code>cli/</code>, run <code>npm install</code>.
# Publisher: in <code>cli/</code>, run <code>npm install</code>.
# Run <code>./backpack.mjs init --name "My backpack"</code>. This creates the repository key in <code>~/.backpack/default/key.pem</code>, which the README says to back up.
# Run <code>./backpack.mjs init --name "My backpack"</code>. This creates the repository key in <code>~/.backpack/default/key.pem</code>, which needs backing up.
# Set where the update note is read and written with <code>./backpack.mjs config</code>, then add apps with <code>./backpack.mjs add path/to/app.apk</code> or <code>./backpack.mjs import-fdroid</code>.
# Set where the update note is read and written with <code>./backpack.mjs config</code>, then add apps with <code>./backpack.mjs add path/to/app.apk</code> or <code>./backpack.mjs import-fdroid</code>.
# Run <code>./backpack.mjs publish</code>. It uploads the index to Storage, sends the note and prints a link and a QR code.
# Run <code>./backpack.mjs publish</code>. It uploads the index to Storage, sends the note and prints a link and a QR code.
Line 32: Line 32:


== Build it ==
== Build it ==
* Run <code>git submodule update --init</code> to fetch loam-transport, then <code>cd mobile && npm install</code>.
* <code>git submodule update --init</code> fetches loam-transport, and <code>cd mobile && npm install</code> follows it.
* <code>native/logosstorage/build-jni.sh</code> builds the JNI glue for libstorage.
* <code>native/logosstorage/build-jni.sh</code> builds the JNI glue for libstorage.
* <code>npx expo prebuild --platform android --clean</code>, then <code>./gradlew assembleRelease</code> in <code>mobile/android</code>. The README gives the full sequence, including the Android SDK path and a lint setting.
* The app builds with <code>npx expo prebuild --platform android --clean</code>, then <code>./gradlew assembleRelease</code> in <code>mobile/android</code>. The README gives the full sequence, including the Android SDK path and a lint setting.


== Releases ==
== Releases ==

Latest revision as of 23:26, 4 November 2026

Backpack
What it does: Installs Android apps from repositories that live in Logos Storage
Stage: Prototype
Licence: MIT or Apache-2.0
Verified on 4 November 2026 against README and commit of 2 November 2026.

Backpack is an Android app store by the GitHub user vpavlin whose repositories live in Logos Storage, with update notes carried over Logos Messaging (Logos Delivery).

What it does

  • It works as "a tiny F-Droid" (F-Droid is an open-source Android app store). The APKs, their icons and the repository index are all Storage objects fetched by CID (content identifier).
  • Publishers get a desktop command-line tool, backpack, that uploads APKs and icons to a Storage node, publishes a signed index and prints the repository link.
  • Users get an Android app, with Logos Storage running on the phone, that adds a repository from a backpack:// link, lists its apps, and installs or updates them.
  • Each new index is announced by a small signed note on a Logos Delivery topic. HTTPS addresses in the link can also carry the note, though that setting is off by default.
  • Backpack checks the signature and sequence number of every note and index, the SHA-256 of every APK, and that each APK's signing certificate matches the pinned one.
  • An existing F-Droid repository can be imported, but only through a verified index.
  • A setting lets app updates install automatically.

Stage: Prototype. The README states no stage, so the page lists it as Prototype on the strength of its working code. The install steps cover the publisher CLI, and the Android app is built from source. The README's list of limits says Delivery needs Loam, a separate app that runs a shared node on the phone, and that there is no key rotation yet. The same list says downloads from the publisher's server run at 200 to 500 KB/s and only arm64 phones are supported. The README does not say whether it is an official Logos project.

Use it

  1. Publisher: in cli/, run npm install.
  2. Run ./backpack.mjs init --name "My backpack". This creates the repository key in ~/.backpack/default/key.pem, which needs backing up.
  3. Set where the update note is read and written with ./backpack.mjs config, then add apps with ./backpack.mjs add path/to/app.apk or ./backpack.mjs import-fdroid.
  4. Run ./backpack.mjs publish. It uploads the index to Storage, sends the note and prints a link and a QR code.
  5. On the phone, open the printed backpack:// link or scan the QR code once. After that the phone follows the repository on each app start or pull-to-refresh.

Delivery on the phone needs the Loam app. Without it, and with the web setting off, a repository only moves forward when a newer link is opened.

Build it

  • git submodule update --init fetches loam-transport, and cd mobile && npm install follows it.
  • native/logosstorage/build-jni.sh builds the JNI glue for libstorage.
  • The app builds with npx expo prebuild --platform android --clean, then ./gradlew assembleRelease in mobile/android. The README gives the full sequence, including the Android SDK path and a lint setting.

Releases

The latest tag is basecamp-arm64-0.6.4, dated 3 November 2026, on the feat/basecamp-private-follow branch. basecamp/backpack_ui/metadata.json gives backpack version 0.6.2 and basecamp/backpack_core/metadata.json gives backpack_core version 0.6.2. The README does not describe these Basecamp packages.

See also

Sources

Page status: Stub. Stub · Outline · Usable · Guide · Star. Anyone can improve this page and change its status.