···1414 <item>
1515<title>Mounting The Atmosphere</title>
1616<description><p><a href="https://tangled.sh/@oppi.li/pdsfs">pdsfs</a> is a tool that
1717-mounts atproto PDS repositories as a FUSE filesystem.</p>
1818-<p>A PDS repository<a href="#fn1" class="footnote-ref" id="fnref1"
1919-role="doc-noteref"><sup>1</sup></a> contains all data published by a
2020-user to the atmosphere<a href="#fn2" class="footnote-ref" id="fnref2"
2121-role="doc-noteref"><sup>2</sup></a>. It is exportable as a CAR
2222-(content-addressable archive) file. pdsfs is a tool that mounts this CAR
2323-file as a readonly-FUSE filesystem, allowing quick and easy
2424-exploration.</p>
1717+mounts <a href="https://atproto.com">atproto</a> PDS repositories as a
1818+<a href="https://en.wikipedia.org/wiki/Filesystem_in_Userspace">FUSE</a>
1919+filesystem.</p>
2020+<p>A <a href="https://en.wikipedia.org/wiki/Filesystem_in_Userspace">PDS
2121+repository</a> contains all data published by a user to the atmosphere.
2222+It is exportable as a CAR (content-addressable archive) file. pdsfs is a
2323+tool that mounts this CAR file as a readonly-FUSE filesystem, allowing
2424+quick and easy exploration.</p>
2525<p>To motivate the need for such a program, we could begin by mounting a
2626repository:</p>
2727<pre><code>λ pdsfs oppi.li
···3232is not important. Let’s have a look around:</p>
3333<pre><code>λ ls mnt/
3434did:plc:qfpnj4og54vl56wngdriaxug/</code></pre>
3535-<p>The <code>did:plc:stuff</code> is my DID<a href="#fn3"
3636-class="footnote-ref" id="fnref3" role="doc-noteref"><sup>3</sup></a>.
3535+<p>The <code>did:plc:stuff</code> is my <a
3636+href="https://en.wikipedia.org/wiki/Filesystem_in_Userspace">DID</a>.
3737Digging deeper:</p>
3838<pre><code>λ ls mnt/did\:plc\:qfpnj4og54vl56wngdriaxug/
3939app.bsky.actor.profile/ place.stream.chat.message/
···140140<code>read</code> are rerouted to your custom fs implementation (pdsfs
141141in this case). The custom fs implementation is free to as it pleases, in
142142fact the first iteration of pdsfs accessed the network for each
143143-open/read call to fetch live data from PDii.</p>
144144-<section id="footnotes" class="footnotes footnotes-end-of-document"
145145-role="doc-endnotes">
146146-<hr />
147147-<ol>
148148-<li id="fn1"><p>https://atproto.com/guides/data-repos<a href="#fnref1"
149149-class="footnote-back" role="doc-backlink">↩︎</a></p></li>
150150-<li id="fn2"><p>https://atproto.com<a href="#fnref2"
151151-class="footnote-back" role="doc-backlink">↩︎</a></p></li>
152152-<li id="fn3"><p>https://en.wikipedia.org/wiki/Decentralized_identifier<a
153153-href="#fnref3" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
154154-</ol>
155155-</section></description>
143143+open/read call to fetch live data from PDii.</p></description>
156144<link>https://oppi.li/posts/mounting_the_atmosphere/</link>
157157-<pubDate>Wed, 30 Jul 2025 20:25:00 +0000</pubDate>
145145+<pubDate>Thu, 31 Jul 2025 07:56:00 +0000</pubDate>
158146<guid>https://oppi.li/posts/mounting_the_atmosphere/</guid>
159147</item>
160148<item>
···2525">View Raw</a>
2626 <div class="separator"></div>
2727 <div class="date">
2828- 30/07 — 2025
2828+ 31/07 — 2025
2929 <div class="stats">
3030 <span class="stats-number">
3131 60.34
···4343 </h1>
4444 <div class="post-text">
4545 <p><a href="https://tangled.sh/@oppi.li/pdsfs">pdsfs</a> is a tool that
4646-mounts atproto PDS repositories as a FUSE filesystem.</p>
4747-<p>A PDS repository<a href="#fn1" class="footnote-ref" id="fnref1"
4848-role="doc-noteref"><sup>1</sup></a> contains all data published by a
4949-user to the atmosphere<a href="#fn2" class="footnote-ref" id="fnref2"
5050-role="doc-noteref"><sup>2</sup></a>. It is exportable as a CAR
5151-(content-addressable archive) file. pdsfs is a tool that mounts this CAR
5252-file as a readonly-FUSE filesystem, allowing quick and easy
5353-exploration.</p>
4646+mounts <a href="https://atproto.com">atproto</a> PDS repositories as a
4747+<a href="https://en.wikipedia.org/wiki/Filesystem_in_Userspace">FUSE</a>
4848+filesystem.</p>
4949+<p>A <a href="https://en.wikipedia.org/wiki/Filesystem_in_Userspace">PDS
5050+repository</a> contains all data published by a user to the atmosphere.
5151+It is exportable as a CAR (content-addressable archive) file. pdsfs is a
5252+tool that mounts this CAR file as a readonly-FUSE filesystem, allowing
5353+quick and easy exploration.</p>
5454<p>To motivate the need for such a program, we could begin by mounting a
5555repository:</p>
5656<pre><code>λ pdsfs oppi.li
···6161is not important. Let’s have a look around:</p>
6262<pre><code>λ ls mnt/
6363did:plc:qfpnj4og54vl56wngdriaxug/</code></pre>
6464-<p>The <code>did:plc:stuff</code> is my DID<a href="#fn3"
6565-class="footnote-ref" id="fnref3" role="doc-noteref"><sup>3</sup></a>.
6464+<p>The <code>did:plc:stuff</code> is my <a
6565+href="https://en.wikipedia.org/wiki/Filesystem_in_Userspace">DID</a>.
6666Digging deeper:</p>
6767<pre><code>λ ls mnt/did\:plc\:qfpnj4og54vl56wngdriaxug/
6868app.bsky.actor.profile/ place.stream.chat.message/
···170170in this case). The custom fs implementation is free to as it pleases, in
171171fact the first iteration of pdsfs accessed the network for each
172172open/read call to fetch live data from PDii.</p>
173173-<section id="footnotes" class="footnotes footnotes-end-of-document"
174174-role="doc-endnotes">
175175-<hr />
176176-<ol>
177177-<li id="fn1"><p>https://atproto.com/guides/data-repos<a href="#fnref1"
178178-class="footnote-back" role="doc-backlink">↩︎</a></p></li>
179179-<li id="fn2"><p>https://atproto.com<a href="#fnref2"
180180-class="footnote-back" role="doc-backlink">↩︎</a></p></li>
181181-<li id="fn3"><p>https://en.wikipedia.org/wiki/Decentralized_identifier<a
182182-href="#fnref3" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
183183-</ol>
184184-</section>
185173186174 </div>
187175
+12-12
posts/mounting_the_atmosphere.md
···11[pdsfs](https://tangled.sh/@oppi.li/pdsfs) is a tool that
22-mounts atproto PDS repositories as a FUSE filesystem.
22+mounts [atproto](https://atproto.com) PDS repositories as a
33+[FUSE](https://en.wikipedia.org/wiki/Filesystem_in_Userspace)
44+filesystem.
3544-A PDS repository[^0] contains all data published by a user to
55-the atmosphere[^1]. It is exportable as a CAR
66-(content-addressable archive) file. pdsfs is a tool that
77-mounts this CAR file as a readonly-FUSE filesystem, allowing
88-quick and easy exploration.
66+A [PDS
77+repository](https://en.wikipedia.org/wiki/Filesystem_in_Userspace)
88+contains all data published by a user to the atmosphere. It
99+is exportable as a CAR (content-addressable archive) file.
1010+pdsfs is a tool that mounts this CAR file as a readonly-FUSE
1111+filesystem, allowing quick and easy exploration.
9121013To motivate the need for such a program, we could begin by
1114mounting a repository:
···2225 λ ls mnt/
2326 did:plc:qfpnj4og54vl56wngdriaxug/
24272525-The `did:plc:stuff` is my DID[^2]. Digging deeper:
2828+The `did:plc:stuff` is my
2929+[DID](https://en.wikipedia.org/wiki/Filesystem_in_Userspace).
3030+Digging deeper:
26312732 λ ls mnt/did\:plc\:qfpnj4og54vl56wngdriaxug/
2833 app.bsky.actor.profile/ place.stream.chat.message/
···144149pleases, in fact the first iteration of pdsfs accessed the
145150network for each open/read call to fetch live data from
146151PDii.
147147-148148-149149-[^0]: https://atproto.com/guides/data-repos
150150-[^1]: https://atproto.com
151151-[^2]: https://en.wikipedia.org/wiki/Decentralized_identifier