<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://alienware-1.tailb5c716.ts.net/index.php?action=history&amp;feed=atom&amp;title=Backpack</id>
	<title>Backpack - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://alienware-1.tailb5c716.ts.net/index.php?action=history&amp;feed=atom&amp;title=Backpack"/>
	<link rel="alternate" type="text/html" href="https://alienware-1.tailb5c716.ts.net/index.php?title=Backpack&amp;action=history"/>
	<updated>2026-11-06T01:20:53Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.7</generator>
	<entry>
		<id>https://alienware-1.tailb5c716.ts.net/index.php?title=Backpack&amp;diff=844&amp;oldid=prev</id>
		<title>Eleutherious: Plainer prose: fewer quotes, project claims attributed, glosses folded in</title>
		<link rel="alternate" type="text/html" href="https://alienware-1.tailb5c716.ts.net/index.php?title=Backpack&amp;diff=844&amp;oldid=prev"/>
		<updated>2026-11-04T23:26:38Z</updated>

		<summary type="html">&lt;p&gt;Plainer prose: fewer quotes, project claims attributed, glosses folded in&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 23:26, 4 November 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l10&quot;&gt;Line 10:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 10:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| verified_against = README and commit of 2 November 2026&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| verified_against = README and commit of 2 November 2026&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;Backpack&#039;&#039;&#039; is an Android app store whose repositories live in [[Logos Storage]], with update notes carried over [[Logos Messaging]] (Logos Delivery)&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. It is published by the GitHub user vpavlin&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;Backpack&#039;&#039;&#039; is an Android app store &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;by the GitHub user vpavlin &lt;/ins&gt;whose repositories live in [[Logos Storage]], with update notes carried over [[Logos Messaging]] (Logos Delivery).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== What it does ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== What it does ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Works &lt;/del&gt;as &quot;a tiny F-Droid&quot; (F-Droid is an open-source Android app store)&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, where the &lt;/del&gt;APKs, their icons and the repository index are all Storage objects fetched by CID (content identifier).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;It works &lt;/ins&gt;as &quot;a tiny F-Droid&quot; (F-Droid is an open-source Android app store)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. The &lt;/ins&gt;APKs, their icons and the repository index are all Storage objects fetched by CID (content identifier).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Gives publishers &lt;/del&gt;a desktop command-line tool, &amp;lt;code&amp;gt;backpack&amp;lt;/code&amp;gt;, that uploads APKs and icons to a Storage node, publishes a signed index and prints the repository link.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Publishers get &lt;/ins&gt;a desktop command-line tool, &amp;lt;code&amp;gt;backpack&amp;lt;/code&amp;gt;, that uploads APKs and icons to a Storage node, publishes a signed index and prints the repository link.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Gives users &lt;/del&gt;an Android app that adds a repository from a &amp;lt;code&amp;gt;backpack://&amp;lt;/code&amp;gt; link, lists its apps, and installs or updates them&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Logos Storage runs on the phone&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Users get &lt;/ins&gt;an Android app&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, with Logos Storage running on the phone, &lt;/ins&gt;that adds a repository from a &amp;lt;code&amp;gt;backpack://&amp;lt;/code&amp;gt; link, lists its apps, and installs or updates them.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Announces each &lt;/del&gt;new index &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;with &lt;/del&gt;a small signed note on a Logos Delivery topic. HTTPS addresses in the link can also carry the note, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;but &lt;/del&gt;that setting is off by default.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Each &lt;/ins&gt;new index &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;is announced by &lt;/ins&gt;a small signed note on a Logos Delivery topic. HTTPS addresses in the link can also carry the note, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;though &lt;/ins&gt;that setting is off by default.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Checks &lt;/del&gt;the signature and sequence number of every note and index, the SHA-256 of every APK, and that each APK&#039;s signing certificate matches the pinned one.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Backpack checks &lt;/ins&gt;the signature and sequence number of every note and index, the SHA-256 of every APK, and that each APK&#039;s signing certificate matches the pinned one.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Imports an &lt;/del&gt;existing F-Droid repository, but only through a verified index.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;An &lt;/ins&gt;existing F-Droid repository &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;can be imported&lt;/ins&gt;, but only through a verified index.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Can install &lt;/del&gt;app updates automatically&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, as a setting&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;A setting lets &lt;/ins&gt;app updates &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;install &lt;/ins&gt;automatically.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Stage: Prototype. The README states no stage&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. The &lt;/del&gt;page lists it as Prototype &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;because it has &lt;/del&gt;working code. The install steps cover the publisher CLI, and the Android app is built from source. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Its &lt;/del&gt;list of limits says Delivery needs Loam, a separate app that runs a shared node on the phone&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. The list also says &lt;/del&gt;there is no key rotation yet&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/del&gt;downloads from the publisher&#039;s server run at 200 to 500 KB/s&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/del&gt;and only arm64 phones are supported. The README does not say whether it is an official Logos project.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Stage: Prototype. The README states no stage&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, so the &lt;/ins&gt;page lists it as Prototype &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;on the strength of its &lt;/ins&gt;working code. The install steps cover the publisher CLI, and the Android app is built from source. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;The README&#039;s &lt;/ins&gt;list of limits says Delivery needs Loam, a separate app that runs a shared node on the phone&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, and that &lt;/ins&gt;there is no key rotation yet&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. The same list says &lt;/ins&gt;downloads from the publisher&#039;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.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Use it ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Use it ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Publisher: in &amp;lt;code&amp;gt;cli/&amp;lt;/code&amp;gt;, run &amp;lt;code&amp;gt;npm install&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Publisher: in &amp;lt;code&amp;gt;cli/&amp;lt;/code&amp;gt;, run &amp;lt;code&amp;gt;npm install&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Run &amp;lt;code&amp;gt;./backpack.mjs init --name &quot;My backpack&quot;&amp;lt;/code&amp;gt;. This creates the repository key in &amp;lt;code&amp;gt;~/.backpack/default/key.pem&amp;lt;/code&amp;gt;, which &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the README says to back &lt;/del&gt;up.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Run &amp;lt;code&amp;gt;./backpack.mjs init --name &quot;My backpack&quot;&amp;lt;/code&amp;gt;. This creates the repository key in &amp;lt;code&amp;gt;~/.backpack/default/key.pem&amp;lt;/code&amp;gt;, which &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;needs backing &lt;/ins&gt;up.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Set where the update note is read and written with &amp;lt;code&amp;gt;./backpack.mjs config&amp;lt;/code&amp;gt;, then add apps with &amp;lt;code&amp;gt;./backpack.mjs add path/to/app.apk&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;./backpack.mjs import-fdroid&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Set where the update note is read and written with &amp;lt;code&amp;gt;./backpack.mjs config&amp;lt;/code&amp;gt;, then add apps with &amp;lt;code&amp;gt;./backpack.mjs add path/to/app.apk&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;./backpack.mjs import-fdroid&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Run &amp;lt;code&amp;gt;./backpack.mjs publish&amp;lt;/code&amp;gt;. It uploads the index to Storage, sends the note and prints a link and a QR code.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Run &amp;lt;code&amp;gt;./backpack.mjs publish&amp;lt;/code&amp;gt;. It uploads the index to Storage, sends the note and prints a link and a QR code.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l32&quot;&gt;Line 32:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 32:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Build it ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Build it ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;git submodule update --init&amp;lt;/code&amp;gt; fetches loam-transport&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. &lt;/del&gt;&amp;lt;code&amp;gt;cd mobile &amp;amp;&amp;amp; npm install&amp;lt;/code&amp;gt; follows it.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;git submodule update --init&amp;lt;/code&amp;gt; fetches loam-transport&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, and &lt;/ins&gt;&amp;lt;code&amp;gt;cd mobile &amp;amp;&amp;amp; npm install&amp;lt;/code&amp;gt; follows it.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;native/logosstorage/build-jni.sh&amp;lt;/code&amp;gt; builds the JNI glue for libstorage.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;native/logosstorage/build-jni.sh&amp;lt;/code&amp;gt; builds the JNI glue for libstorage.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;npx expo prebuild --platform android --clean&amp;lt;/code&amp;gt;, then &amp;lt;code&amp;gt;./gradlew assembleRelease&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;mobile/android&amp;lt;/code&amp;gt;. The README gives the full sequence, including the Android SDK path and a lint setting.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;The app builds with &lt;/ins&gt;&amp;lt;code&amp;gt;npx expo prebuild --platform android --clean&amp;lt;/code&amp;gt;, then &amp;lt;code&amp;gt;./gradlew assembleRelease&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;mobile/android&amp;lt;/code&amp;gt;. The README gives the full sequence, including the Android SDK path and a lint setting.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Releases ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Releases ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Eleutherious</name></author>
	</entry>
	<entry>
		<id>https://alienware-1.tailb5c716.ts.net/index.php?title=Backpack&amp;diff=806&amp;oldid=prev</id>
		<title>Eleutherious: Second check: fixes to facts, dates (UTC), glosses and attribution</title>
		<link rel="alternate" type="text/html" href="https://alienware-1.tailb5c716.ts.net/index.php?title=Backpack&amp;diff=806&amp;oldid=prev"/>
		<updated>2026-11-04T21:00:44Z</updated>

		<summary type="html">&lt;p&gt;Second check: fixes to facts, dates (UTC), glosses and attribution&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 21:00, 4 November 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Infobox tool&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Infobox tool&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| name        = Backpack&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| name        = Backpack&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| what        = &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Install &lt;/del&gt;Android apps from repositories that live in Logos Storage&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| what        = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Installs &lt;/ins&gt;Android apps from repositories that live in Logos Storage&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| stage       = Prototype&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| stage       = Prototype&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| licence     = MIT or Apache-2.0&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| licence     = MIT or Apache-2.0&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l13&quot;&gt;Line 13:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== What it does ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== What it does ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Works as &quot;a tiny F-Droid&quot;, where the APKs, their icons and the repository index are all Storage objects fetched by CID.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Works as &quot;a tiny F-Droid&quot; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(F-Droid is an open-source Android app store)&lt;/ins&gt;, where the APKs, their icons and the repository index are all Storage objects fetched by CID &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(content identifier)&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Gives publishers a desktop command-line tool, &amp;lt;code&amp;gt;backpack&amp;lt;/code&amp;gt;, that uploads APKs and icons to a Storage node, publishes a signed index and prints the repository link.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Gives publishers a desktop command-line tool, &amp;lt;code&amp;gt;backpack&amp;lt;/code&amp;gt;, that uploads APKs and icons to a Storage node, publishes a signed index and prints the repository link.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Gives users an Android app that adds a repository from a &amp;lt;code&amp;gt;backpack://&amp;lt;/code&amp;gt; link, lists its apps, and installs or updates them. Logos Storage runs on the phone.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Gives users an Android app that adds a repository from a &amp;lt;code&amp;gt;backpack://&amp;lt;/code&amp;gt; link, lists its apps, and installs or updates them. Logos Storage runs on the phone.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l21&quot;&gt;Line 21:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 21:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Can install app updates automatically, as a setting.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Can install app updates automatically, as a setting.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;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 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the &lt;/del&gt;Loam app on the phone&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/del&gt;there is no key rotation yet, downloads run at &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;about &lt;/del&gt;200 to 500 KB/s, and only arm64 phones are supported. The README does not say whether it is an official Logos project.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;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 Loam&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, a separate &lt;/ins&gt;app &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;that runs a shared node &lt;/ins&gt;on the phone&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. The list also says &lt;/ins&gt;there is no key rotation yet, downloads &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;from the publisher&#039;s server &lt;/ins&gt;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.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Use it ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Use it ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l32&quot;&gt;Line 32:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 32:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Build it ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Build it ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Run &lt;/del&gt;&amp;lt;code&amp;gt;git submodule update --init&amp;lt;/code&amp;gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;to fetch &lt;/del&gt;loam-transport&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, then &lt;/del&gt;&amp;lt;code&amp;gt;cd mobile &amp;amp;&amp;amp; npm install&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;git submodule update --init&amp;lt;/code&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;fetches &lt;/ins&gt;loam-transport&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. &lt;/ins&gt;&amp;lt;code&amp;gt;cd mobile &amp;amp;&amp;amp; npm install&amp;lt;/code&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;follows it&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;native/logosstorage/build-jni.sh&amp;lt;/code&amp;gt; builds the JNI glue for libstorage.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;native/logosstorage/build-jni.sh&amp;lt;/code&amp;gt; builds the JNI glue for libstorage.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;npx expo prebuild --platform android --clean&amp;lt;/code&amp;gt;, then &amp;lt;code&amp;gt;./gradlew assembleRelease&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;mobile/android&amp;lt;/code&amp;gt;. The README gives the full sequence, including the Android SDK path and a lint setting.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;npx expo prebuild --platform android --clean&amp;lt;/code&amp;gt;, then &amp;lt;code&amp;gt;./gradlew assembleRelease&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;mobile/android&amp;lt;/code&amp;gt;. The README gives the full sequence, including the Android SDK path and a lint setting.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Eleutherious</name></author>
	</entry>
	<entry>
		<id>https://alienware-1.tailb5c716.ts.net/index.php?title=Backpack&amp;diff=789&amp;oldid=prev</id>
		<title>Eleutherious: New tool page, source-checked against the project README</title>
		<link rel="alternate" type="text/html" href="https://alienware-1.tailb5c716.ts.net/index.php?title=Backpack&amp;diff=789&amp;oldid=prev"/>
		<updated>2026-11-04T19:11:20Z</updated>

		<summary type="html">&lt;p&gt;New tool page, source-checked against the project README&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox tool&lt;br /&gt;
| name        = Backpack&lt;br /&gt;
| what        = Install Android apps from repositories that live in Logos Storage&lt;br /&gt;
| stage       = Prototype&lt;br /&gt;
| licence     = MIT or Apache-2.0&lt;br /&gt;
| code        = https://github.com/vpavlin/backpack&lt;br /&gt;
| use         = https://github.com/vpavlin/backpack#use&lt;br /&gt;
| build       = https://github.com/vpavlin/backpack#build-the-app&lt;br /&gt;
| verified_on = 4 November 2026&lt;br /&gt;
| verified_against = README and commit of 2 November 2026&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Backpack&amp;#039;&amp;#039;&amp;#039; 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.&lt;br /&gt;
&lt;br /&gt;
== What it does ==&lt;br /&gt;
* Works as &amp;quot;a tiny F-Droid&amp;quot;, where the APKs, their icons and the repository index are all Storage objects fetched by CID.&lt;br /&gt;
* Gives publishers a desktop command-line tool, &amp;lt;code&amp;gt;backpack&amp;lt;/code&amp;gt;, that uploads APKs and icons to a Storage node, publishes a signed index and prints the repository link.&lt;br /&gt;
* Gives users an Android app that adds a repository from a &amp;lt;code&amp;gt;backpack://&amp;lt;/code&amp;gt; link, lists its apps, and installs or updates them. Logos Storage runs on the phone.&lt;br /&gt;
* 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.&lt;br /&gt;
* Checks the signature and sequence number of every note and index, the SHA-256 of every APK, and that each APK&amp;#039;s signing certificate matches the pinned one.&lt;br /&gt;
* Imports an existing F-Droid repository, but only through a verified index.&lt;br /&gt;
* Can install app updates automatically, as a setting.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Use it ==&lt;br /&gt;
# Publisher: in &amp;lt;code&amp;gt;cli/&amp;lt;/code&amp;gt;, run &amp;lt;code&amp;gt;npm install&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Run &amp;lt;code&amp;gt;./backpack.mjs init --name &amp;quot;My backpack&amp;quot;&amp;lt;/code&amp;gt;. This creates the repository key in &amp;lt;code&amp;gt;~/.backpack/default/key.pem&amp;lt;/code&amp;gt;, which the README says to back up.&lt;br /&gt;
# Set where the update note is read and written with &amp;lt;code&amp;gt;./backpack.mjs config&amp;lt;/code&amp;gt;, then add apps with &amp;lt;code&amp;gt;./backpack.mjs add path/to/app.apk&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;./backpack.mjs import-fdroid&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Run &amp;lt;code&amp;gt;./backpack.mjs publish&amp;lt;/code&amp;gt;. It uploads the index to Storage, sends the note and prints a link and a QR code.&lt;br /&gt;
# On the phone, open the printed &amp;lt;code&amp;gt;backpack://&amp;lt;/code&amp;gt; link or scan the QR code once. After that the phone follows the repository on each app start or pull-to-refresh.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Build it ==&lt;br /&gt;
* Run &amp;lt;code&amp;gt;git submodule update --init&amp;lt;/code&amp;gt; to fetch loam-transport, then &amp;lt;code&amp;gt;cd mobile &amp;amp;&amp;amp; npm install&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;native/logosstorage/build-jni.sh&amp;lt;/code&amp;gt; builds the JNI glue for libstorage.&lt;br /&gt;
* &amp;lt;code&amp;gt;npx expo prebuild --platform android --clean&amp;lt;/code&amp;gt;, then &amp;lt;code&amp;gt;./gradlew assembleRelease&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;mobile/android&amp;lt;/code&amp;gt;. The README gives the full sequence, including the Android SDK path and a lint setting.&lt;br /&gt;
&lt;br /&gt;
== Releases ==&lt;br /&gt;
The latest tag is basecamp-arm64-0.6.4, dated 3 November 2026, on the feat/basecamp-private-follow branch. &amp;lt;code&amp;gt;basecamp/backpack_ui/metadata.json&amp;lt;/code&amp;gt; gives &amp;lt;code&amp;gt;backpack&amp;lt;/code&amp;gt; version 0.6.2 and &amp;lt;code&amp;gt;basecamp/backpack_core/metadata.json&amp;lt;/code&amp;gt; gives &amp;lt;code&amp;gt;backpack_core&amp;lt;/code&amp;gt; version 0.6.2. The README does not describe these Basecamp packages.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Basecamp]]&lt;br /&gt;
* [[Tools]]&lt;br /&gt;
* [[Logos Storage]]&lt;br /&gt;
* [[Logos Messaging]]&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
* [https://github.com/vpavlin/backpack backpack README], GitHub, last commit 2 November 2026&lt;br /&gt;
* [https://github.com/vpavlin/backpack/blob/main/basecamp/backpack_ui/metadata.json basecamp/backpack_ui/metadata.json] and [https://github.com/vpavlin/backpack/blob/main/basecamp/backpack_core/metadata.json basecamp/backpack_core/metadata.json], GitHub&lt;br /&gt;
* [https://github.com/vpavlin/backpack/tags backpack tags], GitHub&lt;br /&gt;
&lt;br /&gt;
{{Page status|Stub}}&lt;/div&gt;</summary>
		<author><name>Eleutherious</name></author>
	</entry>
</feed>