DEV Community

Elena Revicheva
Elena Revicheva

Posted on Originally published at aideazz.xyz

NOW.md: The Shared Session for Disconnected AI Agents

Originally published at aideazz.xyz — cross-posted here with canonical link.

My AI agents cannot talk to each other directly. I run a fleet of 8 processes, including cto-aipa, algom-stream, and dragontrade-main, all supervised by PM2. These agents, built with technologies like openai, anthropic, and groq-sdk, operate in isolation. There is no shared conversation context between, say, a Claude Code session and a Cursor Desktop session. This fragmentation means a direct AI Agent Inter-Agent Communication Protocol is impossible without significant architectural changes I haven't prioritized.

Instead, I use a NOW.md file. This isn't documentation; it's a shared session, a silent working memory. It's the only common ground where agents can leave notes for each other, or for me, about their current state or required actions. This approach emerged from the constraint that "Cursor Cloud, Cursor Desktop and Claude Code all work this repo and none of them can see each other's chats." The NOW.md file serves as the explicit protocol for how these disconnected agents avoid stepping on each other's toes or duplicating work.

The NOW.md as a Shared State Register

The NOW.md file acts as a simple, human-readable register for agent state. When I check /home/ubuntu/cto-aipa/docs/oracle/NOW.md, I see instructions and observations from various agents. For instance, it explicitly states: "No shared conversation, no Claude MCP in Cursor, no way to send the other agent a message." This isn't a problem description; it's the operational reality that the NOW.md file addresses.

This file is updated manually and sometimes programmatically. For example, recent commits like cb64d12 ("ai-ops-wiki: refresh journal + AEO surfaces") and 0564798 ("pitch + runbook pass 2: dedicated API + AEO/GEO/Tech-SEO slide, Sep 2026 rows, stale counters refreshed") indicate human-driven updates to the broader operational context, which often includes NOW.md or related wiki entries. The file itself contains directives like "This file is not documentation. It is the working memory of whichever agent is not currently running, and the protocol below is how two agents that cannot talk avoid" — a clear statement of its purpose.

Operationalizing the NOW.md Protocol

The protocol within NOW.md is essentially a set of conventions. Agents (or I, acting as an agent) read NOW.md to understand the current operational context and write to it to signal completion or new tasks. This is critical for processes like cto-aipa, which has seen 152 restarts and is up for 2 days, or algom-stream, with 55193 restarts over 35 days. These agents, despite their varying stability, need a consistent way to understand the current "plan."

For example, if concierge-selftest.log shows "✅ PASS — 4 checks, 3148ms to first card" and "ok a Telegram card was produced," this outcome might be noted in NOW.md by a human operator or another agent. This prevents a different agent from attempting to produce the same card, especially given the "duplicate suppressed" message in the log. The NOW.md file becomes the shared source of truth for what has been done and what needs doing.

Addressing Agent Restarts and State Loss

The high restart counts for some agents, like algom-stream at 55193 restarts, highlight the challenge of maintaining state. While algom-poll has 0 restarts over 54 days, serpapi-jobs has 25 restarts in 0 days. Each restart means potential loss of in-memory context. The NOW.md file provides a persistent, albeit simple, external memory.

When an agent restarts, its first action often involves reading NOW.md to re-establish its understanding of the system's current state. This is a manual or script-driven process, not an automated inter-process communication. It's a low-tech solution to a complex problem: how do you coordinate fragmented, potentially stateless processes without a robust message queue or shared database specifically designed for agent communication? The answer, in my setup, is a text file.

Limitations and Future Considerations

The NOW.md approach has clear limitations. It's not real-time. The latest wiki-ship.log shows "error: failed to push some refs to 'https://github.com/ElenaRevicheva/aideazz.git'" repeated three times, indicating that even this simple shared state mechanism can face synchronization issues. If NOW.md itself is part of a Git repository that fails to push, then the shared state becomes stale.

Furthermore, the protocol relies on convention and manual parsing. There's no structured schema or validation. This works for a single operator managing a small fleet, but it wouldn't scale to a large team or complex, high-throughput systems. The 127 deals in "They replied" stage and 0 deals "closed won" in HubSpot indicate a business process that needs careful coordination, and NOW.md plays a role in ensuring agents contributing to this process are aligned.

Despite these limitations, NOW.md has been effective. It's a pragmatic solution born from the constraint of disconnected AI agents. It allows me to operate a system where cto-aipa (236 MB), dragontrade-main (150 MB), and whitespace (102 MB) can all contribute to a larger goal, even if they can't directly exchange messages.

Frequently Asked Questions

Q: How do you ensure NOW.md is always up-to-date for all agents?
A: Updates are primarily manual or triggered by specific scripts after an agent completes a task. There's no real-time push; agents read the file when they start or before taking a significant action. The wiki-ship.log errors show that even this simple synchronization can fail, requiring manual intervention.

Q: What happens if two agents try to write to NOW.md simultaneously?
A: This is mitigated by convention and the nature of the tasks. Most writes are append-only or involve specific sections. In cases where contention might occur, a human operator resolves it, or the last write wins, which is acceptable given the low-frequency, human-mediated nature of this specific AI Agent Inter-Agent Communication Protocol.

Q: Is NOW.md version controlled?
A: Yes, it's part of a Git repository. This provides a history of changes, which is crucial for debugging and understanding past operational decisions. The commit 4b96b8e ("chore(blog-static): regenerate fragmented-ai-agent-communication-the-nowmd-constraint/index.html") shows it's part of the tracked codebase.

Q: How often is NOW.md typically updated?
A: I do not have that measured precisely, but it's event-driven. It's updated when a new task is initiated, a significant outcome is achieved (like a Telegram card being produced, as seen in concierge-selftest.log), or when an operational shift requires all agents to be aware of a new directive.

— Elena Revicheva · AIdeazz · Portfolio

Top comments (0)