<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>FutureOS Engineering</title>
    <link>https://future-os-blog.github.io/</link>
    <description>Engineering notes from the FutureOS team: agent internals, the RPC wire contract, loop orchestration, and the desktop/mobile/terminal surfaces built on top of them.</description>
    <language>en</language>
    <lastBuildDate>2026-09-21</lastBuildDate>
    <atom:link href="https://future-os-blog.github.io/feed.xml" rel="self" type="application/rss+xml" />
  <item>
    <title>Why we chose gRPC, and not ACP</title>
    <link>https://future-os-blog.github.io/posts/why-grpc-not-acp.html</link>
    <guid isPermaLink="true">https://future-os-blog.github.io/posts/why-grpc-not-acp.html</guid>
    <pubDate>Mon, 21 Sep 2026 00:00:00 +0000</pubDate>
    <description>The question came up while we were wiring the desktop to the agent: why are we hand-rolling a gRPC protocol when the Agent Client Protocol (ACP) already exists for exactly the &quot;UI talks to an agent&quot; problem? It was a…</description>
    <category>protocol</category>
    <category>grpc</category>
    <category>acp</category>
    <category>desktop</category>
    <category>architecture</category>
  </item>
  <item>
    <title>Screenshotting a desktop app with no display</title>
    <link>https://future-os-blog.github.io/posts/screenshotting-a-desktop-app-with-no-display.html</link>
    <guid isPermaLink="true">https://future-os-blog.github.io/posts/screenshotting-a-desktop-app-with-no-display.html</guid>
    <pubDate>Mon, 14 Sep 2026 00:00:00 +0000</pubDate>
    <description>Every product screenshot and demo video in FutureOS — including the figures in this blog — is rendered by driving the real React UI in headless Chrome against mock data. No display, no running app, no hand-drawn mockups. The same harness doubles as a UI regression tool.</description>
    <category>desktop</category>
    <category>tooling</category>
    <category>internals</category>
  </item>
  <item>
    <title>Sandboxing an agent on macOS, Linux, and Windows</title>
    <link>https://future-os-blog.github.io/posts/sandboxing-an-agent-on-three-oses.html</link>
    <guid isPermaLink="true">https://future-os-blog.github.io/posts/sandboxing-an-agent-on-three-oses.html</guid>
    <pubDate>Sun, 06 Sep 2026 00:00:00 +0000</pubDate>
    <description>The product promise is one line: the agent should not touch what you did not allow. Delivering it takes three completely different OS mechanisms — Seatbelt, Bubblewrap, and a restricted token with NTFS ACLs — and an honest list of places where the promise cannot be fully kept.</description>
    <category>agent</category>
    <category>desktop</category>
    <category>internals</category>
  </item>
  <item>
    <title>End-to-end encryption between your phone and your desktop</title>
    <link>https://future-os-blog.github.io/posts/phone-desktop-e2ee.html</link>
    <guid isPermaLink="true">https://future-os-blog.github.io/posts/phone-desktop-e2ee.html</guid>
    <pubDate>Sat, 29 Aug 2026 00:00:00 +0000</pubDate>
    <description>FutureOS Mobile controls sessions on your desktop over a NATS relay. The relay is on the public network, so it has to be treated as hostile — able to drop, reorder, replay and fabricate messages, but never able to read a command or forge one. Here&#x27;s how the v2 channel achieves that with a Noise handshake and a ChaCha20-Poly1305 record layer.</description>
    <category>agent</category>
    <category>mobile</category>
    <category>desktop</category>
    <category>security</category>
    <category>e2ee</category>
  </item>
  <item>
    <title>Loop engineering: making long-running agent work durable</title>
    <link>https://future-os-blog.github.io/posts/loop-engineering.html</link>
    <guid isPermaLink="true">https://future-os-blog.github.io/posts/loop-engineering.html</guid>
    <pubDate>Sat, 22 Aug 2026 00:00:00 +0000</pubDate>
    <description>A chat loses context. future-loop turns &quot;keep an eye on this for a week&quot; into a durable goal — a todo graph, human gates, per-step evidence, and a verifiable definition of done that survives sessions, restarts, and parallel workers. This is how the control plane works, and how it carried the Matilda tiling run.</description>
    <category>agent</category>
    <category>loop</category>
    <category>multi-agent</category>
    <category>architecture</category>
  </item>
  <item>
    <title>Solving a combinatorics problem with a team of four LLMs</title>
    <link>https://future-os-blog.github.io/posts/solving-combinatorics-with-four-llms.html</link>
    <guid isPermaLink="true">https://future-os-blog.github.io/posts/solving-combinatorics-with-four-llms.html</guid>
    <pubDate>Thu, 13 Aug 2026 00:00:00 +0000</pubDate>
    <description>We gave a 16×16 tiling problem to four different models working in parallel under the future-loop control plane. Over 4.5 hours and 15 rounds the answer went from 30 to a verified 21 — and the two decisive breaks came from different models disagreeing with each other, not from any single model reasoning harder.</description>
    <category>agent</category>
    <category>loop</category>
    <category>multi-agent</category>
    <category>llm</category>
    <category>experiments</category>
  </item>
  <item>
    <title>Context compaction, measured: FutureOS vs Codex vs OpenCode</title>
    <link>https://future-os-blog.github.io/posts/context-compaction-measured.html</link>
    <guid isPermaLink="true">https://future-os-blog.github.io/posts/context-compaction-measured.html</guid>
    <pubDate>Tue, 04 Aug 2026 00:00:00 +0000</pubDate>
    <description>We ran three context-compaction strategies through the same 178-question exam. FutureOS kept 83% of the values that had been compacted away; OpenCode kept 47%, Codex 38%. The difference isn&#x27;t a better summary — it&#x27;s what each system decides a compaction should keep.</description>
    <category>agent</category>
    <category>compaction</category>
    <category>llm</category>
    <category>experiments</category>
  </item>
  </channel>
</rss>
