chatixia blog

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.

Foundations Mar 21, 2026 · 16 min read

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 post
10 min

Curriculum 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, 2026
Foundations 21 min

Peer-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, 2026
Foundations 20 min

WebRTC 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, 2026
Core Mechanics 26 min

Authentication in Distributed Systems

API Keys, JWTs, and Device Pairing

Mar 21, 2026
Foundations 17 min

Async 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, 2026
Core Mechanics 24 min

Application 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, 2026
Core Mechanics 23 min

Designing 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, 2026
Core Mechanics 27 min

IPC 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, 2026
System Design 31 min

Transport 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, 2026
Core Mechanics 28 min

AI Agent Architecture: Skills, LLMs, and Orchestration

A chatbot responds to prompts. An agent acts.

Mar 21, 2026
System Design 16 min

In-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, 2026
System Design 26 min

Threat 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, 2026
System Design 22 min

The 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, 2026
14 min

Glossary

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, 2026
Operations 26 min

Testing 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, 2026
Operations 24 min

Architecture 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, 2026
7 min

Reading 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, 2026
Operations 24 min

Deploying 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, 2026
System Design 23 min

Building 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