My AI agents operate under a severe constraint: they cannot share conversations or state. This isn't a design choice for robustness; it's a limitation imposed by the tools I use. Specifically, Cursor Cloud, Cursor Desktop, and Claude Code all work on the same repository, but none of them can see each other's chats. There's no shared conversation log, no Claude MCP in Cursor, and no direct way to send a message from one agent to another. This forces a specific, low-tech solution for inter-agent communication: the NOW.md file.
This file is not documentation. It is the working memory of whichever agent is not currently running, and it dictates the protocol for how two agents that cannot talk avoid stepping on each other's toes. It's a manual, human-readable shared state, updated by one agent and read by another. This approach defines my current strategy for a fragmented AI agent communication protocol.
The NOW.md Protocol: A Shared Text File
The core of my fragmented AI agent communication protocol is a simple Markdown file: NOW.md. This file lives in /home/ubuntu/cto-aipa/docs/oracle/NOW.md and serves as the sole inter-agent communication mechanism. When I inspect its contents, it explicitly states: "NOW — the shared session between Cursor and Claude Code... The only things all of them read are HubSpot and this [file]." This means any information an agent needs to convey to another, or any state it needs to preserve across agent "sessions," must be written into this file.
For example, if one agent completes a task, it updates NOW.md with the outcome and the next steps. The next agent to run will read this file, parse its contents, and proceed based on the last recorded state. This is a deliberate workaround for the lack of native inter-process communication or a shared memory store between these disparate AI environments. It's a protocol built on file system access and human-readable text, not APIs or message queues.
Operational Impact of Fragmented Communication
This fragmented approach has direct operational consequences. My cto-aipa process, for instance, has seen 152 restarts and has been up for 1 day. In contrast, algom-poll has had 0 restarts and has been up for 53 days. algom-stream has an anomaly of 55193 restarts over 34 days. These restart counts are not directly caused by NOW.md, but the fragmented communication model means that each restart effectively resets the agent's "memory" unless that memory has been explicitly externalized to NOW.md or HubSpot.
Without a persistent, shared conversation, every agent interaction starts almost from scratch. The NOW.md file attempts to mitigate this by providing a last-known-good state or a set of instructions. However, it introduces latency and potential for misinterpretation. An agent must parse natural language instructions from a text file, which is inherently less robust than structured data exchange.
The Role of HubSpot as a Secondary Shared State
Beyond NOW.md, HubSpot acts as a secondary, structured shared state. The NOW.md file explicitly mentions it: "The only things all of them read are HubSpot and this [file]." This means agents can write and read deal information, contact details, and other CRM data to coordinate. For example, I have 125 deals currently in the "They replied" stage in HubSpot, and 0 deals closed won. An agent might update NOW.md with a directive to follow up on these 125 deals, and another agent, reading NOW.md, might then query HubSpot to get the specifics.
This dual-channel communication (unstructured NOW.md for immediate directives, structured HubSpot for persistent business data) is a necessity. It compensates for the absence of a unified AI agent orchestration layer. The concierge-selftest.log shows ok a Telegram card was produced — draft 3aaebddb83a19e0e and duplicate suppressed (redundant drafters collapse). This suggests that even with fragmented communication, there are mechanisms to prevent redundant actions, likely by agents checking HubSpot or NOW.md for existing work before initiating new tasks.
Challenges with File-Based Synchronization
The wiki-ship.log shows error: failed to push some refs to 'https://github.com/ElenaRevicheva/aideazz.git' repeated three times, with the log modified 22.0 hours ago. This highlights a critical vulnerability of file-based synchronization. If the underlying version control system (Git, in this case) fails to synchronize, then NOW.md updates, or any other file-based communication, can become stale or inconsistent.
My aideazz repository has seen 4 commits in the last 48 hours, including 89e340d (2026-09-19) ai-ops-wiki: refresh journal + AEO surfaces and cf3b472 (2026-09-19) pitch: add slide 08b 'Products anyone can use'. While these are not direct NOW.md updates, they show active development on the codebase that contains NOW.md. A failure to push changes means that agents operating on different versions of the repository might be reading different versions of the NOW.md file, leading to divergent understanding of the current state. This is a significant risk in a fragmented AI agent communication protocol.
Future Considerations for Robustness
The current setup, relying on NOW.md and HubSpot, is a pragmatic solution born from constraint. It allows my 8 PM2-supervised processes to function, with dragontrade-dashboard up 34 days, cto-aipa up 1 day, and algom-poll up 53 days. However, the inherent fragility of a fragmented AI agent communication protocol based on a single text file and an external CRM is clear.
To improve robustness, I would need to introduce a more structured, persistent message queue or a shared database specifically designed for inter-agent communication. This would move away from the "human-readable working memory" model of NOW.md towards a machine-readable, atomic transaction system. For now, the protocol outlined in NOW.md is the only way these fragmented agents can coordinate, and it requires careful manual oversight to ensure consistency.
Frequently Asked Questions
Q: How do agents avoid race conditions when updating NOW.md?
A: I do not have a formal locking mechanism implemented. The current approach relies on sequential execution or manual oversight to prevent simultaneous writes. This is a known limitation of the fragmented AI agent communication protocol.
Q: What happens if an agent fails to parse NOW.md?
A: If an agent fails to parse NOW.md due to malformed content, it typically halts or reverts to a default state. There is no automated error correction or fallback for parsing failures within the NOW.md protocol itself.
Q: Is there any version control for NOW.md?
A: Yes, NOW.md is part of the Git repository. This means its history can be tracked, and changes can be reverted. However, this relies on successful Git operations, which as seen in wiki-ship.log, can sometimes fail.
Q: How is the state in NOW.md kept concise and relevant?
A: The content of NOW.md is manually curated by the operator (me) or by agents following strict, predefined output formats. It's designed to be a brief, actionable summary of current tasks and directives, avoiding verbose historical context.