<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Menhera.org - Human-life Information Platforms Institute]]></title><description><![CDATA[Menhera.org (Human-life Information Platforms Institute) designs the way the world works online through developing information platforms and supporting research. We are operating AS63806 Menhera®.]]></description><link>https://www.menhera.org/</link><image><url>https://www.menhera.org/favicon.png</url><title>Menhera.org - Human-life Information Platforms Institute</title><link>https://www.menhera.org/</link></image><generator>Ghost 5.75</generator><lastBuildDate>Wed, 06 May 2026 10:56:32 GMT</lastBuildDate><atom:link href="https://www.menhera.org/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Announcing ssh-obi — keeping SSH shells alive across disconnects, sleeps, and network roams]]></title><description><![CDATA[A lightweight, per-user persistence layer for interactive SSH sessions: no system service, no custom port, no in-band escape commands — and unlike mosh, your local terminal's scrollback keeps working.]]></description><link>https://www.menhera.org/ssh-obi-announced/</link><guid isPermaLink="false">69f744ca3e2cfa01b685e146</guid><category><![CDATA[News]]></category><category><![CDATA[project]]></category><dc:creator><![CDATA[Yuka Mori]]></dc:creator><pubDate>Sun, 03 May 2026 13:01:07 GMT</pubDate><media:content url="https://www.menhera.org/content/images/2026/05/obi.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.menhera.org/content/images/2026/05/obi.png" alt="Announcing ssh-obi &#x2014; keeping SSH shells alive across disconnects, sleeps, and network roams"><p>A lightweight, per-user persistence layer for interactive SSH sessions: no system service, no custom port, no in-band escape commands &#x2014; and unlike mosh, your local terminal&apos;s scrollback keeps working.</p><p><em>Published by the Human-life Information Platforms Institute (Menhera.org)</em></p><p><em>May 2026</em></p><hr><h2 id="tldr">TL;DR</h2><p>We have released <code>ssh-obi</code> <code>v0.1.0</code>, a small Rust tool that keeps your remote shell alive when the SSH connection drops, when your laptop sleeps, or when you roam between Wi-Fi and cellular. It tunnels everything over your existing SSH config &#x2014; no separate port, no UDP, no setuid binary, no system-wide daemon.</p><p>Install on <strong>Windows</strong> (client-only):</p><pre><code>powershell -NoProfile -ExecutionPolicy Bypass -Command &quot;irm https://obi.menhera.org/bootstrap.ps1 | iex&quot;
</code></pre><p>Or with a Rust toolchain:</p><pre><code>cargo install ssh-obi
</code></pre><p>Install on <strong>Unix-like systems</strong> (client + server):</p><pre><code>wget -O - https://obi.menhera.org/bootstrap.sh | sh -s -- --install
</code></pre><p>Or with a Rust toolchain:</p><pre><code>cargo install --features=server-bin ssh-obi
</code></pre><p>Then connect exactly the way you already do:</p><pre><code>ssh-obi user@example.com
</code></pre><p>That&apos;s the entire user-visible surface for the common case. The remote server component bootstraps itself the first time you connect (with confirmation), under your unprivileged user account.</p><p>Documentation, release tarballs, and bootstrap scripts: <a href="https://obi.menhera.org/">https://obi.menhera.org/</a> Source code: <a href="https://github.com/menhera-org/ssh-obi">https://github.com/menhera-org/ssh-obi</a> Crates.io: <a href="https://crates.io/crates/ssh-obi">https://crates.io/crates/ssh-obi</a></p><hr><h2 id="what-is-ssh-obi">What is ssh-obi?</h2><p><code>ssh-obi</code> is a per-user terminal persistence layer for SSH. The name comes from <em>obi</em> (&#x5E2F;), the Japanese sash that holds a kimono together &#x2014; fitting for a tool whose job is to keep a remote shell tied to your terminal across disconnects.</p><p>It is designed to feel like plain SSH:</p><ul><li>It uses the same destination names, keys, jump hosts, and SSH config you already use.</li><li>Your local terminal&apos;s scrollback, search, selection, and copy/paste keep working.</li><li>The remote shell survives a network break; reconnect with the same command and you are reattached.</li><li>You can keep several independent sessions open on the same remote account.</li><li>Installation is per-user. No root service, no custom network port.</li></ul><p>It is intentionally <strong>not</strong> a terminal window manager. It does not implement panes, tabs, or in-band escape commands. If you want window management, run <code>tmux</code> or another multiplexer inside the remote shell &#x2014; <code>ssh-obi</code> will keep that <code>tmux</code> alive across your disconnects, and <code>tmux</code> will give you the panes.</p><h2 id="why-this-exists">Why this exists</h2><p>If you do interactive work over SSH, you have probably hit at least one of these:</p><ul><li>A <code>cargo build</code>, <code>make</code>, training run, long <code>rsync</code>, or database migration that you have to either babysit or wrap in <code>nohup</code>/<code>screen</code>/<code>tmux</code> defensively.</li><li>Your laptop sleeps and you come back to a half-dead SSH connection that needs to be killed and rebuilt.</li><li>Tethering switches from Wi-Fi to LTE and the SSH session silently freezes for two minutes before TCP gives up.</li><li>You have a long-running editor session you cannot easily move between machines.</li></ul><p>There are well-known answers to this:</p><ul><li><strong><code>tmux</code> / <code>screen</code> on the remote</strong> are excellent. They are also a separate workflow that requires conscious &quot;I should attach to tmux&quot; discipline before every long task, and their key bindings clash with each other and with applications.</li><li><strong>mosh</strong> solves the network-roaming problem beautifully but takes ownership of the terminal screen &#x2014; your local terminal&apos;s scrollback stops being the source of truth for what you saw, and search/copy/paste behave differently. It also requires UDP and a non-default port range, which is awkward through firewalls and bastion hosts.</li><li><strong>Eternal Terminal (et)</strong> keeps shells alive but expects a system-wide daemon installed by an administrator on the server.</li></ul><p><code>ssh-obi</code> is a deliberately narrower answer. It does one thing: it keeps the <em>bytes flowing to and from the shell</em> across SSH disconnects, with the local terminal still owning the screen. Everything outside that scope (panes, tabs, screen replication, alternate transports) is left to other tools.</p><h2 id="how-it-compares">How it compares</h2>
<!--kg-card-begin: html-->
<table>
<thead>
<tr>
<th></th>
<th>ssh-obi</th>
<th>mosh</th>
<th>Eternal Terminal</th>
<th>tmux/screen alone</th>
</tr>
</thead>
<tbody>
<tr>
<td>Survives network drops</td>
<td>&#x2705;</td>
<td>&#x2705;</td>
<td>&#x2705;</td>
<td>only if combined with SSH retry</td>
</tr>
<tr>
<td>Local terminal owns scrollback</td>
<td>&#x2705;</td>
<td>&#x274C; (mosh redraws the screen)</td>
<td>&#x2705;</td>
<td>&#x274C; (with defaults)</td>
</tr>
<tr>
<td>Uses plain SSH (no extra port/UDP)</td>
<td>&#x2705;</td>
<td>&#x274C; (UDP, custom port range)</td>
<td>&#x274C; (custom TCP port)</td>
<td>&#x2705;</td>
</tr>
<tr>
<td>Per-user install (no admin needed)</td>
<td>&#x2705;</td>
<td>usually &#x2705;</td>
<td>&#x274C; (system service)</td>
<td>&#x2705;</td>
</tr>
<tr>
<td>Independent from window/pane management</td>
<td>&#x2705; (use tmux)</td>
<td>&#x274C;</td>
<td>&#x2705;</td>
<td>&#x274C;</td>
</tr>
<tr>
<td>Multiple persistent sessions per user</td>
<td>&#x2705;</td>
<td>&#x274C;</td>
<td>&#x2705;</td>
<td>&#x2705;</td>
</tr>
</tbody>
</table>
<!--kg-card-end: html-->
<p>The trade-off worth being honest about: because <code>ssh-obi</code> does not own the screen, the bounded-buffer replay on reconnect can briefly <strong>duplicate output</strong> that was already on your terminal before the disconnect. This is acceptable &#x2014; your local scrollback already has the original copy, and the duplicated bytes scroll past once. We considered the alternative (mosh-style screen reconstruction) and decided that giving up native scrollback was a worse trade than tolerating the occasional repeat.</p><h2 id="quick-start">Quick start</h2><p>Install the client locally (see the TL;DR for one-line installers).</p><p>Connect:</p><pre><code>ssh-obi user@example.com
</code></pre><p>The first time you connect to a given remote, the client offers to install the small server component into <code>~/.ssh-obi/bin</code> on that account. No root access is required, and nothing system-wide is touched.</p><p>After that, repeat invocations behave like this:</p><ul><li><strong>No existing free session</strong> &#x2192; a new one is created and you are attached.</li><li><strong>Exactly one free session</strong> &#x2192; you are auto-attached to it.</li><li><strong>Multiple free sessions</strong> &#x2192; a local picker shows them with init time, last detach time, and a best-effort guess at what is currently running (<code>bash</code>, <code>vim notes.md</code>, <code>cargo watch</code>, &#x2026;).</li></ul><p>Force a new session, list sessions, attach to a specific one, or boot a stuck attached client:</p><pre><code>ssh-obi --new user@example.com
ssh-obi --list user@example.com
ssh-obi --session abc123 user@example.com
ssh-obi --detach --session abc123 user@example.com
</code></pre><p>To detach cleanly from inside the remote shell without killing it:</p><pre><code>ssh-obi-server --detach
</code></pre><p>That tells the remote daemon &quot;drop the client, keep the shell.&quot; Closing your laptop, losing Wi-Fi, or killing the local SSH process is treated differently &#x2014; the client interprets that as ambiguous and tries to reconnect to the same session.</p><h2 id="scope-and-non-goals">Scope and non-goals</h2><p>These are commitments, not &quot;not yet&quot;:</p><ul><li><strong>No window or pane management.</strong> Pure 1:1 forwarding between local TTY and remote PTY. Use <code>tmux</code> for multiplexing.</li><li><strong>No in-band escape sequences.</strong> The bytes you type are the bytes the remote shell receives. Detach is performed by running a separate command (<code>ssh-obi-server --detach</code>), not by a magic key combination.</li><li><strong>Not a screen-state replicator.</strong> Only a bounded recent-output buffer is replayed on reconnect. Older history lives in the local terminal&apos;s scrollback, which is where it belongs.</li><li><strong>Windows is client-only.</strong> Remote servers are Unix-like. There is no plan to ship a Windows server.</li></ul><h2 id="platform-support">Platform support</h2><p><strong>Local client</strong>: Linux, macOS, Windows x86_64, and FreeBSD/NetBSD/illumos where release artifacts are published. The client requires a working system <code>ssh</code> binary; <code>ssh-obi</code> does not reimplement SSH.</p><p><strong>Remote server</strong>: Linux, macOS, FreeBSD, NetBSD, illumos. systemd-based distributions are supported, but systemd is not required &#x2014; the daemon is a plain per-user process that does not depend on any system service manager.</p><p>Release tarballs are published for the following targets at <a href="https://obi.menhera.org/">https://obi.menhera.org/</a>:</p><ul><li><code>release-x86_64-unknown-linux-musl.tar.gz</code></li><li><code>release-aarch64-unknown-linux-musl.tar.gz</code></li><li><code>release-riscv64gc-unknown-linux-musl.tar.gz</code></li><li><code>release-powerpc64le-unknown-linux-musl.tar.gz</code></li><li><code>release-s390x-unknown-linux-musl.tar.gz</code></li><li><code>release-x86_64-apple-darwin.tar.gz</code></li><li><code>release-aarch64-apple-darwin.tar.gz</code></li><li><code>release-x86_64-unknown-freebsd.tar.gz</code></li><li><code>release-x86_64-unknown-netbsd.tar.gz</code></li><li><code>release-x86_64-unknown-illumos.tar.gz</code></li><li><code>release-x86_64-pc-windows-msvc.tar.gz</code> (client only)</li></ul><h2 id="a-note-on-security-model">A note on security model</h2><p><code>ssh-obi</code> does not change SSH&apos;s security model. The transport is whatever your <code>ssh</code> binary already negotiates: same keys, same <code>known_hosts</code>, same <code>ProxyJump</code>, same multi-factor prompts. The persistent server runs as your unprivileged remote user, listens only on a UNIX-domain socket inside <code>/tmp/ssh-obi-&lt;uid&gt;/</code> (mode 0700, ownership-checked on reuse, refuses to start on NFS/SMB), and is only ever spoken to over SSH.</p><p>There is no setuid binary, no shared state between users, no listening TCP/UDP port introduced anywhere on the remote, and no system service that an administrator would need to audit. If a remote account is compromised, the attacker has the same access they would have had via plain <code>ssh</code> &#x2014; <code>ssh-obi</code> does not enlarge the blast radius.</p><p>For <code>v0.1.0</code>, the auto-install bootstrap downloads release tarballs over HTTPS without an additional signature check. We trust HTTPS for the MVP and intend to add signature verification before declaring <code>1.0</code>. Users who want stronger assurance today can install via <code>cargo install ssh-obi --features=server-bin</code> on the remote, which goes through the crates.io supply chain instead.</p><h2 id="status">Status</h2><p><code>v0.1.0</code> is the first public release: usable, documented, but young. The CLI surface (<code>ssh-obi</code>, <code>ssh-obi-server</code>) is the user-facing contract and we intend to keep it stable. The wire protocol between client and server is forward-compatible by capability negotiation rather than version bumping &#x2014; once a capability ships, its message format is frozen, and new functionality arrives as new capability strings rather than as edits to existing ones. Library APIs (<code>ssh_obi</code> as a crate dependency) are not yet stable.</p><p>Bug reports, feedback, and pull requests are welcome at <a href="https://github.com/menhera-org/ssh-obi">https://github.com/menhera-org/ssh-obi</a>.</p><h2 id="why-a-japanese-nonprofit-is-shipping-this">Why a Japanese nonprofit is shipping this</h2><p>Menhera.org (the Human-life Information Platforms Institute, &#x4E00;&#x822C;&#x793E;&#x56E3;&#x6CD5;&#x4EBA;&#x751F;&#x6D3B;&#x60C5;&#x5831;&#x57FA;&#x76E4;&#x7814;&#x7A76;&#x6A5F;&#x69CB;) is a Japan-incorporated nonprofit whose mission is to empower individuals with more freedoms by designing IT systems, infrastructure, protocols, and more. We operate AS63806 as a research autonomous system of the Internet, with a focus on privacy and protocol work.</p><p>Most of our day-to-day operations involve interactive SSH on long-running tasks across multiple machines. The existing options for shell persistence each made a trade-off we were not happy to keep paying &#x2014; either they took over the terminal screen, or they required an administrator to install something system-wide, or they introduced a separate transport that did not pass through the same firewalls and bastions as our regular SSH. So we built the tool we wanted, and we are publishing it because we suspect we are not the only ones who wanted it.</p><p>The software is dual-licensed at the user&apos;s option under either Apache-2.0 or MPL-2.0. Use it freely, fork it, package it for your distribution, redistribute it.</p><h2 id="license">License</h2><p>Dual-licensed at the user&apos;s option under:</p><ul><li>Apache License, Version 2.0</li><li>Mozilla Public License, Version 2.0</li></ul><h2 id="contact">Contact</h2><ul><li>Website: <a href="https://www.menhera.org/">https://www.menhera.org/</a></li><li>Project documentation: <a href="https://obi.menhera.org/">https://obi.menhera.org/</a></li><li>Source: <a href="https://github.com/menhera-org/ssh-obi">https://github.com/menhera-org/ssh-obi</a></li><li>Email: <code>mori %AT% menhera.ad.jp</code> (Yuka MORI)</li></ul><hr><p><em>The Human-life Information Platforms Institute is a Japan-incorporated nonprofit (&#x4E00;&#x822C;&#x793E;&#x56E3;&#x6CD5;&#x4EBA;&#x751F;&#x6D3B;&#x60C5;&#x5831;&#x57FA;&#x76E4;&#x7814;&#x7A76;&#x6A5F;&#x69CB;). This software is provided as a public good in alignment with the Institute&apos;s mission. No warranty is expressed or implied. Use at your own discretion.</em></p><hr><p><em>This post was initially drafted with Claude Opus 4.7 (an LLM) but it incorporates substantial manual review and changes. The author takes full responsibility on this content.</em></p>]]></content:encoded></item><item><title><![CDATA[Announcing the crates.io Cooldown Proxy — mitigating supply-chain attacks through delayed availability]]></title><description><![CDATA[A free public Cargo sparse-index proxy that withholds newly-published crate versions for 1–30 days, reducing exposure to supply-chain attacks.]]></description><link>https://www.menhera.org/crates-io-cooldown-proxy-mitigating-supply-chain-attacks/</link><guid isPermaLink="false">69ea1a653e2cfa01b685e104</guid><category><![CDATA[News]]></category><category><![CDATA[project]]></category><dc:creator><![CDATA[Yuka Mori]]></dc:creator><pubDate>Thu, 23 Apr 2026 13:33:40 GMT</pubDate><media:content url="https://www.menhera.org/content/images/2026/04/Firefly.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.menhera.org/content/images/2026/04/Firefly.jpg" alt="Announcing the crates.io Cooldown Proxy &#x2014; mitigating supply-chain attacks through delayed availability"><p><em>Published by the Human-life Information Platforms Institute (Menhera.org)</em></p><p><em>April 2026</em></p><hr><h2 id="tldr">TL;DR</h2><p>We have launched a public Cargo sparse-index proxy that withholds newly-published crate versions for a configurable period (1&#x2013;30 days), giving the community time to detect and respond to malicious releases before they reach your build.</p><p>Point Cargo at it:</p><figure class="kg-card kg-code-card"><pre><code class="language-toml">[registries.menhera-cooldown]
index = &quot;sparse+https://index.crates.menhera.org/3d/&quot;

[registry]
default = &quot;menhera-cooldown&quot;

[source.crates-io]
replace-with = &quot;menhera-cooldown&quot;

[source.menhera-cooldown]
registry = &quot;sparse+https://index.crates.menhera.org/3d/&quot;

[alias]
publish-crates-io = [
    &quot;publish&quot;,
    &quot;--config&quot;, &quot;registry.default = \&quot;crates-io\&quot;&quot;,
]
</code></pre><figcaption><p><span style="white-space: pre-wrap;">~/.cargo/config.toml</span></p></figcaption></figure><p>Run this, pasting your crates.io&apos;s token as usual (we don&apos;t intercept them):</p><pre><code class="language-bash">cargo login</code></pre><p>Replace <code>3d</code> with any integer <code>1d</code>&#x2013;<code>30d</code> for your preferred cooldown window. That&apos;s it. No account required, no rate limit for reasonable use, faithful to upstream in every other respect.</p><p>Use <code>cargo publish-crates-io</code> instead of cargo publish.</p><hr><h2 id="what-is-this">What is this?</h2><p><code>https://index.crates.menhera.org/</code> is a filtering mirror of the crates.io sparse index. It speaks the same protocol Cargo uses to talk to <code>https://index.crates.io/</code>, so Cargo doesn&apos;t know or care that it&apos;s talking to a proxy.</p><p>The one thing the proxy does differently from upstream: <strong>it hides crate versions that were published recently</strong>. &quot;Recently&quot; is whatever window you choose via the URL prefix &#x2014; <code>/1d/</code> through <code>/30d/</code>, counting calendar days from publication.</p><p>Crate tarballs are served directly by crates.io&apos;s own CDN (<code>static.crates.io</code>). The proxy only filters index metadata; it does not touch the actual crate content. Checksums, signatures, and everything else are identical to what you&apos;d get without the proxy &#x2014; just with a moving cutoff on version visibility.</p><h2 id="why-is-this-needed">Why is this needed?</h2><p>Rust&apos;s package ecosystem, like every language ecosystem, is vulnerable to <strong>supply-chain attacks</strong>: a malicious actor publishes a compromised version of a crate (often via a compromised maintainer account, a typo-squatting name, or a legitimate-looking update to a popular package), and anyone who runs <code>cargo update</code> within the vulnerability window pulls in the attack.</p><p>The standard defenses fall short in ways that matter:</p><ul><li><strong><code>cargo audit</code> and RustSec advisories</strong> are reactive: they flag known-bad versions. If a compromised version hasn&apos;t been identified yet, <code>cargo audit</code> won&apos;t catch it.</li><li><strong>Pinned versions in <code>Cargo.toml</code></strong> protect your direct dependencies but offer nothing against transitive ones, which are where most attacks land because developers don&apos;t visually review them.</li><li><code><strong>Cargo.lock</strong></code> only helps if you don&apos;t update it &#x2014; and a team that never runs <code>cargo update</code> accumulates unpatched bugs and advisories.</li><li><strong>Manual review of every new version of every transitive dependency</strong> is not a realistic defense for any team building real software.</li></ul><p>What the Rust ecosystem has empirically observed is that malicious crate releases are typically <strong>identified and yanked within hours to a few days</strong> &#x2014; by security researchers, by maintainers of the affected crate, by users who notice unusual behavior, by automated scanners. The window of maximum danger is right after publication, before the community has had time to look.</p><p>This proxy closes that window by making recently-published versions <em>invisible to Cargo</em> for a chosen cooldown period. Your build simply can&apos;t resolve to a version that&apos;s too new. By the time a version ages into visibility through the proxy, it has been exposed to the community&apos;s attention for the full cooldown window.</p><p>This isn&apos;t a novel idea. Similar &quot;quarantine&quot; or &quot;cooldown&quot; patterns exist in other ecosystems &#x2014; npm has been discussing it for years, some enterprise Python mirrors offer it, and Debian&apos;s stable/testing/unstable structure is an analogous idea at a much longer timescale. What has been missing in Rust is a <strong>zero-configuration, publicly-available implementation</strong> that any project can adopt with a three-line change to <code>.cargo/config.toml</code>. That is what this service provides.</p><h2 id="what-this-protects-against-and-what-it-does-not">What this protects against, and what it does not</h2><p><strong>Protects against:</strong></p><ul><li>Compromised-maintainer attacks that are identified and yanked within the cooldown window.</li><li>Typo-squatting crates that are taken down within the cooldown window.</li><li>Malicious dependencies introduced by maintainer-turnover or account-takeover scenarios, as long as the compromise becomes publicly known within the window.</li><li>Accidentally broken releases that a maintainer yanks within the window.</li><li>Most of the crate supply-chain incidents that have historically been seen in the Rust ecosystem.</li></ul><p><strong>Does not protect against:</strong></p><ul><li>Patient attackers willing to sit on a compromised release longer than your cooldown window.</li><li>Attacks on crates that are never publicly identified as compromised.</li><li>Attacks via build scripts or procedural macros in crates that were already in your <code>Cargo.lock</code> before being compromised. (The proxy affects <em>resolution</em>; it does not re-evaluate crates already resolved.)</li><li>Attacks on the proxy itself, or on crates.io upstream. We do our best on the former; the latter is out of scope.</li><li>Attacks on git dependencies or path dependencies. The proxy only filters crates-io-sourced packages.</li></ul><p>In other words: this is a <strong>probabilistic defense</strong> that buys you time against attacks detected by the community. It is not a replacement for <code>cargo audit</code>, code review, <code>cargo-deny</code>, <code>cargo-vet</code>, signed commits, or any of the other tools in your supply-chain toolbox. It complements them.</p><p>Think of it like a quarantine period on imported goods: most contraband gets caught, but nothing is perfect, and the defense works best in combination with other measures.</p><h2 id="how-to-use-it">How to use it</h2><h3 id="quick-start">Quick start</h3><p>Add to your project&apos;s <code>.cargo/config.toml</code>:</p><figure class="kg-card kg-code-card"><pre><code class="language-toml">[registries.menhera-cooldown]
index = &quot;sparse+https://index.crates.menhera.org/3d/&quot;

[registry]
default = &quot;menhera-cooldown&quot;

[source.crates-io]
replace-with = &quot;menhera-cooldown&quot;

[source.menhera-cooldown]
registry = &quot;sparse+https://index.crates.menhera.org/3d/&quot;

[alias]
publish-crates-io = [
    &quot;publish&quot;,
    &quot;--config&quot;, &quot;registry.default = \&quot;crates-io\&quot;&quot;,
]</code></pre><figcaption><p><span style="white-space: pre-wrap;">~/.cargo/config.toml</span></p></figcaption></figure><p>Replace 3<code>d</code> with any integer <code>1d</code>&#x2013;<code>30d</code> for your preferred cooldown window.</p><p>On each machine, authenticate once using your crates.io API token:</p><pre><code class="language-bash">cargo login</code></pre><p>(Paste the same token you use for <code>cargo login</code> against crates.io. The proxy directs API operations &#x2014; including authentication &#x2014; to crates.io, not intercepting them, but tells Cargo to directly use crates.io for API operations.)</p><p>Normal <code>cargo</code> commands (<code>build</code>, <code>update</code>, <code>install</code>, <code>search</code>) now route through the proxy by default, with index reads filtered by the cooldown policy and API operations/tarball downloads going directly to crates.io. <code><strong>publish</strong></code> needs a special attention: use <code>cargo publish-crates-io</code> instead.</p><p><strong>A note on authentication:</strong> When you run <code>cargo login</code> after configuring the proxy as your default registry, Cargo consults the proxy&apos;s <code>config.json</code> to determine where to send the token. Our <code>config.json</code> is a faithful pass-through of upstream crates.io&apos;s, meaning tokens are sent directly to <code>https://crates.io</code> &#x2014; our infrastructure never sees your authentication token. You can verify this at any time:</p><pre><code class="language-bash">curl -s https://index.crates.menhera.org/7d/config.json</code></pre><p>The <code>&quot;api&quot;</code> field should read <code>&quot;https://crates.io&quot;</code>. If it ever doesn&apos;t, that is a signal to stop trusting the proxy and report it.</p><h3 id="choosing-a-cooldown-window">Choosing a cooldown window</h3><p>There is no single right answer; pick based on your risk tolerance:</p><ul><li><strong>1d&#x2013;3d</strong>: Minimal friction, catches most automated scanner detections. Suitable for projects that want <em>some</em> defense without meaningfully slowing access to new crate versions.</li><li><strong>7d</strong> <em>(our default recommendation)</em>: Balances safety and freshness. Almost all publicly-identified compromised releases are yanked within this window. Catches accidental broken releases that maintainers fix within a week.</li><li><strong>14d&#x2013;30d</strong>: Maximum safety. Suitable for security-critical applications, infrastructure projects, nonprofits, and organizations where the cost of a supply-chain incident greatly exceeds the cost of waiting for new dependency versions.</li></ul><p>You can also use different windows in different projects or CI environments. A sensible pattern: <code>3d</code> or <code>7d</code> for regular development, <code>14d</code> or <code>30d</code> for release builds and production pipelines.</p><h3 id="verifying-it-works">Verifying it works</h3><p>Once configured, <code>cargo update</code> should still work, but newly-published versions won&apos;t appear. To spot-check:</p><pre><code class="language-sh"># A version published yesterday should not resolve under a 7d cooldown
# but should resolve under a 1d cooldown.
curl -s &quot;https://index.crates.menhera.org/7d/&lt;prefix&gt;/&lt;crate&gt;&quot; | wc -l
curl -s &quot;https://index.crates.menhera.org/1d/&lt;prefix&gt;/&lt;crate&gt;&quot; | wc -l
</code></pre><p>The 1-day response will have more lines (more versions visible) than the 7-day response if any versions of that crate have been published in between.</p><h3 id="using-with-ci">Using with CI</h3><p>In CI, override via environment variable or a CI-specific config file:</p><pre><code class="language-sh">export CARGO_REGISTRIES_MENHERA_COOLDOWN_PROTOCOL=sparse
# ... and mount a .cargo/config.toml pointing at the proxy
</code></pre><p>Or bake it into your CI image&apos;s cargo config directly.</p><h3 id="falling-back-to-upstream">Falling back to upstream</h3><p>If the proxy is ever unavailable (we aim for very high uptime, but nothing is perfect), you can temporarily revert to upstream by passing <code>--registry crates-io</code> to Cargo. Your builds will proceed against <code>index.crates.io</code> directly, without cooldown. For production-critical pipelines, consider whether your policy prefers &quot;fail closed&quot; (no builds during proxy downtime) or &quot;fail open&quot; (builds proceed without cooldown during downtime).</p><h2 id="how-it-works-technically">How it works, technically</h2><p>The proxy is <a href="https://github.com/menhera-org/index-crates-menhera" rel="noreferrer">a small Rust service</a> running on Fastly&apos;s edge compute platform. On each request:</p><ol><li>It parses the URL to determine the cooldown window (<code>/Nd/</code>) and the upstream index path.</li><li>It fetches the corresponding response from <code>index.crates.io</code> (heavily edge-cached).</li><li>It consults a timestamp database to look up when each version in the response was published.</li><li>It removes lines corresponding to versions younger than the cooldown window.</li><li>It returns the filtered response to Cargo.</li></ol><p>The timestamp database is populated from the official crates.io database dumps, which are published daily. We re-ingest on a fixed schedule and additionally poll for new publications on a shorter interval so that the &quot;is this version too young&quot; decision is always made against near-real-time data.</p><p>For <code>config.json</code> (the file that tells Cargo where to download tarballs), we pass through upstream&apos;s response unchanged. This means crate tarballs are fetched directly from <code>static.crates.io</code>, not through us &#x2014; we are strictly a metadata filter, not a bytes-in-motion proxy. This minimizes our attack surface and means a compromise of the proxy cannot substitute malicious crate content (since Cargo verifies checksums against the upstream index and downloads from upstream&apos;s CDN).</p><h3 id="what-we-can-and-cannot-do-as-operator">What we can and cannot do as operator</h3><p><strong>What we could hypothetically do</strong>, being transparent about this:</p><ul><li>Hide specific versions beyond the cooldown rules (e.g. pretend a crate version doesn&apos;t exist). Cargo would then not resolve to it.</li><li>Delay or fail requests for specific crates or user agents.</li></ul><p><strong>What we fundamentally cannot do:</strong></p><ul><li>Serve modified crate tarballs. Cargo verifies checksums, and the checksums we serve in index metadata come directly from upstream. Any tampering would produce a mismatch and Cargo would reject the download.</li><li>See the contents of your private code or builds. The proxy only sees requests for index metadata, the same requests Cargo sends to <code>index.crates.io</code> today.</li><li>Associate requests with individuals. The proxy is unauthenticated and we do not log identifying information beyond what&apos;s necessary for operational troubleshooting (see &quot;Privacy&quot; below).</li></ul><p>To verify our honest behavior, you can diff the filtered response from our proxy against the raw response from upstream:</p><pre><code class="language-sh">diff &lt;(curl -s https://index.crates.menhera.org/7d/se/rd/serde) \
     &lt;(curl -s https://index.crates.io/se/rd/serde)
</code></pre><p>The only differences should be the removal of version lines whose <code>created_at</code> is within the cooldown window.</p><h2 id="privacy">Privacy</h2><ul><li>The service is <strong>unauthenticated</strong>. No account creation, no API keys, no cookies.</li><li>We do not log IP addresses beyond what CDN-level rate limiting requires (transient, not retained).</li><li>We do not log the user-agent string, query patterns, or any personally-identifiable information.</li><li>Aggregate traffic metrics (request counts per endpoint, cache hit rates, error rates) are retained for operational purposes.</li><li>We do not share data with third parties.</li></ul><p>If privacy-preserving access is important to you, the proxy works equally well from Tor. Menhera operates its own Tor infrastructure on AS63806 and supports this use case.</p><h2 id="operational-details">Operational details</h2><p><strong>Availability</strong>: We aim for high availability but availability depends on Fastly.</p><p><strong>Support</strong>: This is a public-benefit service provided by a nonprofit. We cannot offer SLA-backed commercial support. For bug reports, integration questions, or incident notifications, reach us at the contacts listed at the bottom of this page.</p><p><strong>Data freshness</strong>: Cooldown decisions are made against a timestamp database refreshed from the crates.io DB dump daily, supplemented by shorter-interval polling for new releases. In the unlikely event the proxy&apos;s view of &quot;when was version X published&quot; is briefly stale, the effect is that a version becomes visible slightly later than strictly required, never earlier.</p><p><strong>crates.io relations</strong>: We have nothing to do with crates.io team. This service complies with crates.io&apos;s acceptable-use guidance: just being a proxy, live queries are heavily cached at our edge, and we pass through any User-Agent as-is. We are grateful to the crates.io team for operating the world-class piece of infrastructure this service sits on top of.</p><h2 id="why-a-japanese-nonprofit-is-running-this">Why a Japanese nonprofit is running this</h2><p>Menhera.org (the Human-life Information Platforms Institute, &#x4E00;&#x822C;&#x793E;&#x56E3;&#x6CD5;&#x4EBA;&#x751F;&#x6D3B;&#x60C5;&#x5831;&#x57FA;&#x76E4;&#x7814;&#x7A76;&#x6A5F;&#x69CB;) is a Japan-incorporated nonprofit whose mission is to empower individuals with more freedoms by designing IT systems, infrastructure, protocols, and more. We operate AS63806 as a research autonomous system of the Internet, with a focus on privacy and protocol work.</p><p>Supply-chain attacks on open-source ecosystems are a collective-action problem: every individual project and every individual developer benefits from a healthier ecosystem, but the defenses that would help most (quarantine windows, community review, cryptographic attestation) require infrastructure that no single project wants to run. Running this proxy as a public good fits our mission: we already operate infrastructure, we already care about the ecosystem, and the marginal cost of providing this service to the world is small compared to its aggregate benefit.</p><p>We are not funded by, affiliated with, or operating on behalf of any cloud vendor, any government, or any other entity. We are a small Japanese nonprofit running infrastructure we believe should exist.</p><p>The service is provided free of charge for public use. If your organization uses it at scale and wants to support its continued operation, donations are welcome via our website. We may offer paid SLA-backed tiers in the future for organizations that require contractual commitments; the free tier will remain free.</p><p>Suggestions, bug reports, and feature requests are welcome. This is open infrastructure and we want it to serve the community&apos;s actual needs.</p><h2 id="faq">FAQ</h2><p><strong>Is this a replacement for crates.io?</strong></p><p>No. It is a transparent read-only filter in front of crates.io. All crate data originates from and is ultimately served by crates.io. If crates.io is unavailable, we are also unavailable.</p><p><strong>Does this work for private registries?</strong></p><p>Not currently. The proxy is specifically for <code>crates.io</code>. If you maintain a private registry and want similar cooldown semantics, the proxy code will be available for self-hosting.</p><p><strong>Will this slow down <code>cargo build</code>?</strong></p><p>No noticeable difference. The proxy is edge-cached aggressively, so almost all requests are served from a CDN point of presence near you, often faster than upstream <code>index.crates.io</code> for users geographically distant from the upstream&apos;s primary regions.</p><p><strong>Can I pick a cooldown longer than 30 days?</strong></p><p>Not currently via the URL scheme. If you have a concrete use case for longer cooldowns, let us know; we&apos;re open to extending the range.</p><p><strong>What happens to versions that get yanked during the cooldown window?</strong></p><p>They never become visible through the proxy. Yanked versions are treated the same way as too-young versions for the purposes of our filter. This is actually a side benefit: you&apos;re protected not just against not-yet-discovered attacks but also against accidentally-broken releases that maintainers later yank.</p><p><strong>Can I self-host this?</strong></p><p>The source is released under <code>Apache-2.0 OR MPL-2.0</code>. If you want to run your own instance (for private registries, for custom policies, for regulatory reasons, or because you prefer not to depend on a third party), you will be able to.</p><p><strong>Who is the maintainer?</strong></p><p>Menhera.org. Direct contact information is at the bottom of this page.</p><p><strong>I just published a crate and my own project can&apos;t see it &#x2014; why?</strong></p><p>The cooldown applies uniformly: any version younger than the window is invisible, including versions you just published. If you need immediate access to a just-published crate (e.g., to test it in a dependent project), either temporarily lower your cooldown window to <code>1d</code>, or override the default registry for that specific invocation (<code>cargo build --registry crates-io</code>).</p><p><strong>I cannot do <code>cargo publish</code></strong>.</p><p>Do <code>cargo publish-crates-io</code> if you use our snippets, or use the following snippet:</p><figure class="kg-card kg-code-card"><pre><code class="language-bash">CARGO_REGISTRY_DEFAULT=crates-io cargo publish --config &apos;source.menhera-cooldown.registry = &quot;sparse+https://index.crates.menhera.org/0d/&quot;&apos;</code></pre><figcaption><p><span style="white-space: pre-wrap;">0d bypasses cooldown</span></p></figcaption></figure><h2 id="source-code-and-contributions">Source code and contributions</h2><p>The proxy&apos;s source code is as follows. Issues, pull requests, and security reports are welcome.</p><p><a href="https://github.com/menhera-org/index-crates-menhera">https://github.com/menhera-org/index-crates-menhera</a></p><h2 id="contact">Contact</h2><ul><li>Website: <a href="https://www.menhera.org/">https://www.menhera.org/</a></li><li>Email: <code>itops %AT% menhera.ad.jp</code></li></ul><hr><p><em>The Human-life Information Platforms Institute is a Japan-incorporated nonprofit (&#x4E00;&#x822C;&#x793E;&#x56E3;&#x6CD5;&#x4EBA;&#x751F;&#x6D3B;&#x60C5;&#x5831;&#x57FA;&#x76E4;&#x7814;&#x7A76;&#x6A5F;&#x69CB;). This service is provided as a public good in alignment with the Institute&apos;s mission. No warranty is expressed or implied. Use at your own discretion.</em></p><hr><p><em>This post was initially drafted with Claude Opus 4.7 (an LLM) but it incorporates substantial manual review and changes. The author takes full responsibility on this content.</em></p>]]></content:encoded></item><item><title><![CDATA[Statement on the Armed Conflict in the Middle East]]></title><description><![CDATA[<p>1 March, 2026<br>Board of Directors<br>Human-life Information Platforms Institute</p><hr><p><strong>The Human-life Information Platforms Institute expresses its deep concern and profound sorrow regarding the ongoing armed conflict and related military actions in the Middle East</strong>, which continue to threaten the lives and daily existence of civilians, particularly innocent children. Regardless</p>]]></description><link>https://www.menhera.org/2026-03-01-statement-armed-conflict/</link><guid isPermaLink="false">69a4fe793e2cfa01b685e0c4</guid><category><![CDATA[News]]></category><dc:creator><![CDATA[Yuka Mori]]></dc:creator><pubDate>Sun, 01 Mar 2026 14:00:00 GMT</pubDate><media:content url="https://www.menhera.org/content/images/2026/03/----------2026-03-02-120456.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.menhera.org/content/images/2026/03/----------2026-03-02-120456.png" alt="Statement on the Armed Conflict in the Middle East"><p>1 March, 2026<br>Board of Directors<br>Human-life Information Platforms Institute</p><hr><p><strong>The Human-life Information Platforms Institute expresses its deep concern and profound sorrow regarding the ongoing armed conflict and related military actions in the Middle East</strong>, which continue to threaten the lives and daily existence of civilians, particularly innocent children. Regardless of political or historical context, the targeting or endangerment of schools, residential areas, and civilian populations cannot be justified. The right to live in peace, to learn, and to spend time with one&#x2019;s family is a fundamental right that must be equally protected for all people, irrespective of nationality or position. </p><p>Our Institute is a non-governmental, non-profit organization dedicated to supporting individual freedom and human rights through the research, development, and operation of information technologies and information infrastructure. We promote and operate technologies that enable secure and private online communications. In practice, we provide neutral support for safe communications to individuals facing grave risks, including journalists and dissidents in conflict zones. </p><p>We do not support any particular government or political position. However, we hold that war and all acts of killing and violence are inhumane, as they violate individual life and dignity and undermine the foundations of free and democratic societies. The free flow of information and secure communications can only exist within a peaceful and open society. Military force does not bring sustainable solutions; it perpetuates cycles of violence and deepens human suffering. </p><p>We strongly call upon all parties involved to immediately cease attacks and to prioritize the protection of every person&#x2019;s life and safety. We further urge the international community to establish and support frameworks for dialogue grounded in mutual respect for human dignity and human rights, and to take concrete steps to prevent further loss of life. </p><p>The security of life is the foundation of all human rights. When this foundation is threatened, we cannot remain silent. Even in times of war, we will maintain our neutral position while continuing the development and operation of technologies that protect individual freedom and safety. We state clearly our opposition to all wars and acts of violence. </p><p>Peace is not an abstract ideal; it is built through concrete choices that safeguard each person&#x2019;s life and dignity. We believe we bear a responsibility to pass on to the next generation not a legacy of conflict, but a model of coexistence. </p><p><em>This statement represents the collective position of the Board of Directors.</em></p><div class="kg-card kg-file-card"><a class="kg-file-card-container" href="https://www.menhera.org/content/files/2026/03/20260301-statement-armed-conflict.pdf" title="Download" download><div class="kg-file-card-contents"><div class="kg-file-card-title">20260301-statement-armed-conflict</div><div class="kg-file-card-caption">PDF version</div><div class="kg-file-card-metadata"><div class="kg-file-card-filename">20260301-statement-armed-conflict.pdf</div><div class="kg-file-card-filesize">199 KB</div></div></div><div class="kg-file-card-icon"><svg viewbox="0 0 24 24"><defs><style>.a{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;}</style></defs><title>download-circle</title><polyline class="a" points="8.25 14.25 12 18 15.75 14.25"/><line class="a" x1="12" y1="6.75" x2="12" y2="18"/><circle class="a" cx="12" cy="12" r="11.25"/></svg></div></a></div>]]></content:encoded></item><item><title><![CDATA[AS63806: We are now an "IP Address Management Agent" (LIR) at JPNIC]]></title><description><![CDATA[<p>Jan. 2026 / By Human-life Information Platforms Institute (Menhera.org)</p><p>Since October 2025, we have been an &quot;IP Address Management Agent&quot; (Japanese: IP&#x30A2;&#x30C9;&#x30EC;&#x30B9;&#x7BA1;&#x7406;&#x6307;&#x5B9A;&#x4E8B;&#x696D;&#x8005;), an LIR (local internet registry) at JPNIC, the national internet registry (NIR) of Japan.</p><p>This</p>]]></description><link>https://www.menhera.org/we-are-now-an-ip-ad/</link><guid isPermaLink="false">697456bb3e2cfa01b685e08f</guid><dc:creator><![CDATA[Yuka Mori]]></dc:creator><pubDate>Sat, 24 Jan 2026 05:42:10 GMT</pubDate><media:content url="https://www.menhera.org/content/images/2026/01/202601-menhera-as63806-lir-02.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.menhera.org/content/images/2026/01/202601-menhera-as63806-lir-02.jpg" alt="AS63806: We are now an &quot;IP Address Management Agent&quot; (LIR) at JPNIC"><p>Jan. 2026 / By Human-life Information Platforms Institute (Menhera.org)</p><p>Since October 2025, we have been an &quot;IP Address Management Agent&quot; (Japanese: IP&#x30A2;&#x30C9;&#x30EC;&#x30B9;&#x7BA1;&#x7406;&#x6307;&#x5B9A;&#x4E8B;&#x696D;&#x8005;), an LIR (local internet registry) at JPNIC, the national internet registry (NIR) of Japan.</p><p>This means we can assign IP addresses out of the ranges allocated to us to others to provide connectivity to them, effectively being an Internet service provider (ISP).</p><p>We also have registered the domain name as an official Japanese LIR: <code>menhera.ad.jp.</code>. (N.B. Only official members and designated agents can register names under <code>ad.jp.</code>)</p><p>To provide official services to people external to our community (of course free of charge), we will acquire a Reported Telecommunication Carrier (Japanese: &#x5C4A;&#x51FA;&#x96FB;&#x6C17;&#x901A;&#x4FE1;&#x4E8B;&#x696D;&#x8005;) status in Japan, during our fiscal year 2026 (Jan-Dec).</p>]]></content:encoded></item><item><title><![CDATA[RESOLVED: Possible email server abuse in investigation (Email operations suspended)]]></title><description><![CDATA[<p>Our older email server at <code>addiction.menhera.org (157.7.115.224, 2400:8500:1302:3141:157:7:115:224)</code> showed some sign of possible abuse, so we suspended the operation of the affected server. All the data is secured and isolated, and we are investigating this possible incident. Meanwhile,</p>]]></description><link>https://www.menhera.org/possible-email-server-abuse-in-investigation/</link><guid isPermaLink="false">67cb3bfa79a064021fc6bc9f</guid><category><![CDATA[News]]></category><dc:creator><![CDATA[Yuka Mori]]></dc:creator><pubDate>Fri, 07 Mar 2025 18:45:24 GMT</pubDate><media:content url="https://www.menhera.org/content/images/2025/03/No_JunkMail_Valletta.JPG" medium="image"/><content:encoded><![CDATA[<img src="https://www.menhera.org/content/images/2025/03/No_JunkMail_Valletta.JPG" alt="RESOLVED: Possible email server abuse in investigation (Email operations suspended)"><p>Our older email server at <code>addiction.menhera.org (157.7.115.224, 2400:8500:1302:3141:157:7:115:224)</code> showed some sign of possible abuse, so we suspended the operation of the affected server. All the data is secured and isolated, and we are investigating this possible incident. Meanwhile, our email operation is temporary suspended. Please use menhera.com email addresses to contact us.</p><p>We appologize for possible impacts of the possible incident, and the service suspension.</p><p>Watch out for updates from us.</p><div class="kg-card kg-callout-card kg-callout-card-yellow"><div class="kg-callout-emoji">&#x26A0;&#xFE0F;</div><div class="kg-callout-text">We will deploy a more secure email server at other places. We will not reuse the IP addresses of the server in investigation.</div></div><p>Update 1: The alert in question <strong>was very likely a false positive</strong>. Nevertheless, the mailing system is old and is not without problems, so we are going to replace the mail server with newer ones.</p>]]></content:encoded></item><item><title><![CDATA[Rust package: uuid-str]]></title><description><![CDATA[<p><a href="https://crates.io/crates/uuid-str">https://crates.io/crates/uuid-str</a></p><p>Our new Rust package <code>uuid-str</code> is a library providing static-length representation of UUIDs.</p>]]></description><link>https://www.menhera.org/rust-package-uuid-str/</link><guid isPermaLink="false">658177930dbeeb135af800d0</guid><dc:creator><![CDATA[Yuka Mori]]></dc:creator><pubDate>Thu, 26 Oct 2023 11:55:01 GMT</pubDate><content:encoded><![CDATA[<p><a href="https://crates.io/crates/uuid-str">https://crates.io/crates/uuid-str</a></p><p>Our new Rust package <code>uuid-str</code> is a library providing static-length representation of UUIDs.</p>]]></content:encoded></item><item><title><![CDATA[Container Tab Groups]]></title><description><![CDATA[Container Tab Groups is a Firefox extension that provides Chrome-like tab groups using private and isolated containers. We developed it to become the ultimate tab manager and groups for Firefox.]]></description><link>https://www.menhera.org/container-tab-groups/</link><guid isPermaLink="false">658177930dbeeb135af800cf</guid><category><![CDATA[project]]></category><dc:creator><![CDATA[Yuka Mori]]></dc:creator><pubDate>Mon, 20 Feb 2023 12:22:26 GMT</pubDate><media:content url="https://www.menhera.org/content/images/2023/02/Screenshot-2023-02-09-at-1.01.53.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.menhera.org/content/images/2023/02/Screenshot-2023-02-09-at-1.01.53.png" alt="Container Tab Groups"><p>Container Tab Groups <a href="https://addons.mozilla.org/firefox/addon/container-tab-groups/">[1]</a> is a Firefox extension that provides Chrome-like tab groups using private and isolated containers. We developed it to become the ultimate tab manager and groups for Firefox.</p><p>Featured in gHacks:<br><a href="https://www.ghacks.net/2022/09/26/container-tab-groups-group-sites-securely-in-firefox/">https://www.ghacks.net/2022/09/26/container-tab-groups-group-sites-securely-in-firefox/</a></p><blockquote>Firefox&apos;s Container feature is a unique feature of the browser that allows users to separate sites into containers. It is ideal for limiting tracking and may also be used to group sites into categories.<br>Extensions may improve the core Container functionality. Container Tab Group does so by adding better grouping and management options to the feature, including for the browser&apos;s private browsing mode.</blockquote><p>The extension is available for downloads at addons.mozilla.org:<br><a href="https://addons.mozilla.org/firefox/addon/container-tab-groups/">https://addons.mozilla.org/firefox/addon/container-tab-groups/</a></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://addons.mozilla.org/firefox/addon/container-tab-groups/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Container Tab Groups &#x2013; Get this Extension for &#x1F98A; Firefox (en-US)</div><div class="kg-bookmark-description">Download Container Tab Groups for Firefox. Chrome-like tab groups using private and isolated containers: The ultimate tab manager and groups for Firefox.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://addons.mozilla.org/favicon.ico?v=2" alt="Container Tab Groups"><span class="kg-bookmark-publisher">Menhera.org, anosatsuk124</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://addons.mozilla.org/user-media/previews/full/273/273506.png?modified=1664191092" alt="Container Tab Groups"></div></a></figure><p>It is developed as a free and open source WebExtension at GitHub:<br><a href="https://github.com/menhera-org/TabArray">https://github.com/menhera-org/TabArray</a></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/menhera-org/TabArray"><div class="kg-bookmark-content"><div class="kg-bookmark-title">GitHub - menhera-org/TabArray: Chrome-like tab groups using isolated containers: The ultimate tab manager and groups for Firefox</div><div class="kg-bookmark-description">Chrome-like tab groups using isolated containers: The ultimate tab manager and groups for Firefox - GitHub - menhera-org/TabArray: Chrome-like tab groups using isolated containers: The ultimate tab...</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.com/fluidicon.png" alt="Container Tab Groups"><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">menhera-org</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://opengraph.githubassets.com/17a743fdfb2fb891d807027f7a48d098638347414dc7179d94ddd117ab8e0c78/menhera-org/TabArray" alt="Container Tab Groups"></div></a></figure><p>The license is the GNU General Public License, version 3.0 or later.</p><p>It is code-named &quot;TabArray&quot; at the beginning of the development, so the GitHub repository is named as such.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.menhera.org/content/images/2023/02/Screenshot-2023-02-20-at-21.10.26.png" class="kg-image" alt="Container Tab Groups" loading="lazy" width="1920" height="1080" srcset="https://www.menhera.org/content/images/size/w600/2023/02/Screenshot-2023-02-20-at-21.10.26.png 600w, https://www.menhera.org/content/images/size/w1000/2023/02/Screenshot-2023-02-20-at-21.10.26.png 1000w, https://www.menhera.org/content/images/size/w1600/2023/02/Screenshot-2023-02-20-at-21.10.26.png 1600w, https://www.menhera.org/content/images/2023/02/Screenshot-2023-02-20-at-21.10.26.png 1920w" sizes="(min-width: 720px) 720px"><figcaption>Side bar displaying containers.</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.menhera.org/content/images/2023/02/Screenshot-2023-02-20-at-21.14.23.png" class="kg-image" alt="Container Tab Groups" loading="lazy" width="1920" height="1080" srcset="https://www.menhera.org/content/images/size/w600/2023/02/Screenshot-2023-02-20-at-21.14.23.png 600w, https://www.menhera.org/content/images/size/w1000/2023/02/Screenshot-2023-02-20-at-21.14.23.png 1000w, https://www.menhera.org/content/images/size/w1600/2023/02/Screenshot-2023-02-20-at-21.14.23.png 1600w, https://www.menhera.org/content/images/2023/02/Screenshot-2023-02-20-at-21.14.23.png 1920w" sizes="(min-width: 720px) 720px"><figcaption>Panorama Grid displaying tabs by container.</figcaption></figure><h2 id="lets-switch-to-firefox">Let&apos;s switch to Firefox</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.menhera.org/content/images/2023/05/Firefox-Browser-logo.svg" class="kg-image" alt="Container Tab Groups" loading="lazy" width="77" height="80"><figcaption>Firefox</figcaption></figure><h3 id="firefox-advantages">Firefox advantages</h3><ul><li>This extension uses Firefox&apos;s private and isolated containers technology. Only Firefox and Firefox-based browsers have this.</li><li>Firefox is independent and privacy-centric. Not controlled by an entity like Google.</li></ul><h2 id="features">Features</h2><p><em>Tab Group = Container</em></p><ul><li>Requires no setup before/after installation.</li><li>Isolated cookies/logins for each of tab groups because they are containers.</li><li>Per-window container management.</li><li>Temporary containers and auto-cookie-discarding containers.</li><li>Automatically sorts tabs based on containers.</li><li>Manage tabs based on the domains of websites.</li><li>Provides you with a menu where you can do the following actions:</li><li>List all the tabs for a window.</li><li>Show/hide tabs of a container.</li><li>Create and delete containers as you like.</li><li>Switch windows.</li><li>Enables First-Party Isolate (privacy.firstparty.isolate; FPI) by default. (Configurable.) <strong>This means that cookies for different sites, even for a same container, are separated by registrable domain.</strong> It also enables natural and flicker-free openings of new windows by websites, unlike simulated FPI by manipulating containers. This is the way Tor Browser is using.</li><li>Allows the user to enable fingerprinting resistance (privacy.resistFingerprinting).</li><li>Per-container overrides of the language and the user agent settings.</li></ul><h2 id="available-languages">Available languages</h2><ul><li>English</li><li>&#x65E5;&#x672C;&#x8A9E;</li><li>Fran&#xE7;ais</li><li>Esperanto</li><li>Espa&#xF1;ol</li><li>&#x420;&#x443;&#x441;&#x441;&#x43A;&#x438;&#x439;</li><li>Deutsch</li></ul><p>This project uses Hosted Weblate for translation. You can contribute translations at Hosted Weblate.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://hosted.weblate.org/engage/container-tab-groups/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Get involved in Container Tab Groups!</div><div class="kg-bookmark-description">Container Tab Groups is being translated into 9 languages using Weblate. Join the translation or start translating your own project.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://hosted.weblate.org/static/weblate-180.png" alt="Container Tab Groups"><span class="kg-bookmark-author">Hosted Weblate</span><span class="kg-bookmark-publisher">Michal &#x10C;iha&#x159;</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://hosted.weblate.org/widgets/container-tab-groups/-/open-graph.png" alt="Container Tab Groups"></div></a></figure><h2 id="get-involved">Get involved</h2><p>Discussions are available at GitHub, and if you find a problem, please report it at Gtihub Issues.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/menhera-org/TabArray/discussions"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Discussions &#xB7; menhera-org/TabArray</div><div class="kg-bookmark-description">Chrome-like tab groups using isolated containers: The ultimate tab manager and groups for Firefox - Discussions &#xB7; menhera-org/TabArray</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.com/fluidicon.png" alt="Container Tab Groups"><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">menhera-org</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://opengraph.githubassets.com/17a743fdfb2fb891d807027f7a48d098638347414dc7179d94ddd117ab8e0c78/menhera-org/TabArray" alt="Container Tab Groups"></div></a></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/menhera-org/TabArray/issues"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Issues &#xB7; menhera-org/TabArray</div><div class="kg-bookmark-description">Chrome-like tab groups using isolated containers: The ultimate tab manager and groups for Firefox - Issues &#xB7; menhera-org/TabArray</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.com/fluidicon.png" alt="Container Tab Groups"><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">menhera-org</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://opengraph.githubassets.com/17a743fdfb2fb891d807027f7a48d098638347414dc7179d94ddd117ab8e0c78/menhera-org/TabArray" alt="Container Tab Groups"></div></a></figure>]]></content:encoded></item><item><title><![CDATA[About Menhera.org]]></title><description><![CDATA[Menhera.org (#MenheraOrg) is an organisation originally founded around 2020, and incorporated at 24th Jan, 2023 to create a semi-academic place to collaborate on projects members imagine of. The Human-life Information Platforms Institute (Japanese: 生活情報基盤研究機構) is its formal name.]]></description><link>https://www.menhera.org/about/</link><guid isPermaLink="false">658177930dbeeb135af800ce</guid><category><![CDATA[About]]></category><dc:creator><![CDATA[Yuka Mori]]></dc:creator><pubDate>Mon, 06 Feb 2023 08:25:43 GMT</pubDate><media:content url="https://www.menhera.org/content/images/2023/02/2560px-The_earth_at_night-1.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.menhera.org/content/images/2023/02/2560px-The_earth_at_night-1.jpg" alt="About Menhera.org"><p>Menhera.org (<a href="https://twitter.com/search?q=%2523MenheraOrg">#MenheraOrg</a>) is an organisation originally founded around 2020, and incorporated at 24th Jan, 2023 to create a semi-academic place to collaborate on projects members imagine of. The Human-life Information Platforms Institute (Japanese: &#x751F;&#x6D3B;&#x60C5;&#x5831;&#x57FA;&#x76E4;&#x7814;&#x7A76;&#x6A5F;&#x69CB;) is its formal name. We aim to do creative things regardless of perceived usefulness.</p><blockquote>The information platforms behind the Internet form our daily communication, which in turn forms our societies. Arts and sciences are no exception. This is why we started this project.</blockquote><p>We support students, researchers, and the overall academic communities&#x2014;which all are the world-changing powers&#x2014;by providing platforms. We are also working for a truly diverse and integrated society.</p><p>Corporate site: <a href="https://www.menhera.or.jp/">https://www.menhera.or.jp/</a> (Japanese)</p><h2 id="please-donate">Please donate!</h2><p>To maintain the infrastructure to carry out all the nonprofit projects, we need money. You can send us money by the following methods:</p><h3 id="by-euswift-bank-transfer-via-the-representative-directors-wise-account">By EU/SWIFT bank transfer via the representative director&apos;s Wise account</h3><figure class="kg-card kg-code-card"><pre><code>mori at menhera dot com
Phone: +81 50 3577 0100
Account holder: YUKA MORI
BIC: TRWIBEB1XXX
IBAN: BE83 9674 8053 3215
Wise&apos;s address: Rue du Tr&#xF4;ne 100, 3rd floor
Brussels
1050
Belgium</code></pre><figcaption><p><span style="white-space: pre-wrap;">The representative director&apos;s personal account details</span></p></figcaption></figure><p>We accept donations in EUR in this account.</p><p>When sending money to the personal account, be sure to include in the reference: &quot;Donation to Menhera.org&quot;.</p><p>If you need to pay additional fees to send to a Japanese bank, EU bank transfer is the preferred method.</p><h3 id="by-japanese-bank-transfer-directly-to-the-organizations-account">By Japanese bank transfer directly to the organization&apos;s account</h3><figure class="kg-card kg-code-card"><pre><code>Bank (code): &#xFF27;&#xFF2D;&#xFF2F;&#x3042;&#x304A;&#x305E;&#x3089;&#x30CD;&#x30C3;&#x30C8;&#x9280;&#x884C; (0310)
Branch (code): &#x3042;&#x3058;&#x3055;&#x3044;&#x652F;&#x5E97; (502)
Account type: Ordinary deposit (&#x666E;&#x901A;)
Account number: 7185805
Account holder&apos;s name: &#xFF7C;&#xFF6C;)&#xFF7E;&#xFF72;&#xFF76;&#xFF82;&#xFF7C;&#xFF9E;&#xFF6E;&#xFF73;&#xFF8E;&#xFF73;&#xFF77;&#xFF8A;&#xFF9E;&#xFF9D;&#xFF79;&#xFF9D;&#xFF77;&#xFF6D;&#xFF73;&#xFF77;&#xFF7A;&#xFF73;&#xFF77;&#xFF8C;&#xFF86;&#xFF6D;&#xFF73;&#xFF77;&#xFF9D;&#xFF96;&#xFF73;</code></pre><figcaption><p><span style="white-space: pre-wrap;">This bank does not have a SWIFT code.</span></p></figcaption></figure><h3 id="but-i-want-to-donate-by-my-credit-card">But I want to donate by my credit card!</h3><p>This costs us a fee, but if you need it, here&apos;s the details:</p><p>PayPal: <a href="https://paypal.me/menheraorg">https://paypal.me/menheraorg</a></p>]]></content:encoded></item></channel></rss>