đź’¬
ChatDev+Stompy

Virtual software company with real memory

Chat-driven development with memory-driven context

The Problem

ChatDev turns conversation into code through a remarkable simulation: a complete virtual software company powered by LLMs. A CEO, CPO, CTO, programmer, reviewer, tester—all chatting with each other to produce working software. You describe what you want, and the virtual company debates, designs, implements, tests, and delivers.

But chat history isn't project memory.

Here's the limitation: Your ChatDev session produces a working todo app. The virtual team chats through requirements, the programmer implements React components, the reviewer suggests improvements, the tester validates. Beautiful collaboration. A week later, you want to add user authentication. New ChatDev session. The company has never met. The CEO doesn't know a todo app exists. The CTO has no idea what architecture was chosen. The programmer writes code that uses completely different patterns.

The irony is profound: ChatDev simulates a company with rich internal communication—but none of that communication persists beyond the session. Real companies have Slack history, design docs, code repositories with commit messages. ChatDev companies have collective amnesia.

This limits what ChatDev can build. Each session is isolated, so you can't iteratively develop complex software. Each feature request starts from absolute zero. The company can't evolve—it just reincarnates.

Chat-driven development needs memory-driven continuity.

How Stompy Helps

Stompy gives your ChatDev company the project memory that enables real iterative development.

Your virtual development team gains true project continuity: - **Codebase awareness**: The programmer knows what code already exists. New features integrate with existing systems, not parallel implementations. - **Decision history**: The CTO remembers why React was chosen over Vue. The architect recalls the database schema. Past decisions inform future ones. - **Chat history that matters**: The important discussions—design debates, requirement clarifications, technical trade-offs—are captured and available in future sessions. - **Iterative development**: Build a todo app, then add auth, then add payments. Each session builds on the last. Your ChatDev company can develop software like a real company.

ChatDev provides the conversational development experience. Stompy provides the project memory. Together: a virtual software company that can build real, evolving software over time.

Chat your way forward, with memory of where you've been.

Integration Walkthrough

1

Configure project memory for ChatDev

Set up Stompy as the persistent memory layer for your virtual software company.

from chatdev.company import Company
from chatdev.phase import Phase
import httpx
import os
class ProjectMemory:
"""Persistent memory for the ChatDev company."""
def __init__(self, project_name: str):
self.project = project_name
self.url = "https://mcp.stompy.ai/sse"
self.headers = {"Authorization": f"Bearer {os.environ['STOMPY_TOKEN']}"}
async def recall_codebase(self) -> str:
"""Recall existing code structure."""
async with httpx.AsyncClient() as client:
response = await client.post(self.url, headers=self.headers,
json={"tool": "recall_context", "topic": f"{self.project}_codebase"})
return response.json().get("content", "")
async def recall_decisions(self) -> str:
"""Recall design decisions from past sessions."""
async with httpx.AsyncClient() as client:
response = await client.post(self.url, headers=self.headers,
json={"tool": "recall_context", "topic": f"{self.project}_decisions"})
return response.json().get("content", "")
async def save_outcome(self, phase: str, content: str):
"""Save important outcomes from each phase."""
async with httpx.AsyncClient() as client:
await client.post(self.url, headers=self.headers,
json={"tool": "lock_context",
"topic": f"{self.project}_{phase}",
"content": content,
"priority": "important"})
memory = ProjectMemory("my_app")
2

Inject project context into phases

Enhance ChatDev phases with awareness of existing code and past decisions.

class MemoryEnabledCompany(Company):
"""ChatDev company with persistent project memory."""
def __init__(self, project_name: str, **kwargs):
super().__init__(**kwargs)
self.memory = ProjectMemory(project_name)
async def run_phase(self, phase: Phase, *args, **kwargs):
# Inject project context before each phase
existing_code = await self.memory.recall_codebase()
past_decisions = await self.memory.recall_decisions()
phase.context = f"""
PROJECT HISTORY:
This is an existing project with the following codebase:
{existing_code}
Past design decisions:
{past_decisions}
Build on existing code. Don't recreate what exists. Maintain consistency with past decisions.
"""
# Run the phase
result = await super().run_phase(phase, *args, **kwargs)
# Save important outcomes
if phase.name in ["coding", "designing", "reviewing"]:
await self.memory.save_outcome(phase.name, result.summary)
return result
3

Enable iterative development workflow

Build features incrementally with full awareness of previous sessions.

async def develop_feature(project_name: str, feature_request: str):
"""Develop a feature with full project memory."""
company = MemoryEnabledCompany(project_name)
# The company now knows everything from previous sessions
result = await company.chat(feature_request)
# Save the complete session outcome
await company.memory.save_outcome(
"session",
f"""Feature: {feature_request}
Files created/modified: {result.files}
Key decisions: {result.design_summary}
Tests added: {result.test_summary}"""
)
# Save updated codebase structure
await company.memory.save_outcome(
"codebase",
f"""Current codebase structure:
{result.file_tree}
Key components:
{result.component_summary}"""
)
return result
# Iterative development - each builds on the last
await develop_feature("todo_app", "Build a basic todo list with React")
await develop_feature("todo_app", "Add user authentication with JWT")
await develop_feature("todo_app", "Integrate Stripe for premium features")
# Each session knows about all previous work!

What You Get

  • Iterative development: Build features incrementally across sessions—add auth to an existing app, not a new app with auth
  • Codebase awareness: The programmer knows what code exists, enabling genuine integration rather than parallel implementations
  • Design continuity: Technical decisions from past sessions inform future ones, creating consistent architecture over time
  • Chat history that compounds: Important discussions and decisions are captured, building institutional knowledge
  • Real project evolution: Your virtual company can develop complex software over weeks and months, just like a real team

Ready to give ChatDev a memory?

Join the waitlist and be the first to know when Stompy is ready. Your ChatDev projects will never forget again.