“The power of UNIX comes from the ability of programs to work together.” — Brian Kernighan
“The power of an agent system comes from agents that compose without coupling.” — adapted for LLM multi-agent systems
Prerequisite: This article extends Part 1: LLM Agent Filesystem. All file ownership rules, frontmatter conventions, budgets, and pruning policies from Part 1 still apply.
- Introduction
- The Problem: Agents Are Isolated by Design
- Unix IPC → Agent IAC Mapping
- Extended Directory Structure
- Primitive 1 — Pipes: Sequential Handoffs
- Primitive 2 — FIFOs: Persistent Work Queues
- Primitive 3 — Semaphores: Coordination Locks
- Primitive 4 — Message Queues: Async Inbox Communication
- Primitive 5 — Shared Memory: Shared Context Segments
- A Complete Multi-Agent Example
- Failure Modes and Recovery
- Design Rules for Reliable Communication
- Why This Model Works
- Closing Thoughts
In Part 1, we treated each LLM agent as a self-contained filesystem.
That model solved memory, learning, identity, and governance for a single agent.
But real systems rarely use one agent.
Modern workflows often need multiple specialists:
- A backend engineer agent
- A data analyst agent
- A researcher agent
- A QA reviewer agent
- An orchestrator agent
Each may be excellent individually, yet the system still fails if they cannot communicate cleanly.
This article proposes a practical solution:
Use Unix-style Inter-Process Communication (IPC) as the model for Inter-Agent Communication (IAC).
Instead of processes exchanging bytes, agents exchange structured files.
Isolation is good.
Each agent having its own directory means:
- No context pollution
- Clear ownership
- Easier debugging
- Independent rewards and learning
- Better specialization
But isolation creates a new challenge:
How do separate agents collaborate without reading each other’s private memory?
Example:
- Orion knows databases and APIs.
- Iris knows statistics and anomaly detection.
A task arrives:
“Build an April analytics pipeline and validate anomalies.”
Neither agent alone is ideal.
They must cooperate.
That is exactly the problem Unix solved for processes decades ago.
| Unix Primitive | Purpose | Agent Equivalent | Use Case |
|---|---|---|---|
| Pipe | Sequential stream | Handoff file | One agent passes output to another |
| FIFO | Named queue | Shared queue file | Persistent task backlog |
| Semaphore | Lock access | Lock file | Prevent concurrent writes |
| Message Queue | Typed async messages | Inbox / outbox | Requests, replies, notifications |
| Shared Memory | Shared data region | Shared context segment | Common evolving workspace |
The key insight:
Multi-agent systems need communication primitives, not ad hoc prompts.
agents/
├── shared/
│ └── iac/
│ ├── registry.md
│ ├── queues/
│ ├── semaphores/
│ └── segments/
│
├── orion/
│ └── iac/
│ ├── inbox.md
│ ├── outbox.md
│ └── handoffs/
│
├── iris/
│ └── iac/
│ ├── inbox.md
│ ├── outbox.md
│ └── handoffs/
│
└── orchestrator/
└── iac/
PRIVATE TO AGENT
- inbox.md
- outbox.md
- handoffs/
SHARED MEDIATION LAYER
- queues/
- semaphores/
- segments/
OPERATOR CONTROLLED
- registry.md
- schemas
- permissions
A pipe connects one program’s output to another program’s input.
cat data.csv | grep error | sortEach process does one step well.
One agent finishes work and writes a handoff file for the next agent.
Orion runs a SQL query. Iris validates results.
---
type: handoff
sender: orion
receiver: iris
payload_type: query-results
status: ready
---
# Context
April events report generated.
Please validate for anomalies.
# Summary
Rows: 847
Range: 2026-04-01 to 2026-04-28The receiving agent gets:
- What happened
- Why it matters
- What to do next
That is more useful than raw data alone.
A FIFO is a named queue.
Processes can add work and another process consumes it in order.
Use a shared queue file.
---
type: queue
name: analytics-tasks
budget: 50
depth: 2
---
## item-002
- task: validate anomalies
- producer: iris
## item-001
- task: daily sync
- producer: orchestratorConsumer reads oldest item first.
- Background jobs
- Batch processing
- Retry backlogs
- Shared task intake
A semaphore prevents multiple processes from modifying the same resource simultaneously.
Use a lock file before writing shared state.
---
type: lock
resource: project-alpha.segment
state: held
holder: orion
ttl_minutes: 10
---Without locks:
- Orion writes version A
- Iris writes version B simultaneously
- Data becomes inconsistent
Locks prevent race conditions.
Processes send typed messages asynchronously.
Each agent gets an inbox.
## msg-007
- type: review-request
- sender: iris
- priority: high
- subject: Validate ETL gap causeThe sender continues working immediately.
No need to block.
- Review requests
- Capability checks
- Escalations
- Notifications
- Delegation
Multiple processes access one memory region.
A shared markdown file acts as a collaborative workspace.
---
type: shared-segment
name: project-alpha
version: 7
---
## [ORCHESTRATOR]
Goal: Ship April analytics dashboard
## [ORION]
Indexes created.
Pipeline query complete.
## [IRIS]
Detected zero-event days on Apr 14 and Apr 21.Every agent sees the latest agreed context.
No repeated explanations needed.
Let’s combine everything into one realistic workflow.
A company needs an April events dashboard.
Tasks:
- Extract backend data
- Detect anomalies
- Confirm root cause
- Approve release
- Orchestrator → routes work
- Orion → backend + SQL
- Iris → analytics + anomaly detection
flowchart TD
A[New Dashboard Request] --> B[Queue Item Created]
B --> C[Orchestrator Dequeues Task]
C --> D[Message to Orion: Build Query]
D --> E[Orion Runs SQL]
E --> F[Handoff File to Iris]
F --> G[Iris Validates Data]
G --> H{Anomalies Found?}
H -->|No| I[Message to Orchestrator: Approved]
H -->|Yes| J[Review Request to Orion]
J --> K[Orion Confirms ETL Failure]
K --> L[Shared Segment Updated]
L --> M[Orchestrator Blocks Release]
The orchestrator receives a new dashboard request.
It adds work to analytics.queue.
The orchestrator sends Orion:
Build April events query.
Orion finishes and hands results to Iris.
Iris notices two dates with zero events.
Iris asks Orion:
Are Apr 14 and Apr 21 expected gaps?
Orion confirms ETL failure and updates shared project segment.
Orchestrator pauses dashboard release.
No agent needed another agent’s private files.
Communication was:
- Structured
- Auditable
- Replaceable
- Explainable
That is scalable collaboration.
Receiver never reads handoff.
Fix: Use TTL and reroute.
Too many tasks waiting.
Fix: Apply backpressure. Producers retry later.
Agent crashes while holding lock.
Fix: TTL expires, next agent reclaims lock.
Inbox grows unacknowledged.
Fix: Alert orchestrator or auto-escalate.
Two writes race.
Fix: Require lock + version checks.
Use references to larger files instead of giant inbox messages.
Examples:
review-requesttask-delegationcapability-queryalert
Each primitive should do one job:
- Queue = pending work
- Inbox = communication
- Segment = shared state
- Lock = coordination
Every transient file should expire eventually.
Outboxes, lock history, and version numbers matter.
Unix IPC succeeded because it gave independent programs a common language.
This model does the same for agents.
Instead of custom prompts and brittle glue logic, agents interact through stable conventions.
Benefits:
Replace Iris with another analyst agent without redesigning Orion.
Every message and handoff is inspectable.
Failures are visible and retryable.
More agents can join by registering endpoints.
Humans can understand the workflow by reading files.
Single-agent systems solve narrow tasks.
Multi-agent systems solve real workflows.
But adding more agents without communication design only creates chaos.
The solution is not magical orchestration.
It is disciplined interfaces.
Unix taught us that independent components become powerful when connected through simple primitives.
LLM systems can use the same lesson:
Pipes for handoffs. Queues for work. Locks for coordination. Messages for requests. Shared segments for common truth.
That is how agents collaborate without coupling.
Previous Parts of the LLM Agent Filesystem series
- Part 0: Agent Bootstrapping Kit: LLM Skills via RL-Inspired Rewards
- Part 1: Single-Agent Filesystem Design
License: MIT