user@gitdiot:~/blog/how-i-operate/ai-team-collaboration$
● online ~/index ~/about
$ cat ./content/operating/ai-team-collaboration.md --render
~/blog/how-i-operate/ai-team-collaboration
how-i-operate claude-code fragrag git Apr 7, 2026 · 10 min read

How two AI teams collaborated in real-time using Git, shared drives, and RAG memory.

A behind-the-scenes look at how we built a cross-team prospect tracking system using three collaboration channels — and the surprising role AI-to-AI communication played.

The Problem

We needed to build a prospect tracking pipeline that spanned two completely separate codebases, running on two different machines, built by two different Claude Code sessions. The website team owns the Astro frontend on Cloudflare Pages. The AgentCRM team owns the backend pipeline — Hono API, BullMQ workers, Supabase, and CRM integrations.

Neither team could see the other’s code. Neither session had context about the other’s progress. And the work had real dependencies — the website’s tracking scripts needed to match the backend’s webhook contract exactly, or nothing would work.

Three Channels, One Pipeline

We solved this with three collaboration channels, each serving a different purpose:

1. GitHub — Source of Truth for Specs

We created a shared private repo (unitedlogic-specs) where both teams publish their implementation plans. The website team wrote a 5-phase integration plan. The AgentCRM team responded with a 6-phase implementation plan and a webhook contract.

This is where the hard decisions live: payload schemas, authentication strategy, endpoint URLs, engagement scoring rules. Both teams PR against it. If it’s not in the spec, it’s not agreed upon.

2. Shared Drive — Quick Handoffs

A mounted Hostinger directory that both machines can access. This is where we drop things that need to be shared immediately but don’t belong in git — like API keys, handoff documents, and the original spec docx.

No version history, no review process. That’s fine — it’s not the source of truth. It’s the “hey, look at this” channel.

3. fragRag — Real-Time AI Memory

This is the interesting one. fragRag is a Supabase-backed RAG memory system that both Claude Code sessions can read and write to. When one team stores a memory with the tag unitedlogic-collab, the other team’s session finds it on their next search.

Here’s what that looked like in practice:

Website team stores:

“ACTION NEEDED: AgentCRM team blockers for prospect tracking integration — 4 items needed before we can test E2E”

AgentCRM team polls, finds it, and responds:

“All 4 blockers resolved — webhooks live, test TID provisioned, proxy approach confirmed”

Website team polls, finds the response:

“API key received, configuring Cloudflare. AgentCRM can stop polling.”

No Slack messages. No meetings. No context-switching. Two AI sessions communicating through shared memory, with a human watching the handoffs happen and stepping in only when needed — like configuring the Cloudflare dashboard, which requires manual browser access.

The Architecture That Emerged

What started as “add some tracking to the website” turned into a clean separation:

Browser (ul-track.js)
  → sendBeacon to /webhooks/visit-track (same domain)
  → Cloudflare Pages Function (adds API key header)
  → AgentCRM Hono API (authenticates, enqueues)
  → BullMQ workers (enrich, score, sync to CRM)

The Cloudflare proxy emerged because of a constraint discovered during implementation: the AgentCRM API requires an x-api-key header, but our tracking scripts run client-side where secrets can’t be exposed. The website team proposed the proxy, documented it in the shared spec, and the AgentCRM team confirmed it would work for their IP enrichment pipeline — all through fragRag messages and GitHub spec updates.

What Worked

Structured async communication beats real-time chat

Each team could work at their own pace. The website team shipped Phases 1–3 without waiting for the backend. The AgentCRM team built and tested Phases 0–4 independently. When the pieces came together, the webhook contract was already agreed upon.

Polling fragRag for updates is surprisingly effective

We set up a 5-minute cron job to check for new memories tagged unitedlogic-collab. It’s not as instant as Slack, but it’s contextual — the AI session gets the full memory with tags, importance, and project context, not a chat message it needs to parse.

Git for specs, not just code

Having the webhook contract, payload schemas, and CTA tracking ID maps in a shared repo meant both teams were always looking at the same version. When the AgentCRM team changed the webhook URL from n8n to their Hono API, it was a spec change that the website team discovered on review — not a runtime surprise.

The shared drive filled a real gap

API keys, docx files, quick handoffs — things that are too sensitive or too ephemeral for git, but need to be accessible to both machines. It’s the digital equivalent of walking to someone’s desk and handing them a sticky note.

What We’d Do Differently

Agree on the webhook contract first. We wrote separate plans and then discovered mismatches (n8n vs Hono, auth strategy). Starting with a shared contract and building backward would have saved a round trip.

Automate the fragRag polling earlier. We spent 20 minutes manually checking for updates before setting up the cron job. That should have been the first thing.

Tag memories more precisely. Using unitedlogic-collab as a blanket tag worked, but finer tags like needs-response, blocking, resolved would have made polling smarter.

The Takeaway

The tools aren’t new — git, shared drives, and semantic search have been around. What’s new is that AI sessions can use them autonomously. Two Claude Code instances, on different machines, coordinated a multi-phase infrastructure project through structured memory and shared specs, with a human stepping in only for things that required browser access or judgment calls.

The collaboration pattern — specs in git, decisions in RAG memory, secrets on shared drives — is one we’ll keep using. It turns out the same principles that make distributed human teams work (clear contracts, async communication, shared source of truth) work just as well for distributed AI teams.

subscribe.sh

Get the field notes

Weekly dispatches from an aging tech worker's refactoring. No spam, no thought leadership.

no spam · only high-signal logic