FractalOS 1.0 Release: Swarms, Mesh Networking, and the Living Terminal

October 6, 2026

Github Repo

When we reached version 1.0 last week, FractalOS could boot as a physical appliance on a Raspberry Pi and toggle GPIO pins directly from our Python kernel. But a computer sitting alone in a room is only half the story. Over the past week, we turned FractalOS into a collaborative, decentralized operating system that talks across devices, orchestrates AI agent swarms, and provides a desktop-grade workstation experience with a full community package manager.

Connecting the Dots: The Peer-to-Peer Mesh

Modern operating systems rely heavily on central servers and cloud accounts. FractalOS takes the opposite road: machines discover each other locally over WebRTC and browser broadcast channels without intermediaries.

You can now attach to a friend's live terminal session across the LAN with attach, send broadcast messages to everyone on the network with wall, copy files peer-to-peer with mesh-cp, or play interactive turn-based multiplayer terminal games. There is no server to configure and nothing to sync to the cloud. You open the terminal, and you are part of the mesh.

Agent Swarms and Physical Autopilot

Samwise, our built-in terminal language model agent, has grown up. In earlier versions, Samwise was confined to answering questions or executing validated plans on a single file system. Now, Samwise can act across the mesh.

If one machine is reading sensor pins on a Raspberry Pi and another has a faster model or free compute, Samwise on the first node can delegate tasks to a peer node's agent, await the synthesized answer, and react in the physical world. To make sure an autonomous agent doesn't run wild on your hardware, we built a strict voltage budgeting system: remote actions, hardware toggles, and destructive operations have defined safety costs and require explicit operator confirmation before they execute.

A Workstation You Can Actually Use

A real operating system needs more than a single scrolling prompt. We added a built-in terminal multiplexer that lets you split panes horizontally and vertically (split-h and split-v), complete with keyboard shortcuts to hop between active shells.

Our graphical and TUI applications—the text editor, the paint tool, the process monitor, and the adventure game—no longer force a modal overlay. They now live in draggable, resizable floating windows that dock cleanly beside your shell sessions. Along the top, a persistent status bar displays active background jobs, mesh peer count, system notifications, and audio state. You can drag and drop files from your host operating system directly into the terminal window to import them into the virtual file system, or use pbcopy and pbpaste to share text seamlessly with your system clipboard.

A Thriving, Sandboxed Package Ecosystem

To ensure FractalOS can grow far beyond what we write ourselves, we built a complete package management toolchain (pkg). Developers can scaffold a starter template with pkg init, validate functions and metadata with pkg validate, package everything into verified archives with pkg pack, and publish them locally or broadcast them over the mesh network with pkg publish --mesh.

The package manager resolves nested dependencies recursively, prevents circular installation loops, and loads necessary Pyodide WebAssembly wheels directly into the runtime without requiring a system reboot. To celebrate, we added a standard library of community classics—fortune, cowsay, cal, and banner—that work seamlessly with shell pipes like fortune | cowsay.

Because running community code in a browser requires vigilance, every package is cryptographically verified with SHA256 checksums at install time and before execution. If someone alters a package file on disk, the kernel refuses to run it. Packages declare their required permission scopes (like network, root, or hardware access), and anything requesting elevated capabilities requires explicit operator trust (--trust). A built-in security audit tool (pkg audit) inspects package source code using static syntax analysis before you ever run it.

Packaging the Official Release

With all Phase 7 milestones complete and every test suite passing across both browser and desktop modes, FractalOS is ready for its first official release. Whether you open it in a tab or flash it onto a dedicated device, it offers a glimpse of a different computing paradigm: personal, playful, resilient, and built from first principles.

FractalOS 1.0: Breaking Out of the Browser

September 30, 2026

Github Repo

Today we reached version 1.0! The project started as a weird experiment—a full UNIX-like terminal and Python environment entirely isolated in the browser via WebAssembly. But today, we broke out of that sandbox and brought it into the physical world.

We implemented the Fractal Pi Appliance architecture. By using Neutralinojs in portable mode on top of a bare-metal Linux environment (like a Raspberry Pi running an Openbox kiosk), FractalOS can now act as the primary interface for physical hardware. We wrote a universal build script that auto-detects architecture (x86_64 or ARM), sets up the display server, and drops you straight into the FractalOS full-screen terminal on boot.

Because the kernel runs in a browser sandbox, it couldn't naturally talk to physical hardware. So, we built an asynchronous bridge that allows the Pyodide environment to synchronously call out to the host system. This means you can now natively toggle Raspberry Pi GPIO pins directly from the FractalOS terminal by simply typing gpio write 18 1!

Finally, we made peer discovery entirely automatic. During the first-boot onboarding screen, you can check a box to tell the OS to spawn its own WebSockets signaling server silently in the background, instantly turning that node into the mesh network hub for all other devices on the LAN. And to cap it off, we launched a community package registry, proving our dynamic VFS package manager by writing an interactive, turn-based ASCII Tetris game.

FractalOS Dev Diary: Samwise Learns Some Manners

September 27, 2026

Github Repo

Four days ago FractalOS was a pile of ideas that had never been run end to end. Today every automated test passes, a local language model can drive the whole system through ten graded tasks, and the list of known holes is short enough to read in one sitting.

This entry covers the last round of work and where things stand.

Learning from the Last Mistake

Yesterday's testing showed that the smaller model, llama3.1:8b, had a habit worth breaking. Asked to delete a folder, it would step inside it and delete everything there, leaving an empty folder behind. The plan was perfectly legal, so none of the safety checks objected. It just didn't do what was asked.

Samwise's instructions now say plainly: delete a directory by its name, never by stepping into it and deleting *, and always use full paths.

Samwise also has a short-term memory for failure. When a step goes wrong, the error is kept, and the next time the model is asked for a plan it is told, in effect, "this is what went wrong last time; don't do it again." A successful run clears the note. Internally we call this scar tissue.

Every AI Command Gets Tested

Samwise isn't the only part of FractalOS that talks to a model. remix, storyboard and the Chidi document reader do too, and until now nobody had ever run them against a real one.

The agent test run now includes all three. The latest run against llama3.1:8b passed all ten tasks. That model varies from run to run, so one clean sweep is encouraging rather than conclusive; more runs will tell.

Choosing Your Own Model

Until now the AI provider and model lived in a config file most people would never find. The first-run setup now has an AI step: pick Ollama (local) or Gemini (cloud), and optionally a model name. Samwise Chat and Chidi gained a model picker that lists the models your Ollama install actually has.

The Gemini model is no longer hard-coded either, though it is still the one path nobody has tested: we have never run FractalOS with a Gemini key.

Sweeping Up

Where the Project Stands

Every automated suite is green:

What has not been checked is just as important:

Next: Hands on the Apps

The agent has had most of the attention this week. Next it's time to sit down with the apps themselves, one at a time, finish the model-selection work, and get a Gemini key through the full test run.

Two bigger questions are still open: what "long-term memory" should mean for Samwise, and whether the agent should eventually be allowed any command a user can run, with the voltage brake as its only limit.

FractalOS Dev Diary: Closing the Back Doors

September 26, 2026

Github Repo

When you give a language model a shell, the interesting bugs are not the ones where something crashes. They are the ones where something works that shouldn't. Today was mostly about those.

A Chat Window That Could Run Commands

Samwise Chat is the conversational side of Samwise: you type, the model answers. Under the hood, the chat app pasted your message into a shell command line and ran it.

That meant a message containing $(touch hello) didn't reach the model at all. The shell ran it first and created the file. $HOME was replaced by your home directory, and quotation marks disappeared.

Messages now travel to the kernel as a sealed package of data, never as part of a command line. What you type is exactly what the model reads. This is now a rule for every app: user text never goes on the command line.

A Rehearsal That Wasn't

samwise --dry-run is supposed to show what Samwise would do without doing it. In practice agent mode ran the plan anyway, and autopilot ignored the flag entirely.

Planning and doing are now two separate steps inside Samwise. A dry run stops after planning and reports the plan, which steps would ask permission first, the plan's voltage, and whether the safety brake would engage. It runs nothing, even when combined with --force.

Waiting Forever

If the model server stalled, Samwise stalled with it, forever. The timeout in the code had never done anything: the function it was passed to quietly ignores that setting.

Model calls now give up after two minutes by default, adjustable in /etc/ai.conf. The error messages also got a lot more useful. Instead of a generic failure, you now see things like "can't reach Ollama at localhost:11434", or a reminder to run ollama pull for a model you don't have.

A Second Chance for a Bad Plan

FractalOS checks every plan before running any of it. Until today, a rejected plan was simply the end of the conversation. Now the model is told why its plan was rejected and gets up to two more tries.

The safety brake is the exception. A plan that is stopped for being too destructive is not retried. Asking again until the model finds a way around the brake would defeat the purpose of having one.

Small Things That Matter

How Each Fix Was Proven

Every fix today came with a test, and every test was checked the hard way: put the bug back and confirm the test fails. A test that passes either way proves nothing.

Running the agent tests over and over also showed something worth knowing. The larger model, gemma4:12b, passed all seven tasks every time. llama3.1:8b scored between five and seven. Its misses were bad plans of its own, not faults in the OS, and that set up tomorrow's work.

FractalOS Dev Diary: Handing a Model the Keys

September 25, 2026

Github Repo

FractalOS was always meant to be an operating system with a language model at the centre. Today, for the first time, a real model actually drove it.

The Agent That Never Acted

The AI command (then called gemini, now samwise) has two modes. Autopilot plans and runs commands on its own, watched by a safety brake. Agent mode plans, asks permission for risky steps, runs the plan, then summarises what it found.

While giving the agent access to the new python command, I found that agent mode had never run a single plan. The code that reads a numbered plan out of the model's reply was broken by 58 doubled backslashes, a copy-and-paste accident, so no plan line ever matched. The model's plan was simply handed back as the answer. The same accident had put literal \n characters into every prompt sent to Ollama.

A Test Track for the Agent

To stop guessing, I built a test track: seven tasks such as "create a file", "move this into a folder" and "delete this directory". Each run is graded by looking at what actually changed in the file system, not by what the model says it did. Every prompt, reply and timing is saved to a transcript.

A stand-in model server answers with canned plans, so the plumbing can be tested without a real model. That alone found two bugs:

Meeting Real Models

Then came the real thing, with two local models through Ollama.

gemma4:12b "thinks" before answering by default, and it spent its entire output budget thinking: 3,296 tokens, 74 seconds, and an empty reply. With thinking switched off, the same request produced a clean two-line plan in one second.

llama3.1:8b was quick and obedient in autopilot, but chatty in agent mode. The OS tried to run its explanations as commands.

Neither model was the real problem, though. The real problem was what they revealed:

Rebuilding the Brakes

Each of those is now fixed:

  1. Plans are checked in full before the first step runs
  2. Execution stops at the first failed step
  3. The brake prices the operation itself, whatever its spelling
  4. Before autopilot writes anything, it saves a real, verified checkpoint of your home directory
  5. Agent mode picks up the plan where it left off after you say "yes"
  6. The planner sees exactly the tools it may use

By the end of the day both models passed all seven tasks, and the AI command had its new name: samwise.

FractalOS Dev Diary: Clearing the Attic

September 24, 2026

Github Repo

FractalOS sat quietly for most of the year. Coming back to it, the first job was not new features. It was making the project something a person (or an AI coding agent) could pick up, understand, and trust.

415 Megabytes of Python We Didn't Use

FractalOS runs a real Python interpreter inside the browser, using Pyodide. The project carried a full copy of it: 413 files, 415 MB, and hundreds of packages the OS never loads.

It now carries 9 files and 16 MB: the interpreter itself plus the one package the kernel needs, the cryptography library used for passwords. It is also newer, moving from Python 3.13 to Python 3.14.

The old copies still lived on in the git history, so a fresh clone downloaded 335 MB. With some careful history surgery, a clone is now about 9 MB.

Writing Things Down

The project now has a small set of working documents:

This diary is the newest member of that family.

Tests That Run Themselves

FractalOS already had a 1,400-line diagnostic script that exercises its commands from inside the OS. The catch was that someone had to open the OS, log in and run it by hand.

A headless browser now does all of that: it boots FractalOS, completes the first-run setup, logs in as root, runs the script, and grades every line. First result: 40 passed, 0 failed, and nothing in the kernel needed changing for Python 3.14.

A quick smoke test and a structure check joined it. The structure check catches the most common mistake in this codebase: adding a file and forgetting to register it. The list of kernel files is now generated, not typed by hand.

Python Inside the OS

The README had promised Python inside FractalOS for a while. Now it's real. python script.py, python -c "...", or piping code in all work, running in the same interpreter as the kernel.

open() reads and writes the FractalOS file system and respects its permissions. A step budget stops a runaway loop before it can freeze the page.

Building it turned up an old bug. When JavaScript passed "nothing" to Python, Python didn't see nothing: it saw a special stand-in object. Commands that asked "was I given any input?" got the wrong answer, and wc with no input crashed. It is now converted once, at the front door, for every command.

FractalOS Dev Diary: It's Alive!

December 27, 2025

Github Repo

FractalOS is an operating system that runs in a web browser, built around a simple idea: instead of memorising commands, you talk to the system, and a language model helps it act on your behalf.

Two Halves, One Contract

The heart of FractalOS is a Python kernel running inside the browser. It owns everything that matters: the file system, users and permissions, processes, and roughly 120 commands.

The JavaScript side is the stage manager. It draws the terminal and the windows, plays sounds, and handles the browser.

The two meet through what I call the effect contract. When the kernel wants something only the browser can do, like playing a chord or opening an editor, it doesn't reach into the page. It returns a short description of the effect it wants, and the front end carries it out. This keeps the logic testable and the display replaceable.

The First Apps

The first public version, in November, arrived with a text editor, a paint program, a process viewer, a text adventure engine, a BASIC interpreter, and Chidi, a reader that can answer questions about your documents. It can also run as a desktop app through Neutralinojs, saving to real files instead of browser storage.

BoneAmanita Takes the Wheel

The big addition over the holidays was an autopilot. You describe what you want, and the model plans and runs the commands itself.

Letting a model loose on a file system needs a conscience, so every plan is given a "voltage": a risk score. Listing files is low voltage; deleting them is high. Past a threshold, autopilot refuses to continue unless you force it.

forge, the file-writing command, was reworked for the model's use, so it can write whole files cleanly instead of wrestling code through echo and redirection.

What Comes Next

It runs. The autopilot plans, the kernel executes, and the terminal shows the result. Whether all of it works as intended, and whether the brakes hold when a real model is driving, is a question for proper tests.