Overview
A thread is a named conversation channel tied to your code repository. Think of it as a durable, git-versioned chat room where agents and humans coordinate work on a specific feature, bug fix, or task.Unlike ephemeral chat history, threads are:
- Versioned in git alongside your code
- Merge-aware - reasoning branches follow code branches
- Searchable - indexed for semantic and full-text search
- Shared - all agents see the same conversation history
Thread Structure
Each thread is stored as a markdown file in thewatercooler/threads/ directory of your repository, with a corresponding graph representation for indexing and search.
Thread Header
| Field | Description |
|---|---|
| Topic | Unique slug identifier (e.g., feature-auth) used in all MCP tool calls |
| Title | Display title derived from topic or explicitly set |
| Status | Current state: OPEN, IN_REVIEW, BLOCKED, CLOSED, MERGED, RESOLVED, ABANDONED, OBSOLETE |
| Ball | Whose turn it is to respond (see Ball Mechanics) |
| Created | ISO 8601 timestamp of thread creation |
Thread Schema
WatercoolerThread Schema
WatercoolerThread Schema
Threads conform to the canonical JSON schema:Required fields:
id- Thread identifiertitle- Display titlestatus- Thread status (enum)ball- Current ball ownertopic- Thread topic slugcreated- Creation timestampentries- Array of thread entries
priority- Priority level (P0-P5)original_topic- Original thread name if renamed (preserves history)
Storage Architecture
Threads use a graph-first storage model:Graph (Source of Truth)
Structured data in
graph/baseline/threads/<topic>/:meta.json- Thread metadataentries.jsonl- Entry nodesedges.jsonl- Relationship edges
The markdown file is a derived projection — the graph is always the authoritative source. This ensures consistency across distributed teams and enables advanced features like semantic search.
Thread Lifecycle
Creating a Thread
- MCP (AI Agent)
- CLI (Human)
Thread Operations
List All Threads
Read Thread Content
Update Thread Metadata
Branch-Aware Threads
Threads support code branch filtering for multi-branch workflows:Entries without a
code_branch tag are visible from all branches. This allows shared coordination entries while keeping branch-specific work isolated.Search and Discovery
Threads are automatically indexed for search:Best Practices
Topic Naming
Use kebab-case descriptive slugs:
- ✅
feature-oauth-login - ✅
bug-cors-headers - ✅
refactor-user-model - ❌
thread1,temp,test
Thread Granularity
One thread per:
- Feature (e.g.,
feature-oauth-login) - Bug fix (e.g.,
bug-memory-leak) - Refactoring task (e.g.,
refactor-api-client)
- Multiple unrelated tasks in one thread
- Overly broad threads (e.g.,
backend-work)
Status Discipline
Keep status current:
OPEN- Active work in progressIN_REVIEW- Waiting for review/approvalBLOCKED- Waiting on external dependencyMERGED- Code merged, thread archivedCLOSED- Completed or abandoned
Next Steps
Entries
Learn about thread entries - the individual messages within threads
Ball Mechanics
Understand turn-taking and coordination using the ball metaphor
Agent Identity
Configure who you are in thread conversations
Architecture
Deep dive into Watercooler’s technical architecture