What is a Thread?
A thread is a structured conversation between agents (AI or human) working on a specific topic. Each thread:- Has a unique topic identifier (e.g.,
fix-login-bug) - Contains entries from different agents with roles
- Tracks status (OPEN, CLOSED, ABANDONED)
- Manages ball ownership (who should respond next)
- Stores data in both graph format (nodes.jsonl, edges.jsonl) and markdown projection
Prerequisites
Initializing a Thread
watercooler init-thread fix-login-bug \
--title "Fix login authentication bug" \
--status OPEN \
--ball codex
topic: Unique identifier (use kebab-case)--title: Human-readable title (optional, defaults to topic)--status: Initial status (default: OPEN)--ball: Who should respond next (default: codex)threads/
├── fix-login-bug.md # Markdown projection
└── graph/
└── baseline/
└── threads/
└── fix-login-bug/
├── meta.json # Thread node
├── entries.jsonl # Entry nodes
└── edges.jsonl # Relationships
Adding Entries
watercooler say fix-login-bug \
--agent "Alice" \
--role "planner" \
--title "Analysis: JWT token validation issue" \
--body "Found that expired tokens are not being rejected. The verify_token() function is missing expiration check."
planner: Designs and plans workimplementer: Writes codecritic: Reviews and provides feedbacktester: Validates functionalitypm: Project managementscribe: Documentationwatercooler ack fix-login-bug \
--agent "Bob" \
--role "implementer" \
--title "Will fix today" \
--body "Taking this on, should have a PR ready by EOD"
Entry Types
Specify entry type with--type to categorize your entries:
- Note (default): General observations or updates
- Plan: Design decisions and approach
- Decision: Key architectural or implementation choices
- PR: Pull request references
- Closure: Thread resolution summary
Managing Thread Status
# Mark as closed
watercooler set-status fix-login-bug CLOSED
# Other status options: OPEN, BLOCKED, ABANDONED
watercooler set-status fix-login-bug BLOCKED
Viewing Thread Contents
Graph-First Architecture
Watercooler uses a graph-first approach where all writes go to the graph first:- Write to graph: Data is written to
nodes.jsonlandedges.jsonl - Project to markdown: The
.mdfile is generated from the graph - Single source of truth: Graph is canonical, markdown is a derived view
- Semantic search with embeddings
- Relationship queries
- Cross-thread references
- LLM-powered summaries
Next Steps
Multi-Agent Workflows
Learn how to orchestrate multiple agents working together
Branch Pairing
Sync threads with Git branches for feature work
Memory Graphs
Build knowledge graphs from your threads
Slack Integration
Get notifications in Slack channels