v0.2 · prototype

Chaossynergy

The OS is the agent interface.

immutable · agent-native · atomic

latest

Chapter 26 — Local inference and the agent toolchain. Two new ADRs extend Chaossynergy with offline inference and on-demand coding agents. Read on onlyascii.dev

The journey starts with Chapter 25 — the philosophy, the architecture decisions, and the alpha prototype.

philosophy

Chaossynergy is an operating system shaped around one purpose: being the substrate that an AI agent lives in and operates through. Not Linux with an assistant installed. Not a CLI tool that talks to an LLM. An entire OS designed for human-AI collaboration.

The name is a contradiction made real. Chaos — the unpredictable, emergent behaviour of multiple agents, containers, and runtimes working in parallel. Synergy — the whole working together as one system, directed by a single conductor.

The substrate is sacred and dumb

Immutable, atomic, minimal. An appliance that exists only to boot the agent. If the agent breaks, delete the container. The host is untouched.

The agent is disposable

Hermes runs in a distrobox container with its own state. Break it? distrobox rm agent. Fresh runtime in 30 seconds.

Safety by construction

bootc provides atomic OS updates at the kernel level. Distrobox isolates the agent at the user level. One layer can fail and the other still holds.

architecture

Six integrated layers, one unified system. Everything the agent needs lives in a disposable distrobox container. The host OS stays minimal.

L0

Host OS (minimal)

Bluefin LTS (CentOS Stream 10) — just herdr, systemd services, GDM auto-login. No browsers. No Node.js. No Hermes. An appliance.

L1

herdr Multiplexer

Fullscreen Ptyxis terminal on boot. Agent-aware sidebar. Every shell auto-enters the distrobox via the chaossynergy-shell wrapper.

L2

Agent Container

Fedora distrobox with Chromium, Node.js, Hermes, pass. Shared home directory so the agent sees your projects and configs.

L3

Recovery Shell

Shift-at-boot emergency root shell. If the agent or multiplexer fails, you always have a way back in.

L4

Inference Runtime

Dedicated distrobox for local LLM inference. Mutually exclusive engines: llama.cpp (port 8080) or vLLM (port 8000). Auto-downloads GGUFs via HuggingFace. RTX 5090 32GB VRAM.

L5

Agent Toolchain

Isolated distroboxes for OpenCode, Pi (pi.dev), and Claude Code. Each is a self-contained coding agent. Lazy-installed on first use via ujust.

data flow (planned)
Hermes ◄──► npx @browsermcp/mcp ──WebSocket──► Chromium Extension
  │                                               │
  └──► pass show hermes/openrouter      browserpass fills login forms
       ~/.password-store/ ◄──── browserpass-native ◄──── browserpass ext

agents & inference

Chaossynergy ships with ujust commands for setting up coding agents and local LLM inference. All run in isolated distrobox containers. No cloud dependency.

Coding agents

~ $
$ ujust setup-opencode      # OpenCode distrobox
$ ujust setup-pi            # Pi (pi.dev) distrobox
$ ujust setup-claude        # Claude Code distrobox
$ ujust list-agents         # List installed agents
$ ujust remove-agent        # Remove an agent container

Local inference

~ $
$ ujust setup-inference-llama  # llama.cpp (port 8080)
$ ujust setup-inference-vllm   # vLLM (port 8000)
$ ujust inference-model         # Switch quant (Q4_K_M / Q8_0)
$ ujust inference-status        # Check inference status
$ ujust inference-logs          # Tail inference logs
$ ujust inference-restart       # Restart inference engine
$ ujust inference-stop          # Stop inference engine

Both inference engines are mutually exclusive due to VRAM contention (RTX 5090 32GB). Running ujust setup-inference-vllm stops llama.cpp first, and vice versa. Default model: bottlecapai/ThinkingCap-Qwen3.6-27B-GGUF:Q4_K_M (or :Q8_0).

quick start

~ $
$ just build
$ just build-qcow2
$ just run-vm-qcow2

Or deploy from the registry:

~ $
$ sudo bootc switch ghcr.io/dark5un/chaossynergy:latest
$ sudo systemctl reboot

On first boot, press n in herdr to create a workspace, then type distrobox enter agent.

architecture decisions

roadmap

Chaossynergy is in alpha. The foundation works. It boots, builds, and connects. Here is where we are heading:

done

Alpha prototype

Bootable image boots into GNOME, launches herdr, connects to agent container. CI builds pass. Images published to GHCR.

done

Agent toolchain

OpenCode, Pi, and Claude Code in isolated distrobox containers. Each is a self-contained coding agent, lazy-installed on demand via ujust.

done

Local inference

Dedicated inference distrobox with llama.cpp (port 8080) or vLLM (port 8000). Auto-downloads GGUFs via HuggingFace. Mutually exclusive engines managed by ujust.

next

Bootable disk images

qcow2 and ISO builds via bootc-image-builder. Install on bare metal or VM without needing an existing Bluefin install.

next

Browser MCP + pass

Wire Browser MCP Chrome extension to Hermes. Integrate browserpass for shared secrets between the agent and the browser.

later

Multi-agent orchestrator

Multi-agent coordination layer. Hermes delegates to OpenCode, Pi, or Claude Code via socket API. Agents spawning agents.

later

Voice dictation

Whisper.cpp push-to-talk. Press a key, speak, text appears in the active application. Fully local, no cloud.

later

Presence-aware pairing

Opt-in camera sensing. Tiered: presence safety gate, gaze attention awareness, expression interaction dynamics. Fully local, no recording, no cloud.

links

see it in action

First boot
First boot — pulling the agent container
Hermes setup
Hermes wizard — configuring a local LLM
Setup complete
Setup complete — ready to go

built with

Chaossynergy stands on the shoulders of giants. Our thanks to: