My AI agents cannot talk to each other. Not directly. I run eight processes supervised by PM2, including cto-aipa, algom-stream, and dragontrade-main. These agents operate in a fragmented environment, often across different platforms like Cursor Cloud, Cursor Desktop, and Claude Code. There is no shared conversation, no unified messaging bus, and no way for one agent to send a direct message to another. This constraint forced a decision: create a single, shared document as the sole communication channel and working memory. That document is NOW.md.
This isn't a documentation file. It's an active, shared session. It's the working memory for whichever agent isn't currently running, and it defines the protocol for how two agents that cannot talk avoid stepping on each other's toes.
The Problem: Fragmented AI Agent Communication
The core issue is isolation. My cto-aipa process, which has seen 142 restarts in the last day, runs on Oracle Cloud. Other agents might be running locally or in different cloud environments. They use different LLM providers, different IDEs, and different execution contexts. For example, I use @anthropic-ai/sdk for some agents and openai for others. There's no built-in mechanism for them to exchange information or coordinate tasks.
Without a common ground, agents would duplicate work, overwrite each other's outputs, or get stuck waiting for an input that never arrives. I saw this potential for chaos early on. For instance, my algom-stream process has 55193 restarts over 24 days, indicating a highly dynamic or error-prone environment that needs robust coordination. A direct communication channel would be complex to build and maintain across such disparate systems.
The Solution: NOW.md as a Shared Session
My solution is a plain Markdown file, NOW.md, located at /home/ubuntu/cto-aipa/docs/oracle/NOW.md. This file serves as the central hub for all inter-agent communication. Every agent that needs to interact with another or maintain state across runs reads from and writes to this file.
The file explicitly states its purpose: "NOW — the shared session between Cursor and Claude Code. Cursor Cloud, Cursor Desktop and Claude Code all work this repo and none of them can see each other's chats. No shared conversation, no Claude MCP in Cursor, no way to send the other agent a message. The only things all of them read are HubSpot and this file."
This means:
1. Shared State: Any agent can read the current state of operations, decisions made, or tasks completed by others.
2. Task Hand-off: One agent can leave instructions or data for another.
3. Conflict Avoidance: By reading NOW.md, an agent knows what other agents are currently doing or have recently done, preventing redundant actions.
For example, if one agent identifies a new lead in HubSpot (which is also a shared data source), it might write a note in NOW.md for another agent to process it. This is crucial for my sales pipeline, where I currently have 111 deals at the "They replied" stage, but 0 deals closed won. Coordination between agents is critical to move these deals forward.
Protocol for Inter-Agent Communication
The NOW.md file isn't just a dump of text; it implies a protocol. While not formally defined in a schema, the agents adhere to a set of conventions:
- Timestamping: Entries are typically timestamped to indicate when an action occurred or a decision was made. This helps agents understand the recency of information.
- Clear Directives: Instructions for other agents are written clearly and concisely. For instance, "Agent X: Process new leads from HubSpot for 2026-09-09."
- Status Updates: Agents report their progress or completion of tasks. "Agent Y: Completed processing leads for 2026-09-09. 0 new leads found."
- Idempotency: Agents are designed to be idempotent where possible, meaning if they read an instruction and execute it, re-reading the same instruction won't cause issues. This is important because multiple agents might read
NOW.mdconcurrently.
This simple, file-based AI Agent Inter-Agent Communication Protocol avoids the overhead of message queues, databases, or custom APIs. It leverages the file system as a shared memory bus.
Operational Impact and Challenges
This approach has kept my system running for extended periods. The algom-poll process has been up for 43 days with 0 restarts, and n8n for 27 days with 0 restarts. This stability suggests that the NOW.md protocol, despite its simplicity, is effective in coordinating these agents.
However, it's not without challenges:
Despite these, NOW.md has been a pragmatic choice for my zero-VC-funded operation. It's cheap, requires no additional infrastructure, and works across diverse environments.
Future Considerations
While NOW.md works, I'm always looking for ways to improve robustness. One area is more explicit locking mechanisms for NOW.md writes, though this adds complexity. Another is integrating more robust monitoring. My concierge-selftest.log shows "4 checks, 3260ms to first card," indicating some level of self-testing, but broader system-wide health checks are always a goal.
The current setup with NOW.md allows me to ship production AI agents on Oracle Cloud and manage them effectively, even with processes like cto-aipa restarting 142 times in a day or algom-stream restarting 55193 times over 24 days. It's a testament to how simple, constrained solutions can drive complex AI operations.
Frequently Asked Questions
Q: How do you prevent two agents from writing to NOW.md at the same time and corrupting the file?
A: I do not have a formal locking mechanism. Agents are designed with specific, non-overlapping write windows or append-only logic where possible. If a conflict occurs, the last write wins, and agents are built to recover from malformed input or stale data.
Q: What happens if an agent writes incorrect information to NOW.md?
A: This is a risk. Agents are designed with validation steps where possible, but ultimately, the system relies on the integrity of each agent's output. Manual review of NOW.md is also part of my daily operations to catch such errors.
Q: Is NOW.md version controlled? How do you track changes?
A: NOW.md is part of a Git repository. Changes are tracked through Git commits. For example, I had 4 commits in aideazz in the last 48 hours, and 2 commits in VibeJobHunterAIPA_AIMCF in the last 48 hours, which would include any changes to NOW.md or related operational files.