<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Skycoin Blog</title><link>https://blog.theskywirenetwork.net/</link><description>Recent content on Skycoin Blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Sat, 05 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.theskywirenetwork.net/index.xml" rel="self" type="application/rss+xml"/><item><title>Skywire Development Update — September 5, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-09-05/</link><pubDate>Sat, 05 Sep 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-09-05/</guid><description>&lt;p&gt;The day&amp;rsquo;s through-line ran from a bare &lt;code&gt;continue&lt;/code&gt; statement to a visor&amp;rsquo;s reward eligibility. Three readers in the transport discovery skipped a failed batch silently, and because those counts decide online status and uptime feeds the reward threshold, a short read could push live visors under the bar while still returning a plausible number. Fixing that fed a larger rebuild of the reward server&amp;rsquo;s statistics pages, which moved off HTTP-over-dmsg onto CXO feeds and gained panels for the dmsg substrate, service reachability, transports per visor, and the route setup nodes that negotiate every route in the network and had never appeared on any chart.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — September 4, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-09-04/</link><pubDate>Fri, 04 Sep 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-09-04/</guid><description>&lt;p&gt;The desk stopped being a page the hypervisor happened to serve and became the hypervisor UI itself — on the visor-attached hypervisor, on the standalone &lt;code&gt;hv serve&lt;/code&gt;, and on the documentation site, whose root now greets with a terminal that has just run &lt;code&gt;skywire --help&lt;/code&gt;. The docs moved into the binary that documents them, so the command reference is the cobra tree walked live on every request rather than a copy that can drift, and it renders with no visor running at all. Underneath the surface work, the transport discovery&amp;rsquo;s per-transport metrics feed — the only dead feed on the deployment — was traced to a single object a fraction over CXO&amp;rsquo;s 16MB limit, which is refused at Put time and therefore kills the whole feed rather than one window; it was gzipped, chunked, and rebuilt as immutable per-day leaves. A production dmsg server was found restarting roughly every eighty seconds, and the reward server&amp;rsquo;s statistics pages were found pulling 24MB over dmsg to compute three numbers TPD publishes in 138 bytes.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — September 3, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-09-03/</link><pubDate>Thu, 03 Sep 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-09-03/</guid><description>&lt;p&gt;Two threads ran through the day, and both were driven by measurement rather than by design. The wasm visor gained a real VPN client, with a gVisor userspace netstack standing in for the TUN device a browser tab cannot have. And a long run of skysocks and router fixes traced transfers that were spending two and three times the wire they needed: a 20MB upload torn down at twenty seconds by a write valve and again at 112 seconds by a keepalive that could not see uploads, a 20MB download putting 33.8MB of duplicate bytes on one leg against 14.7MB of payload. Alongside them the browser visor&amp;rsquo;s recurring five-hour death was root-caused to leaked peer connections, the resolving proxies gained status pages of their own, and the native hypervisor learned to serve the converged desk.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — September 2, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-09-02/</link><pubDate>Wed, 02 Sep 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-09-02/</guid><description>&lt;p&gt;The whole skywire binary runs in a browser tab now. Not a trimmed edge build — the full command tree, compiled to wasm, running &lt;code&gt;skywire autoconfig&lt;/code&gt; in a terminal, booting a foreground visor that joins the P2P transport mesh, and serving its own hypervisor UI to a nested browser on the same page. By the end of the day that visor forms WebTransport transports like a native peer, renders the hypervisor UI natively through a service worker, and chains its proxies by default so any tab of the nested browser browses through the mesh. A try-it-now playground is live on the docs site at skycoin.github.io/skywire/playground.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — September 1, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-09-01/</link><pubDate>Tue, 01 Sep 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-09-01/</guid><description>&lt;p&gt;Four merges, each substantial: the retransmit storm that could eat a loaded mux stream is root-caused and fixed, dmsg servers become probeable per carrier — uncovering and fixing a silent QUIC downgrade along the way — five operations guides land in the docs, and the last modified in-tree dependency copies become proper forks.&lt;/p&gt;
&lt;h3 id="skywire-the-retransmit-storm-root-caused"&gt;Skywire: The Retransmit Storm, Root-Caused&lt;/h3&gt;
&lt;p&gt;Under sustained load, bufferbloat inflates the in-band RTT far past the loss-detection ceiling, so the 1.5s clamp declared every in-flight packet permanently lost — and because retransmitted entries were never re-stamped, every ~25ms SACK re-selected the same holes. Measured live: 93% of sent packets were retransmits, 50MB on the wire for 8.6MB of goodput, until liveness gave out. &lt;strong&gt;&lt;code&gt;4399&lt;/code&gt;&lt;/strong&gt; fixes both halves: retransmit entries carry their last send time and back off exponentially, and the RACK ceiling is floored at one measured RTT so the adaptive reorder window is never overridden by an absolute clamp.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 31, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-31/</link><pubDate>Mon, 31 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-31/</guid><description>&lt;p&gt;A hardening day for the browser visor: a page-freeze fix, an end to two CPU-pegging loops, and a local proxy-status page that answers even before the mesh does. A pair of allocation cuts round it out.&lt;/p&gt;
&lt;h3 id="skywire-the-browser-visor-behaves"&gt;Skywire: The Browser Visor Behaves&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;4391&lt;/code&gt;&lt;/strong&gt; stops the standalone page stranding the visor on the page&amp;rsquo;s main thread, where any long computation froze the UI with it. &lt;strong&gt;&lt;code&gt;4393&lt;/code&gt;&lt;/strong&gt; ends the in-tab proxy pegging a core against zombie exits and makes the CLI-RPC bridge report honest liveness, and &lt;strong&gt;&lt;code&gt;4394&lt;/code&gt;&lt;/strong&gt; memoizes the local-route search, widens the proxy dial margin, and recovers a wedged shared-worker boot instead of leaving the tab stuck. &lt;strong&gt;&lt;code&gt;4396&lt;/code&gt;&lt;/strong&gt; gives the browser visor a local &lt;code&gt;status.skysocks&lt;/code&gt; proxy-status page that is never gated by the interstitial — status must be readable precisely when routes are not up yet — and &lt;strong&gt;&lt;code&gt;4397&lt;/code&gt;&lt;/strong&gt; prefers proxy exits that are already direct transport peers, cutting the time to the first proxied page load.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 30, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-30/</link><pubDate>Sun, 30 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-30/</guid><description>&lt;p&gt;A performance campaign against the route finder, end to end: from per-request graph builds and path-copy storms down to landmark routing that composes far routes through the mesh&amp;rsquo;s natural hubs. Around it, range-splitting extends to HTTPS, routes gain a transport-type exclusion knob, and &lt;code&gt;route calc&lt;/code&gt; learns to report how much disjoint capacity actually exists between two visors.&lt;/p&gt;
&lt;h3 id="skywire-the-route-finder-gets-fast"&gt;Skywire: The Route Finder Gets Fast&lt;/h3&gt;
&lt;p&gt;The route finder answered every source/destination pair with an exhaustive search over the dense transport graph, rebuilt per request. &lt;strong&gt;&lt;code&gt;4378&lt;/code&gt;&lt;/strong&gt; replaces path-copying with parent-pointer BFS, &lt;strong&gt;&lt;code&gt;4380&lt;/code&gt;&lt;/strong&gt; shares one background-refreshed route graph across requests, &lt;strong&gt;&lt;code&gt;4385&lt;/code&gt;&lt;/strong&gt; memoizes weighted route results per graph, and &lt;strong&gt;&lt;code&gt;4386&lt;/code&gt;&lt;/strong&gt; byte-sorts the search keys to kill string-conversion churn. &lt;strong&gt;&lt;code&gt;4390&lt;/code&gt;&lt;/strong&gt; caps the campaign with landmark routing: routes between every node and the highest-degree hubs are precomputed once per graph, and a far pair is answered by composing source-to-hub and hub-to-destination — with a shallow direct search keeping the optimal answer for near pairs and a full search as fallback, so nothing regresses. Composing via different hubs yields disjoint mux legs for free. On the visor side, &lt;strong&gt;&lt;code&gt;4382&lt;/code&gt;&lt;/strong&gt; builds local-route lookups once per discovery snapshot rather than per dial, and &lt;strong&gt;&lt;code&gt;4383&lt;/code&gt;&lt;/strong&gt; pins the transport feed so route calculation stops re-handshaking.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 29, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-29/</link><pubDate>Sat, 29 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-29/</guid><description>&lt;p&gt;The mux goes unidirectional: uploads and downloads no longer have to take the same paths. A dense day around that — the two ends of a route group learn to mirror each other&amp;rsquo;s leg state, two more schedulers and shared-bottleneck detection arrive, the proxy status page grows a two-level route tree and a GPU route graph, and the browser visor&amp;rsquo;s RPC becomes reachable over dmsg. A one-line hash fix at the end of the day unblocked the published development binary for 32-bit ARM.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 28, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-28/</link><pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-28/</guid><description>&lt;p&gt;Forward error correction lands in the packet mux. Of the three named escapes from the in-order-stream wall, FEC is the first to ship: repair packets ride alongside data so a lost packet on one leg is reconstructed at the far end instead of stalling the reorder frontier until retransmit. Alongside it, retransmit timing itself gets modern — a RACK-derived threshold replaces the fixed timer — and the two ends of a route group start telling each other which legs are active.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 27, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-27/</link><pubDate>Thu, 27 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-27/</guid><description>&lt;p&gt;A day about the lifecycle of a mux leg. With per-frame noise aggregating a single stream across legs, the remaining failure modes are legs themselves misbehaving — black-holing, congesting, sitting in a different latency class, or living on the same LAN as their sibling — and today the router learned to admit, demote, replace and retire them deliberately. On top of that: a seamless in-flight route switch for proxy sessions, and a round of housekeeping from the SOCKS listener to the transport-discovery database.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 26, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-26/</link><pubDate>Wed, 26 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-26/</guid><description>&lt;p&gt;A day built around one idea, taken from RFC to on-by-default before it is out: per-frame noise for mux aggregation. Rather than striping a route group&amp;rsquo;s single noise-encrypted byte stream across legs and reordering it back together on the far side, noise is applied per frame, so each frame decrypts on its own and legs aggregate a single stream with no cross-leg reordering at all — the root of the reorder-buffer hazards the data-plane fixes have been chasing. Around it: a routing lock fix, the visor-state fields to actually watch the new path work, and a cluster of CI and skysocks housekeeping. The afternoon kept building on the new path: warm-standby aux legs, live mux control, the no-skip reorder rule that ends a stream-corruption class, and a predictive scheduler.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 25, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-25/</link><pubDate>Tue, 25 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-25/</guid><description>&lt;p&gt;The throughput day. A single-line change — raising the yamux stream window from 256 KB to 16 MB for the mesh&amp;rsquo;s bandwidth-delay product — turns out to be the throughput fix the mux work had been circling: the mesh was window-starved, not CPU- or mux-bound. It lands next to a multi-tunnel aggregation foundation, an adaptive mux that finally converges to the fastest legs in one tick, sharded CXO feeds that let a busy hub&amp;rsquo;s Root fill, and a large package reorganization grouping the deployment services under &lt;code&gt;pkg/deployment&lt;/code&gt;.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 24, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-24/</link><pubDate>Mon, 24 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-24/</guid><description>&lt;p&gt;Today&amp;rsquo;s thread is the transport-discovery feed getting its own dedicated CXO channel so TPD can fill it completely, with a subscriber allowlist gating the service-consumed feeds and the aggregator&amp;rsquo;s node identity bound to TPD&amp;rsquo;s key so gated visors accept it. A survey-key mismatch that had been costing operators their rewards is fixed, the proxy status page gains a bilateral route-group tree with a matching &lt;code&gt;proxy tree&lt;/code&gt; CLI, and an interactive console over the command tree lands.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 23, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-23/</link><pubDate>Sun, 23 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-23/</guid><description>&lt;p&gt;The proxy status page becomes a live instrument today: it pushes updates over a WebSocket control channel and SSE instead of a full-page refresh, folds the per-leg mux table and full routes into one route tree, and stays reachable even when the exit is down. Underneath it a mux aux-leg race (issue #80) is buffered, another CXO publisher freeze — this one from a batch-rollback cache desync — is cured, and an optional in-process dmsg server that shares the visor key lands, default off.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 22, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-22/</link><pubDate>Sat, 22 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-22/</guid><description>&lt;p&gt;The busiest day of the run, on two fronts. A CXO publisher-freeze is diagnosed and closed from several angles — the publisher stops publishing stale history, hydrates best-effort around dangling references, and surfaces its own feed health in &lt;code&gt;visor state&lt;/code&gt;. And the adaptive router gets a composite destination-transport oracle, capacity-weighted distribution, and a set of guardrails that keep it from reusing a transport already in the group or fighting an explicit &lt;code&gt;--direct&lt;/code&gt; flag. The proxy status page grows a full per-leg route with every hop and PK.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 21, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-21/</link><pubDate>Fri, 21 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-21/</guid><description>&lt;p&gt;A large CLI-standardization sweep runs across almost every command group today, fixing small bugs and converging the flag and help vocabulary, and it lands next to a set of route-setup reliability fixes that stop intermittent skynet route drops and apps stuck in &amp;ldquo;starting&amp;rdquo;. The proxy status surface gains a real HTTPS certificate and a chunked live route-setup progress stream, and a route-visualizer scaffold goes in.&lt;/p&gt;
&lt;h3 id="skywire-route-setup-stops-dropping"&gt;Skywire: Route Setup Stops Dropping&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;4078&lt;/code&gt;&lt;/strong&gt; sets up candidate route groups in parallel rather than serially, fixing a steady-connection stall where a slow candidate delayed the whole dial. &lt;strong&gt;&lt;code&gt;4057&lt;/code&gt;&lt;/strong&gt; retransmits the route-group setup handshake to prevent intermittent skynet route drops, and &lt;strong&gt;&lt;code&gt;4051&lt;/code&gt;&lt;/strong&gt; stops a route-setup drop from wedging an app in the &amp;ldquo;starting&amp;rdquo; state, adding a cascade→classic fallback so a failed cascade setup degrades to the classic path instead of hanging. &lt;strong&gt;&lt;code&gt;4081&lt;/code&gt;&lt;/strong&gt; excludes same-LAN peers as routing intermediates for genuine route diversity, and &lt;strong&gt;&lt;code&gt;4079&lt;/code&gt;&lt;/strong&gt; has the &lt;code&gt;adaptive&lt;/code&gt; default hold a warm standby with an asymmetric forward/reverse shape, app-agnostically.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 20, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-20/</link><pubDate>Thu, 20 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-20/</guid><description>&lt;p&gt;The routing-policy work crosses a threshold today: &lt;code&gt;adaptive&lt;/code&gt; becomes the default preset, and a family of conditional presets and a native-Go engine let it run on the TinyGo wasm-visor without a WASM interpreter aboard. Alongside it the CXO treestore gains real self-heal so a publisher can no longer freeze on an evicted object, the mux data plane gets a no-dip hot-swap and a full-window SACK, and the CLI gains a live per-leg mux chart and a one-call &lt;code&gt;visor state&lt;/code&gt; snapshot. The packaging side moves to a rolling per-merge binary and drops the retired &lt;code&gt;stable&lt;/code&gt; channel.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 19, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-19/</link><pubDate>Wed, 19 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-19/</guid><description>&lt;p&gt;The big thread today is a root-cause fix to transport discovery: the transport-discovery service had been reflecting only about 9% of the real transport graph, and the route-finder plans over that view, so it was blind to most of the network. A run of eight fixes traces it to CXO fills breaking over short-lived announce connections and closes the gap from both ends — the publisher makes its feed fill faster and smaller, the aggregator keeps a stable source, and both sides now verify what they publish. Alongside it, an optional route-calculation path sidesteps the discovery service entirely, the mux data plane gets two more fixes, and the performance presets move onto the no-dip engine.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 18, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-18/</link><pubDate>Tue, 18 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-18/</guid><description>&lt;p&gt;Two campaigns reach their point today. Route ranking stops guessing at transport quality by type and starts using &lt;em&gt;measured&lt;/em&gt; throughput and end-to-end latency, in a three-phase build that goes from free passive observation to an active packet-pair probe to ranking that treats the type cost as a mere prior. And the warm-standby mux primitive — a leg that stays alive but parked — lands and is wired through the policy ABI, so &lt;code&gt;rotating-bw&lt;/code&gt; rotates by promoting a warm standby instead of tearing a live leg down mid-stream. Alongside them, an app can finally override the visor-global mux defaults, and the deployment HTTP and CXO surfaces are gzipped.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 17, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-17/</link><pubDate>Mon, 17 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-17/</guid><description>&lt;p&gt;A large day on the multiplexed data plane. A multi-leg mux route group had been establishing cleanly but carrying no aggregated data — mux=1 was fine, adding a healthy second leg black-holed the transfer to zero bytes — and today three localized bugs behind that are found and fixed, so a mux&amp;gt;1 group finally aggregates. In parallel the routing-policy engine gets its compiled WASM presets embedded and dispatched from one bundle with several new dynamic presets, the native mesh proxies gain a branded route-building interstitial, and the code graph is published as a page on the site.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 16, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-16/</link><pubDate>Sun, 16 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-16/</guid><description>&lt;p&gt;A focused day on the browser visor and the vendored forks behind it. The wasm-visor tour gains a real file browser and a set of hardening fixes, its HV-UI caches are pre-warmed at boot so the first visit is instant, the bundled wallet surface is corrected on two fronts, and the hand-copied &lt;code&gt;0magnet&lt;/code&gt; module sources are dropped in favor of importing the forks by their own paths.&lt;/p&gt;
&lt;h3 id="skywire-the-0magnet-forks-imported-not-copied"&gt;Skywire: The 0magnet Forks, Imported Not Copied&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;3951&lt;/code&gt;&lt;/strong&gt; removes the hand-vendored copies under &lt;code&gt;third_party/0magnet&lt;/code&gt; and requires the modules by their own paths. The copies were staging — sources vendored by hand so the browser-terminal work could move without a round trip through another repository — and that trade had stopped paying: they had already fallen behind, &lt;code&gt;xterm-go&lt;/code&gt; and &lt;code&gt;websh&lt;/code&gt; having gained a &lt;code&gt;ResizeObserver&lt;/code&gt; that re-fits the terminal to its container rather than the window, which is exactly what the hypervisor UI needs, since its terminal lives inside a WinBox window. No replace directives are needed — each fork is a module in its own right and resolves normally — and only four files outside the copied trees imported them, none reaching into an &lt;code&gt;internal/&lt;/code&gt; package, so the rewrite is a straight path substitution that also picks up an afero fix narrowing the TinyGo shims to &lt;code&gt;js/wasm&lt;/code&gt; where they belong.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 15, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-15/</link><pubDate>Sat, 15 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-15/</guid><description>&lt;p&gt;Most of today is the browser visor becoming trustworthy to use: the hypervisor-UI tabs that spun forever now render at once, clearnet and mesh browsing stop failing on transient races, and a POST-body corruption that had been silently rewriting every request body is fixed. Underneath it the transport layer sheds two sources of wasted goroutines and one half-open leak, the CXO subscription goes live instead of polling, and the CLI gains two output filters that work on both binaries.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 14, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-14/</link><pubDate>Fri, 14 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-14/</guid><description>&lt;p&gt;A broad day of hardening under two headings: the network visualizer moves onto a WebGL renderer that is a role of the single wasm-visor blob rather than a second binary, and a run of correctness fixes — a runtime CPU peg in the browser visor, the browse-origin routing finally under test, and a lint-and-format sweep that unblocks every open PR. Alongside them the routing-policy library rounds out with three new presets and the vendored forks are synced back to their upstreams.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 13, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-13/</link><pubDate>Thu, 13 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-13/</guid><description>&lt;p&gt;Two threads today, both about a program describing itself honestly to whatever reads it. The larger is the foundation for structured CLI output: &lt;code&gt;skywire cli&lt;/code&gt; learns to emit &lt;code&gt;--help --json&lt;/code&gt; — a machine-readable schema of all 379 commands — and its output helper is replaced by a printer that renders one self-describing value rather than a JSON blob and a hand-written human string that had already drifted apart. In the same pass the transport command&amp;rsquo;s output shape, which existed as three copies that disagreed, is consolidated into one importable type the e2e suite shares. Alongside it, a release-hygiene fix on the mobile side stops the visor&amp;rsquo;s version being stamped from the wrong tag.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>One Toolchain, Two Repositories: A Cross-Repo Front-End Modernization</title><link>https://blog.theskywirenetwork.net/posts/one-toolchain-for-the-hypervisor-ui/</link><pubDate>Wed, 12 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/one-toolchain-for-the-hypervisor-ui/</guid><description>&lt;p&gt;Over the past two weeks, every Angular front-end in the Skycoin and Skywire ecosystem was pulled onto one strict, modern build toolchain — the desktop wallet, the web wallet, the block explorer, and the Skywire hypervisor&amp;rsquo;s &amp;ldquo;manager&amp;rdquo; UI. It happened across two separate repositories, in the same window, converging on a single shared standard. This is the story of that convergence, because the interesting part isn&amp;rsquo;t any one upgrade — it&amp;rsquo;s that four independently-maintained UIs ended up governed by the same rules on purpose.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 12, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-12/</link><pubDate>Wed, 12 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-12/</guid><description>&lt;p&gt;A very large day, on two fronts that rarely land together. The manager UI — the Angular hypervisor front-end — was brought to the same engineering footing as skycoin&amp;rsquo;s three other front-ends in a single coordinated stack: explicit change detection, strict TypeScript with strict templates, correctness-matched ESLint, the esbuild application builder, Angular 22, and a browser smoke check that catches the class of migration bugs a build and a lint and a spec all miss. In parallel the cascade route-setup verification campaign gained the observability and the leg-level reclamation it needs to prove its own correctness, dmsg carrier selection learned to converge and self-heal, and the CLI got several honesty fixes. Underneath it all, the manager UI was also made null-safe end to end. And on the Skycoin side the same wasm-cipher work reached its point: skycoin-lite now stamps both its Go and TinyGo artifacts, returns errors instead of trapping the whole module on a mistyped address, and — the payoff — was lifted out of a &lt;code&gt;main&lt;/code&gt; into a &lt;code&gt;Register&lt;/code&gt; any wasm program can call, so a skywire visor can carry the skycoin cipher, with a transport seam now under the wallet&amp;rsquo;s &lt;code&gt;ApiService&lt;/code&gt; for the node API calls to follow.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 11, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-11/</link><pubDate>Tue, 11 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-11/</guid><description>&lt;p&gt;Today&amp;rsquo;s headline is a measured, fleet-wide efficiency win: a single quiet-feed keepalive that ends a churn pattern which had been re-handshaking healthy CXO connections every ninety seconds across the whole network — and, built on it, moving dmsg client-entry registration off its periodic HTTP-over-dmsg re-PUTs and onto a persistent CXO feed. Both attack the same cost: the Noise + post-quantum handshake that was dominating dmsg-discovery&amp;rsquo;s CPU. Alongside them the browser dmsg carrier finally converges from WebSocket to WebTransport, and the in-tab wasm visor grows a real shell. On the Skycoin side, the skycoin-web wallet&amp;rsquo;s unit-test suite came back from a single working spec to 1146 — reviving the golden-vector check that a browser-restored wallet holds the same coins as a node-restored one — the skycoin-lite wasm cipher stopped swallowing its own panics, and the cipher artifact learned to report the commit it was built from.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 10, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-10/</link><pubDate>Mon, 10 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-10/</guid><description>&lt;p&gt;Yesterday&amp;rsquo;s dmsg-bootstrap-floor RFC named the &amp;ldquo;real prize&amp;rdquo;: generalize the dmsg server&amp;rsquo;s peer-forwarding to &lt;em&gt;any&lt;/em&gt; visor, carried over its own transports, so a visor need not stay attached to public dmsg servers once it has transports of its own. Today that primitive lands and gets wired into the two paths that make it carry real traffic — &lt;code&gt;.skynet&lt;/code&gt; fetches and &lt;code&gt;.dmsg&lt;/code&gt; reach — with a relay-discovery layer robust to a stale or empty transport graph. Alongside it, the real-origin mesh browser reaches its hosted form: mesh sites now open as genuine isolated web origins served entirely through the in-tab visor, behind a single wildcard TLS certificate. Skycoin had its second big day of the window: the front-end toolchain converged onto one shared ESLint base and aligned tsconfig strictness, all three Angular apps adopted OnPush change detection, the code moved to the &lt;code&gt;@ngx-translate&lt;/code&gt; v18 API, and CI now builds, lints and tests every front-end. That shared-ESLint base is the standard skywire&amp;rsquo;s own manager UI was subsequently brought up to match.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 9, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-09/</link><pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-09/</guid><description>&lt;p&gt;Today&amp;rsquo;s work lays the groundwork for a structural change in how the network uses dmsg. For most of Skywire&amp;rsquo;s life a visor stays permanently attached to a star of public dmsg servers, and the deployment services live behind those servers too — a topology that concentrates connection churn and handshake cost onto a handful of hosts. The design landing today reframes dmsg as a &lt;em&gt;bootstrap-only floor&lt;/em&gt;: something a visor leans on to get its first transports, then increasingly bypasses by relaying for its peers over the transports it already has. Two of the four RFC components ship as running code — the idle-session reaper and always-on server relaying — alongside two empirical findings that decide how the deployment feeds eventually move off the dmsg-server star.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 8, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-08/</link><pubDate>Sat, 08 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-08/</guid><description>&lt;p&gt;Mostly reliability work under the hood. A silent first-session publish skip that kept a freshly-booted visor out of dmsg discovery — and blew the e2e suite&amp;rsquo;s time budget waiting for it — was tracked down and fixed. The CXO memory-growth and CPU-saturation seen on the live deployment hosts got three targeted fixes, paired with a server-side change that keeps the SD services feed always servable. On the UI side, the VPN client became a first-class in-place node tab and the clearnet iframe browser gained real reliability and browser parity.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 7, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-07/</link><pubDate>Fri, 07 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-07/</guid><description>&lt;p&gt;A lighter day, with one substantive CXO fix behind it. The blank network-uptime page and empty proxy/VPN server pickers on hypervisor visors were traced to a pair of CXO problems — a cold snapshot read before the first sync, and a per-feed dmsg-port collision — and both were fixed. The mobile SkyDEX screen was taught to follow the app&amp;rsquo;s theme instead of arriving as the one dark page in a light app, and the accumulated golangci-lint debt on develop was cleared so every open PR goes green again.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 6, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-06/</link><pubDate>Thu, 06 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-06/</guid><description>&lt;p&gt;Today the mobile app took center stage. The phone got a real Wallet — SKY, the fiber coins, BTC, and now native Ethereum with ERC-20 tokens and USDT built in — a redesign that gives every screen one visual language, and several passes of polish driven by using it on a device. Underneath, two periodic jobs the phone had been paying for got trimmed, and the phone stopped shipping the deployment&amp;rsquo;s survey whitelist it had no business carrying. On the browser side, the Services-Health tab is now populated and bounded on a wasm hypervisor, guarded against silent DTO drift; and a dmsg server can finally reach its own co-located transit client so its version stops showing blank.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 5, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-05/</link><pubDate>Wed, 05 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-05/</guid><description>&lt;p&gt;A heavy day across the whole stack. The dmsg server fleet learned to serve WebTransport on the socket it already listens on, so browser visors stop being stuck on the wss fallback. The decommissioned standalone Uptime Tracker was purged from every CLI command that still dialed its dead PK, with all uptime queries repointed to the TPD-integrated tracker over CXO. The native and browser edges kept converging — a shared transport-manager builder, a shared service-PK set, and a shared auto-transport policy that finally makes dmsg the genuine last resort on both. On top of that: discovery readouts that show real versions and inferred load, a guided tour that actually walks the UI, and a large mobile push — the phone&amp;rsquo;s Fleet window, SkyVPN over Android&amp;rsquo;s TUN, and a skychat that can move between devices. On the Skycoin repo the day was light: a batch of web-subproject dependency bumps and a README/security-policy pass that brings the project into line with skywire.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 4, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-04/</link><pubDate>Tue, 04 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-04/</guid><description>&lt;p&gt;The day&amp;rsquo;s most important change is a security fix in the shared &lt;code&gt;httpauth&lt;/code&gt; middleware: over dmsg, the caller&amp;rsquo;s identity is now taken from the noise-verified session PK instead of an unverified header, closing an impersonation hole that let any dmsg peer spoof another visor to the address-resolver, transport discovery, service discovery, and the uptime tracker — and it &lt;em&gt;reduces&lt;/em&gt; load while doing it. Alongside it, the hypervisor SPA&amp;rsquo;s long-planned GUI-embedding standardization landed in four steps (a SharedModule, a generic bundle-mount host, the first lazy-loaded feature module, and CDK-portal mounting that retires the self-iframe), the wasm-visor&amp;rsquo;s runtime-config reached parity with native and became editable, the clearnet browser got its search/nav/CSS working over the proxy, and the Android app grew SkyDEX, voice calls, and a shared address book.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>The Header That Lied: Closing a Visor-Impersonation Hole</title><link>https://blog.theskywirenetwork.net/posts/the-header-that-lied/</link><pubDate>Tue, 04 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/the-header-that-lied/</guid><description>&lt;p&gt;Every Skywire visor authenticates itself to the network&amp;rsquo;s core services — the address resolver, the transport discovery, the service discovery, the uptime tracker — with a small HTTP handshake carried by a shared &lt;code&gt;httpauth&lt;/code&gt; middleware. Over the public internet that handshake does real cryptographic work: the caller sends its public key in a &lt;code&gt;SW-Public&lt;/code&gt; header, a one-time &lt;code&gt;SW-Nonce&lt;/code&gt;, and a secp256k1 &lt;strong&gt;signature&lt;/strong&gt; proving it holds the private key for that public key. Forge the header and you fail the signature check. That is the whole point.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 3, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-03/</link><pubDate>Mon, 03 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-03/</guid><description>&lt;p&gt;A heavy day on the reward system: the survey-collection pipeline that had lived as host-only bash (&lt;code&gt;fetch_surveys.sh&lt;/code&gt; + &lt;code&gt;getlogs.sh&lt;/code&gt;) got ported into Go, made a drop-in for the live host, and paired with a new &lt;strong&gt;push&lt;/strong&gt; model where a visor POSTs its own survey to the reward system over dmsg — closing the silent-drop gap where a demonstrably-up visor could earn nothing because a pull snapshot happened to read it offline. Around it: the systray decoupled from the visor process so a background service can be driven by an unprivileged tray, the pty-exec gate was narrowed to self-only so hypervisor control of remote visors works again by default, skynet source-routes got warm-route reuse, skychat gained a dmsg-first auto mode, and the network visualizer started counting every transport type it actually has.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 2, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-02/</link><pubDate>Sun, 02 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-02/</guid><description>&lt;p&gt;The headline today is a one-line divisor fix that retroactively repairs a fleet-wide reward regression: continuously-up visors that had been scoring ~30% daily uptime — below the 75% reward bar — snap back to ~100% the moment the reward server re-reads its stored counts, no fleet update required. Around it, apps got a way to reach a user who isn&amp;rsquo;t looking at them (a visor-global notification hub with an SSE stream, an OS-notify sink, and a &lt;code&gt;hv notify&lt;/code&gt; bridge for headless nodes), a visor learned to quiesce itself without stopping the process, the wasm-visor&amp;rsquo;s clearnet proxy became a first-class configurable app, and skychat&amp;rsquo;s broadcast channels plus a mobile-app skeleton landed.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>The Thirty-Percent Ceiling: A Reward-Uptime Divisor Bug</title><link>https://blog.theskywirenetwork.net/posts/the-thirty-percent-ceiling/</link><pubDate>Sun, 02 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/the-thirty-percent-ceiling/</guid><description>&lt;p&gt;For several weeks, a strange thing was true of the Skywire network: a visor could be online continuously — process up, dmsg connected, reachable, everything green in its own logs — and the reward system would record its daily uptime at almost exactly &lt;strong&gt;30%&lt;/strong&gt;. Rewards require &lt;strong&gt;75%&lt;/strong&gt;. So a node that never went down earned nothing, and its owner had no way to see why. Roughly half the fleet was in this state.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — August 1, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-01/</link><pubDate>Sat, 01 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-08-01/</guid><description>&lt;p&gt;Today&amp;rsquo;s work sits mostly on the operator-facing surface: how a visor is tuned, how it&amp;rsquo;s controlled from the CLI, and how it self-describes. The routing examination continued paying out with a router change that races transport creation against routing over existing transports — so a warm peer connects in half a second instead of paying the full direct-dial latency first. The privacy and routing knobs that had been config-JSON-only got proper &lt;code&gt;autoconfig&lt;/code&gt;/&lt;code&gt;config gen&lt;/code&gt; flags and a tuning guide, a local privilege-escalation vector in RPC-initiated dmsgpty exec was gated behind opt-in, and &lt;code&gt;cli visor app&lt;/code&gt; grew into the app-control superset that &lt;code&gt;proxy&lt;/code&gt; and &lt;code&gt;vpn&lt;/code&gt; can later alias. A stray Mixed-Content bug in the browser&amp;rsquo;s mesh navigation was also fixed.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — July 31, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-07-31/</link><pubDate>Fri, 31 Jul 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-07-31/</guid><description>&lt;p&gt;A dense fifteen-PR day across four fronts. The skychat group feature — a long-standing community contribution — landed with its admission control, encryption hardening, and the last open &amp;ldquo;ask again&amp;rdquo; item finished. The dual-surface divergence campaign reached its conclusion: skychat, the logs content, and the logs window all now render from &lt;em&gt;one&lt;/em&gt; implementation on every surface, with the wasm desktop&amp;rsquo;s WinBox windows hosting the exact same Angular components the native node page uses. A performance push cut wasm-visor time-to-first-transport by more than half and killed the native visor&amp;rsquo;s five-minute autoconnect cold start. And the routing examination began yielding concrete controls — a per-type transport-creation policy, a shared cross-network fallback primitive, and a fix for a browser proxy that was dying on a two-route mux.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — July 30, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-07-30/</link><pubDate>Thu, 30 Jul 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-07-30/</guid><description>&lt;p&gt;The throughline today is the browser dmsg edge. A reachability campaign run down over the last stretch culminates in a fix to the deepest issue: a wss-only browser client was silently falling back to raw TCP it can&amp;rsquo;t dial, dead-ending connections that should have rendezvoused over WebSocket to the next server. That fix comes with a two-tier headless test harness so the browser edge — which the compile lane can&amp;rsquo;t cover — is finally regression-gated, plus an operator-run health probe that would have auto-caught the day&amp;rsquo;s real wss outage. The wallet also stopped shipping an 11MB copied tree and now serves straight from the vendored skycoin module, and the manager UI&amp;rsquo;s dependabot backlog was cleared in one batch. It was also the biggest Skycoin day in the window: all three Angular front-ends — the desktop wallet, skycoin-web, and the explorer — moved to Angular 22 and had strict TypeScript with &lt;code&gt;strictTemplates&lt;/code&gt; turned on, new wallets began defaulting to bip44 (HD, multicoin), and a round of gnet and untrusted-input hardening landed underneath.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — July 29, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-07-29/</link><pubDate>Wed, 29 Jul 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-07-29/</guid><description>&lt;p&gt;Two threads today. The larger is a test-coverage pass over skychat that, by exercising the previously-untested code, turned up and fixed four latent bugs — including a data race in a shared CXO package and an empty-string public key that reached five endpoints as a real peer. The smaller thread is a run of wasm-hypervisor UI polish: the onboarding tour became non-blocking and told the real dmsg-carrier story, the wallet config overlay that had collapsed to an unusable strip was fixed, and the node info card now shows &lt;em&gt;how&lt;/em&gt; a visor reached each dmsg server. Skycoin, meanwhile, spent the day on dependency maintenance ahead of the front-end toolchain work to come.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — July 28, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-07-28/</link><pubDate>Tue, 28 Jul 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-07-28/</guid><description>&lt;p&gt;The urgent item today is a reward regression the previous release introduced: after v1.3.89 restored the reward heartbeat, roughly half the fleet was recording only ~30% uptime while actually up — below the 75% reward threshold, so earning nothing. The fix runs the failure down to heartbeat &lt;em&gt;under-delivery&lt;/em&gt; rather than any server-side scoring bug, and adds bounded backfill so flaky delivery no longer maps one-to-one to sparse uptime. Around it, the TinyGo wasm-visor got unwedged (a reflection panic that only fired inside the HV worker), the Bitcoin wallet&amp;rsquo;s electrum backend moved to where every other coin&amp;rsquo;s node lives, a flaky routing test got a real correctness fix behind it, and &lt;strong&gt;v1.3.91&lt;/strong&gt; was cut.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — July 27, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-07-27/</link><pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-07-27/</guid><description>&lt;p&gt;The skychat convergence hit full stride today — eighteen PRs, most of them landing the payoff of yesterday&amp;rsquo;s seams. The centerpiece is a &lt;strong&gt;single shared DM controller&lt;/strong&gt; that both the native app and the browser wasm visor now run on, deleting hundreds of lines of duplicated connection, read-loop, and send logic that had drifted between the two. With one core in place, the DM feature set that used to be implemented twice (or not at all on one surface) landed uniformly: delete-for-everyone, WhatsApp-style delivery ticks, and the quoted-reply UI reached both visors and both chat UIs at once. The day also brought a large browser-skychat feature merge, a config-regen fix that had been quietly making newly-shipped apps unreachable, and an RFC on serving SkyDEX as a plain website over dmsg.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — July 26, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-07-26/</link><pubDate>Sun, 26 Jul 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-07-26/</guid><description>&lt;p&gt;Today is the start of a multi-day skychat convergence push (tracked in #3596): the native app and the browser wasm visor have long carried two separate copies of the same chat machinery, and they&amp;rsquo;ve been drifting. The work begins at the two seams that let the rest converge — a wire format that carries quoted replies to the &lt;em&gt;recipient&lt;/em&gt; rather than just the sender, and a history store that finally compiles under &lt;code&gt;GOOS=js&lt;/code&gt; so the browser visor can adopt the same persistence the native app uses. Alongside the chat work, the TinyGo wasm-visor gained a runtime toolchain switch for A/B validation, and the packaging docs got a much-needed page on how installed nodes actually update themselves.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — July 25, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-07-25/</link><pubDate>Sat, 25 Jul 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-07-25/</guid><description>&lt;p&gt;A short day, spent making the browser hypervisor tell the truth. The AU miner owner reported that the wasm hypervisor&amp;rsquo;s node list looked broken next to the native one — managed visors showing &lt;code&gt;Total: 0&lt;/code&gt; transports, a single flat list where the native HV renders per-hypervisor clusters, and the whole thing flickering as visors blinked offline and back. All three are the same underlying gap: the wasm HV was rendering from partial mirror data over a marginal dmsg link. Today&amp;rsquo;s work closes those, then rebuilds the served blob so the fixes actually reach the PWA, and the network visualizer gets a small cosmetic win.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — July 24, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-07-24/</link><pubDate>Fri, 24 Jul 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-07-24/</guid><description>&lt;p&gt;Today&amp;rsquo;s work is a rescue. For days the fleet&amp;rsquo;s reward uptime had silently collapsed — hundreds of visors that were plainly online were recording almost no uptime and earning nothing for it — and the outage stayed invisible because every layer that could have shouted about it was logging at Debug or discarding the error entirely. The investigation ran the failure down to two independent causes, both fixed: the reward-critical TPD heartbeat had been quietly disabled when the standalone uptime tracker was decommissioned, and the visors that &lt;em&gt;were&lt;/em&gt; heartbeating were losing an httpauth nonce race that 401&amp;rsquo;d most of their requests. Around those two fixes sits a ring of hardening — the residual TPD memory leaks closed, latent unbounded-timeout and unbounded-map bugs guarded, and the silent-failure logging that hid all of it turned up to Warn. The bottom line for operators: &lt;strong&gt;current-fleet visors must update to v1.3.89 to earn rewards correctly&lt;/strong&gt; — the heartbeat fix is visor-side, and the release raises the auto-incrementing version floor. Also today, the &lt;code&gt;.dmsg&lt;/code&gt;/&lt;code&gt;.skynet&lt;/code&gt; LAN gateway got a config-safe path so one board can serve a whole home-router LAN. On the Skycoin side, the day was dependency housekeeping — the open Dependabot PRs batched into one branch.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — July 23, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-07-23/</link><pubDate>Thu, 23 Jul 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-07-23/</guid><description>&lt;p&gt;Two threads today, both about stripping dependencies out from under a running system. The VPN router&amp;rsquo;s control plane started moving off shell-outs to &lt;code&gt;ip&lt;/code&gt; and &lt;code&gt;iptables&lt;/code&gt; and onto native Go — netlink and nftables spoken directly to the kernel — which is the first real step toward shipping Skywire as a dependency-free gokrazy appliance that carries no iproute2 or userland at all. Separately, the long-running TPD reward outage got its first concrete fix: the CXO aggregator that receives every visor&amp;rsquo;s Roots was never pruning the superseded ones, and on the production TPD host that was leaking toward OOM at roughly a gigabyte a day.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>Skywire Development Update — July 22, 2026</title><link>https://blog.theskywirenetwork.net/posts/dev-update-2026-07-22/</link><pubDate>Wed, 22 Jul 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/dev-update-2026-07-22/</guid><description>&lt;p&gt;Today Skywire cut &lt;strong&gt;v1.3.88&lt;/strong&gt;, and the release&amp;rsquo;s headline is the VPN router: over the last stretch it graduated from an on-the-bench prototype into a fully configurable, documented feature that any supported board can run. The bigger leap that rode in with it is the &lt;strong&gt;mesh gateway&lt;/strong&gt; — a LAN device behind the router can now reach a &lt;code&gt;.dmsg&lt;/code&gt; or &lt;code&gt;.skynet&lt;/code&gt; service by name, with no per-device setup and no SOCKS proxy, because the router resolves the name to a synthetic IP and transparently proxies the connection over the mesh. Underneath the features, a cluster of VPN reliability bugs got run down: a port collision that made vpn-server unstartable on every hypervisor-connected board, and two tunnel-exemption bugs that left the VPN silently dead on common transport types. The dmsg deployment also split two servers onto new hosts. (The VPN router gets its own dedicated feature article — this daily covers the day&amp;rsquo;s router PRs at a normal pace and points you there for the full story.)&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item><item><title>The Skywire VPN Router</title><link>https://blog.theskywirenetwork.net/posts/the-skywire-vpn-router/</link><pubDate>Wed, 22 Jul 2026 00:00:00 +0000</pubDate><guid>https://blog.theskywirenetwork.net/posts/the-skywire-vpn-router/</guid><description>&lt;p&gt;Running a VPN has always been a per-device chore. You install a client on the laptop, another on the phone, a third on the tablet, and you hope the smart TV and the game console — which won&amp;rsquo;t run a client at all — simply do without. Skywire&amp;rsquo;s &lt;code&gt;vpn-client&lt;/code&gt; was no different: it protects the one machine it runs on, and nothing else on the network.&lt;/p&gt;
&lt;p&gt;Today&amp;rsquo;s release, &lt;strong&gt;v1.3.88&lt;/strong&gt;, changes the unit of protection from a device to a &lt;em&gt;network&lt;/em&gt;. The new &lt;strong&gt;&lt;code&gt;vpn-router&lt;/code&gt;&lt;/strong&gt; app turns a spare Linux board — a skyminer, a Raspberry Pi, any SBC with two network interfaces — into a plug-in privacy router. Everything behind it, wired or wireless, gets an address by DHCP and has its traffic NAT&amp;rsquo;d into the Skywire mesh VPN, with &lt;strong&gt;no per-device configuration&lt;/strong&gt;. The phone that joins its WiFi doesn&amp;rsquo;t know Skywire exists; it just has a different public IP.&lt;/p&gt;</description><enclosure url="https://blog.theskywirenetwork.net/img/skywire-the-next-internet.png" length="194882" type="image/png"/></item></channel></rss>