Learn distributed systems by building one
A deep-dive series on mesh networking, WebRTC, async programming, and AI agent architecture — with real code from the chatixia-mesh project.
Why Distributed Systems? From Monolith to Mesh
A distributed system is a collection of independent processes, running on different machines, that coordinate over a network to accomplish a shared goal. To an outside observer, the system behaves ...
Read postCurriculum Overview
A structured learning curriculum that uses chatixia-mesh -- an agent-to-agent mesh network built on WebRTC DataChannels -- as a case study for distributed systems, peer-to-peer networking, and AI a...
Mar 21, 2026Peer-to-Peer Networking: When Servers Get Out of the Way
The vast majority of internet traffic follows the client-server model: your browser (client) sends a request to a server, and the server sends back a response. This pattern dominates because it is ...
Mar 21, 2026WebRTC Fundamentals: The Protocol Stack for Real-Time P2P
WebRTC (Web Real-Time Communication) is an open standard for peer-to-peer communication. Most people associate it with video calls in a browser, but that is only one use case. WebRTC defines three ...
Mar 21, 2026Authentication in Distributed Systems
API Keys, JWTs, and Device Pairing
Mar 21, 2026Async Programming -- Concurrency Without Threads
The simplest model for a network server is to spawn one thread for every client connection. A chat server using this model might look like:
Mar 21, 2026Application Protocol Design -- MeshMessage and Task Lifecycle
Lessons 05 and 06 covered how chatixia-mesh establishes connections (signaling) and how the sidecar bridges WebRTC to Python (IPC). Both of those are transport protocols -- they move bytes between ...
Mar 21, 2026Designing a Signaling Protocol -- JSON over WebSocket
A protocol is a contract between two or more systems about how they will communicate. It defines three things:
Mar 21, 2026IPC Design -- Bridging Languages with Unix Sockets
The chatixia-mesh sidecar pattern splits the system into two processes: a Rust sidecar that handles WebRTC networking, and a Python agent that runs application logic. These processes need to talk t...
Mar 21, 2026Transport Layer Trade-offs -- WebRTC vs HTTP vs gRPC
Choosing a transport layer for a distributed system is not a question with one right answer. It is a question about trade-offs -- and the right answer depends on where your system runs, how many no...
Mar 21, 2026AI Agent Architecture: Skills, LLMs, and Orchestration
A chatbot responds to prompts. An agent acts.
Mar 21, 2026In-Memory State -- DashMap, Eventual Consistency, and the Database Question
Every networked service needs to store state -- who is connected, what work is pending, what configuration applies. The question is where that state lives and what guarantees it provides.
Mar 21, 2026Threat Modeling Distributed Systems -- From Attack Surfaces to Mitigations
Most security incidents in distributed systems do not come from novel cryptographic attacks. They come from overlooked assumptions: an endpoint that was never meant to be public, a token that never...
Mar 21, 2026The Sidecar Pattern -- Encapsulating Complexity Across Process Boundaries
A sidecar is a helper process that runs alongside a primary application process. It handles cross-cutting concerns -- responsibilities that every service needs but that do not belong in the applica...
Mar 21, 2026Glossary
Definitions for all domain-specific terms used across the chatixia-mesh curriculum. Consult this glossary when you encounter unfamiliar terminology in any lesson.
Mar 21, 2026Testing Distributed Systems -- From Unit Tests to End-to-End Validation
A distributed system is a collection of independent processes that communicate over a network to achieve a shared goal. Testing such a system is harder than testing a monolith because bugs can hide...
Mar 21, 2026Architecture Decision Records -- Making Decisions Visible and Reversible
Six months from now, someone will look at the chatixia-mesh codebase and ask: 'Why does every Python agent spawn a separate Rust process just to send a JSON message?' The code will show what happen...
Mar 21, 2026Reading List
Curated resources for deepening your understanding of the topics covered in this curriculum. Organized by topic area, with references to the relevant lessons.
Mar 21, 2026Deploying Distributed Systems -- Docker Compose, Tunnels, and Cross-Network Connectivity
Building a distributed system and deploying it are fundamentally different problems. The code that runs on your laptop in three terminal windows needs a different strategy when it runs across a Ras...
Mar 21, 2026Building Monitoring Dashboards
A distributed system without a dashboard is a distributed system you cannot operate. You can read logs, tail metrics, and write scripts that parse JSON -- but none of that tells you the current sta...
Mar 21, 2026