Skip to content

AutoGen Agents Creation and Testing - VibeCoded by a real developer to enable more people to do stuff using vibes.

Notifications You must be signed in to change notification settings

rodrigowf/agentic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

187 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Agentic AI System

A new way to create, debug, and interact with AI agents.

Traditional agent frameworks require coding expertise, complex configurations, and tedious debugging cycles. Agentic changes that. With an intuitive visual editor, real-time execution monitoring, and voice-controlled orchestration, you can build powerful multi-agent systems in minutesβ€”not hours.

The Goal: Provide a seamless UI/UX for creating, managing, debugging, and interacting with intelligent agents that can operate anything. From web research to code generation, from data analysis to self-improvementβ€”all controlled through natural conversation or visual workflows.

Build once. Deploy anywhere. Control with your voice.


Core Capabilities:

  • 🎨 Visual Agent Studio - Design agents with drag-and-drop simplicity
  • πŸŽ™οΈ Voice-First Control - Speak to orchestrate complex multi-agent workflows
  • πŸ” Real-Time Debugging - Watch agents think, act, and learn in real-time
  • πŸ€– Multi-Agent Teams - Coordinate specialist agents for complex tasks
  • ✏️ Self-Editing System - Agents that improve their own codebase
  • πŸ› οΈ Extensible by Design - Custom tools, models, and integrations

Voice Assistant Main View


πŸš€ Why Agentic?

Workflow Tools (n8n, Zapier, Make) πŸ”—

❌ Rigid flow-based orchestration
❌ Pre-defined paths and conditions
❌ Limited to specific integrations
❌ No dynamic decision-making
❌ Manual node connection required
❌ Context lost between steps

Example: Connect 10 nodes manually β†’ Define every condition β†’ Hope the workflow covers all cases β†’ Break when something unexpected happens.

Traditional Agent Frameworks βš™οΈ

❌ Code-first configuration
❌ Log-based debugging
❌100+ lines of boilerplate
❌ Restart after every change
❌ No visual feedback
❌ Manual team coordination

Example: Write complex config files β†’ Read logs to debug β†’ Restart repeatedly β†’ No visibility into agent reasoning.

Agentic System βœ…

βœ… Conversational orchestration
βœ… Agents dynamically decide next steps
βœ… Access ANY tool through natural language
βœ… Self-organizing team coordination
βœ… Real-time visual execution
βœ… Context maintained across workflow

Example:

  1. "Research quantum computing and write a report"
  2. Agent team autonomously decides: Search β†’ Read β†’ Analyze β†’ Organize β†’ Write
  3. If stuck, agents adapt: Try different sources, ask for clarification, delegate to specialists
  4. You watch it happen in real-time

🎯 The Key Difference

n8n/Zapier: You design the flow. The tool follows it rigidly.

"If this, then that" - Pre-programmed paths

Agentic: You describe the goal. Agents figure out how.

"Here's what I need" - Dynamic reasoning

Traditional Frameworks: You code the behavior. Hope it works.

"Configure everything" - Trial and error

Agentic: You design visually. Watch it work.

"Build and observe" - Immediate feedback


πŸ’‘ Intelligent vs. Automated

Feature n8n/Zapier Traditional Agents Agentic
Orchestration Flow-based (rigid) Code-based (complex) Conversational (adaptive)
Decision Making If/Then conditions Pre-programmed Dynamic reasoning
Tool Access Limited integrations Manual setup Natural language
Error Handling Predefined fallbacks Try/catch blocks Adaptive recovery
Team Coordination ❌ Not supported Manual coordination Self-organizing
Context Awareness ❌ Lost between nodes Limited memory Full conversation history
Visual Feedback Flow diagram ❌ Logs only Real-time execution
Modification Reconnect nodes Rewrite code Speak or click
Learning Curve Days (node connections) Weeks (coding) Minutes (visual + voice)

πŸ”„ Real Example: "Generate a Market Report"

With n8n:

1. HTTP Request node β†’ API
2. Filter node β†’ Process data
3. Transform node β†’ Format
4. Google Sheets node β†’ Store
5. Gmail node β†’ Send email

β†’ 30 minutes to set up β†’ Breaks when API changes β†’ Can't handle unexpected data β†’ No reasoning about quality

With Agentic:

You: "Generate a market analysis report for Q4 2024"

System:
β”œβ”€ Research Agent β†’ Searches multiple sources
β”œβ”€ Analyst Agent β†’ Evaluates data quality and relevance
β”œβ”€ Writer Agent β†’ Structures findings into coherent report
└─ Reviewer Agent β†’ Validates accuracy and completeness

[If data is missing] β†’ Research Agent finds alternatives
[If quality is low] β†’ Analyst Agent requests better sources
[If report is unclear] β†’ Writer Agent restructures

β†’ 2 minutes to set up β†’ Adapts to changing conditions β†’ Reasons about data quality β†’ Self-corrects and improves


The difference: What takes rigid pre-programming in workflow tools and complex coding in traditional frameworks takes natural conversation in Agentic.


✨ Features

πŸŽ™οΈ Real-time Voice Assistant

  • Voice interaction using OpenAI Realtime API with WebRTC
  • Live audio visualization and transcription
  • Dual-mode operation: Team delegation and Claude Code self-editing
  • Persistent conversation history with SQLite storage
  • Natural language control of multi-agent workflows

🎨 Visual Agent Editor & Dashboard

  • Full-featured agent editor with real-time validation
  • Three-panel interface: Agent list, configuration editor, execution console
  • Drag-and-drop tool selection from available tools library
  • Live execution monitoring with WebSocket event streaming
  • Multi-agent team builder for nested coordination
  • JSON import/export for agent configurations
  • Template system for quick agent creation
  • Support for OpenAI, Anthropic, and Google models

πŸ€– Multi-Agent Team System

  • Nested team coordination with AutoGen framework
  • Dynamic agent orchestration (selector/broadcast modes)
  • Real-time event streaming to UI
  • Custom tool integration per agent
  • Team hierarchy with specialized roles
  • Shared or isolated memory per agent

✏️ Claude Code Self-Editor

  • Live codebase modification through voice commands
  • Real-time event visualization (tool calls, file edits, bash commands)
  • JSON streaming I/O with Claude CLI
  • Isolated subprocess management
  • Self-improving system capabilities

πŸ› οΈ Extensible Tool System

  • Web search and content fetching
  • Memory management (short-term and vector-based long-term)
  • Code execution and file operations
  • Custom tool creation framework
  • Auto-loading of tools from backend/tools/
  • Type-safe tool definitions with Pydantic

πŸ“Š Rich Dashboard Interface

  • Material-UI based React application
  • Agent configuration and management
  • Real-time WebSocket event streams
  • Multi-tab views: Team Insights, Console, Claude Code
  • Dark/light mode support
  • Responsive design for desktop and tablet

πŸ”§ Developer Tools

  • Screenshot automation for UI development
  • Database export for conversation analysis
  • Comprehensive logging system
  • Hot reload for backend and frontend
  • REST API with OpenAPI documentation
  • WebSocket debugging tools

🎯 What Can You Build?

Research Assistants πŸ”¬

"Search for the latest papers on quantum computing, analyze the top 5, and save key findings to memory." β†’ Agents autonomously search, read, analyze, and remember information.

Development Teams πŸ‘¨β€πŸ’»

"Create a REST API for user authentication with JWT tokens." β†’ Product Manager β†’ Architect β†’ Developer β†’ Tester (coordinated workflow)

Data Analysts πŸ“Š

"Fetch sales data from the last quarter, calculate trends, and generate a summary report." β†’ Agents retrieve data, perform calculations, and create insights.

Content Creators ✍️

"Write a blog post about the latest AI developments, include 5 external sources." β†’ Research β†’ Outline β†’ Draft β†’ Edit β†’ Publish pipeline

Self-Improving Systems πŸ”„

"Add a new API endpoint for exporting reports to PDF." β†’ Claude Code modifies the codebase, adds tests, updates documentation.

The limit is your imagination. If it can be described in natural language, Agentic can orchestrate agents to accomplish it.


πŸ“‹ Table of Contents


πŸš€ Quick Start

Prerequisites

  • Node.js >= 20.0.0
  • Python >= 3.9.0
  • pip package manager
  • API Keys: OpenAI and Anthropic

Automated Installation

# Clone or navigate to the project
cd /path/to/agentic

# Run installation script
./install.sh

# Configure API keys
nano backend/.env

# Start all services
./run_all.sh

Access the Application


πŸ“¦ Installation Methods

Automated Installation

The automated installation script handles dependency checking and environment setup:

./install.sh

What it does:

  1. Checks dependencies:

    • Node.js >= 20.0.0
    • Python >= 3.9.0
    • pip package manager
    • Python venv module
  2. Environment setup strategy:

    • All dependencies present + venv available: Creates Python virtual environment (venv/)
    • Missing Node.js or Python: Installs Miniconda and creates conda environment
    • Missing venv module: Falls back to conda environment
  3. Installs packages:

    • Python dependencies from backend/requirements.txt
    • Frontend Node.js packages
    • Debug tool dependencies
  4. Creates configuration:

    • .env template in backend/.env
    • Executable run scripts (run_all.sh, run_backend.sh, run_frontend.sh)

Manual Installation

If you prefer manual control over the installation process:

Option 1: Using Python venv (Recommended if you have Node.js >= 20 and Python >= 3.9)

# 1. Create Python virtual environment
python3 -m venv venv

# 2. Activate virtual environment
source venv/bin/activate

# 3. Install Python dependencies
cd backend
pip install -r requirements.txt
cd ..

# 4. Install frontend dependencies (uses system Node.js)
cd frontend
npm install
cd ..

# 5. Install debug tools
cd debug
npm install
cd ..

# 6. Create .env file
cat > backend/.env << 'EOF'
OPENAI_API_KEY=your_openai_api_key_here
ANTHROPIC_API_KEY=your_anthropic_api_key_here
GOOGLE_API_KEY=your_google_api_key_here
DATABASE_PATH=voice_conversations.db
HOST=0.0.0.0
PORT=8000
EOF

# 7. Make run scripts executable
chmod +x run_backend.sh run_frontend.sh run_all.sh

Option 2: Using Conda

# 1. Create conda environment with Python 3.11 and Node.js 20
conda create -n agentic python=3.11 nodejs=20 -y

# 2. Activate environment
conda activate agentic

# 3. Install Python dependencies
cd backend
pip install -r requirements.txt
cd ..

# 4. Install frontend dependencies
cd frontend
npm install
cd ..

# 5. Install debug tools
cd debug
npm install
cd ..

# 6. Create .env file
cat > backend/.env << 'EOF'
OPENAI_API_KEY=your_openai_api_key_here
ANTHROPIC_API_KEY=your_anthropic_api_key_here
GOOGLE_API_KEY=your_google_api_key_here
DATABASE_PATH=voice_conversations.db
HOST=0.0.0.0
PORT=8000
EOF

# 7. Make run scripts executable
chmod +x run_backend.sh run_frontend.sh run_all.sh

Option 3: Using System Python and Node.js

# 1. Verify versions
node --version    # Should be >= 20.0.0
python3 --version # Should be >= 3.9.0

# 2. Install Python dependencies
cd backend
pip3 install -r requirements.txt
cd ..

# 3. Install frontend dependencies
cd frontend
npm install
cd ..

# 4. Install debug tools
cd debug
npm install
cd ..

# 5. Create .env file
cat > backend/.env << 'EOF'
OPENAI_API_KEY=your_openai_api_key_here
ANTHROPIC_API_KEY=your_anthropic_api_key_here
GOOGLE_API_KEY=your_google_api_key_here
DATABASE_PATH=voice_conversations.db
HOST=0.0.0.0
PORT=8000
EOF

# 6. Make run scripts executable
chmod +x run_backend.sh run_frontend.sh run_all.sh

βš™οΈ Configuration

Required API Keys

Edit backend/.env and add your API keys:

# Required for voice assistant and agents
OPENAI_API_KEY=sk-...

# Required for Claude Code self-editor
ANTHROPIC_API_KEY=sk-ant-...

# Optional for web search functionality
GOOGLE_API_KEY=...

Optional Configuration

# Database path for voice conversations
DATABASE_PATH=voice_conversations.db

# Server configuration
HOST=0.0.0.0
PORT=8000

# Logging level
LOG_LEVEL=INFO

Claude Code Requirements

The self-editing feature requires the Claude CLI to be installed:

# Install Claude CLI (if not already installed)
npm install -g @anthropic-ai/claude-sdk

# Verify installation
claude --version

🎯 Usage

Running the Application

Start both backend and frontend:

./run_all.sh

Start services separately:

# Terminal 1 - Backend
./run_backend.sh

# Terminal 2 - Frontend
./run_frontend.sh

Logs location:

  • Backend: logs/backend.log (when using run_all.sh)
  • Frontend: logs/frontend.log (when using run_all.sh)

Voice Assistant Interface

  1. Navigate to http://localhost:3000/voice
  2. Click "Start Session" button
  3. Allow microphone access when prompted
  4. Speak your request naturally

Example voice commands:

  • "Create a new API endpoint for user authentication" β†’ Delegates to nested team
  • "Add a new React component for displaying charts" β†’ Claude Code edits frontend
  • "Search for the latest Python best practices" β†’ Uses web search tool
  • "Remember that our database uses PostgreSQL 15" β†’ Saves to memory

Voice Assistant Features:

  • Audio Visualization: Real-time waveform during conversation
  • Session Controls: Start, pause, cancel sessions
  • Three-tab View:
    • Team Insights: Highlights from nested team agent actions
    • Team Console: Full event stream and raw messages
    • Claude Code: Tool calls, file edits, and bash commands from Claude

Agent Dashboard & Editor

The agent dashboard provides a comprehensive interface for creating, editing, and managing AI agents with a powerful visual editor.

Agent Dashboard

Dashboard Features

Three-Panel Layout:

  1. Left Panel - Agent list with quick navigation
  2. Center Panel - Full-featured agent editor
  3. Right Panel - Live execution console with real-time results

Agent Management:

  • Create new agents from scratch or templates
  • Edit existing agent configurations
  • Delete agents with confirmation
  • Real-time validation and error checking
  • Unsaved changes warning

Creating an Agent

  1. Navigate to http://localhost:3000/agents
  2. Click "Create New Agent" button in the left panel
  3. Configure agent in the center editor panel
  4. Click "Save Agent" to persist configuration
  5. Click "Run Agent" to test execution

Agent Editor Components

1. Basic Configuration

Name:         [Unique identifier for the agent]
Agent Type:   [looping | nested_team | assistant]
Description:  [Optional description of agent purpose]

2. LLM Configuration

Provider:     [openai | anthropic | google]
Model:        [Select from available models or enter custom]
Temperature:  [0.0 - 2.0] Controls randomness
Max Tokens:   [Optional token limit for responses]

Supported Models by Provider:

  • OpenAI: gpt-4-turbo, gpt-4, gpt-3.5-turbo, gpt-4o-mini
  • Anthropic: claude-3-opus, claude-3-sonnet, claude-3-haiku
  • Google: gemini-pro, gemini-1.5-pro

3. Tool Selection

  • Multi-select dropdown with all available tools
  • Visual chips showing selected tools
  • Remove tool by clicking X on chip
  • Tool categories:
    • Web tools (search, fetch content)
    • Memory tools (short-term, long-term)
    • Code execution tools
    • Custom tools (auto-loaded from backend/tools/)

4. System Prompt Configuration

System Prompt:  [Define agent personality and behavior]
User Prompt:    [Initial task or query]

Prompt Tips:

  • Be specific about the agent's role and capabilities
  • Include tool usage guidelines if needed
  • Mention output format expectations
  • Reference any constraints or limitations

5. Advanced Settings

For Looping Agents:

Tool Call Loop:           [βœ“] Enable continuous tool calling
Reflect on Tool Use:      [βœ“] Agent reflects before using tools
Max Consecutive Replies:  [20] Limit to prevent infinite loops
Model Client Stream:      [βœ“] Enable streaming responses

For Nested Team Agents:

Sub-Agents:               [Select multiple agents for the team]
Orchestrator Mode:        [selector | broadcast]
Orchestrator Agent:       [Manager] Name of coordinating agent
Orchestrator Pattern:     [NEXT AGENT: <Name>] Response parsing pattern

Orchestration Modes

Selector Mode:

  • Orchestrator chooses ONE agent per turn
  • Best for sequential, specialized tasks
  • Example: Manager β†’ Researcher β†’ Writer β†’ Reviewer

Broadcast Mode:

  • All agents receive the message simultaneously
  • Best for parallel analysis or consensus building
  • Example: Multiple experts providing different perspectives

Agent Editor Workflow

Creating a Research Agent:

  1. Set Basic Info:

    Name: ResearchAssistant
    Type: looping
    Description: Conducts web research and stores findings
    
  2. Configure LLM:

    Provider: openai
    Model: gpt-4-turbo
    Temperature: 0.7
    Max Tokens: 4000
    
  3. Select Tools:

    • βœ“ web_search
    • βœ“ fetch_web_content
    • βœ“ save_to_long_term_memory
    • βœ“ retrieve_similar_memories
  4. Write System Prompt:

    You are a research assistant that finds, analyzes, and remembers information.
    
    When given a research topic:
    1. Use web_search to find relevant sources
    2. Use fetch_web_content to read full articles
    3. Analyze and synthesize the information
    4. Save key findings to long-term memory with descriptive tags
    5. Provide a comprehensive summary with sources
    
    Always cite your sources and tag memories appropriately.
    
  5. Set User Prompt:

    Research the latest developments in AI agent architectures and multi-agent systems.
    Focus on papers from 2024-2025.
    
  6. Configure Advanced Settings:

    Tool Call Loop: βœ“
    Reflect on Tool Use: βœ“
    Max Consecutive Replies: 20
    
  7. Save and Test:

    • Click "Save Agent" (top right)
    • Click "Run Agent" to execute
    • Monitor results in right panel console

Nested Team Configuration Example

Creating a Software Development Team:

  1. First, create individual agents:

    • ProductManager - Requirements analysis
    • Architect - System design
    • Developer - Code implementation
    • Tester - Quality assurance
  2. Create team coordinator:

    Name: DevTeam
    Type: nested_team
    Sub-Agents: [ProductManager, Architect, Developer, Tester]
    Orchestrator Mode: selector
    Orchestrator Agent: ProductManager
    
  3. System Prompt for Orchestrator:

    You are a product manager coordinating a development team.
    
    Team members:
    - Architect: Designs system architecture
    - Developer: Implements features
    - Tester: Validates functionality
    
    For each task:
    1. Analyze requirements
    2. Delegate to appropriate team member
    3. Review their output
    4. Continue until task is complete
    
    Use "NEXT AGENT: <Name>" to delegate tasks.
    

Real-time Execution Console

The right panel shows live execution with:

Event Stream:

  • TextMessage - Agent responses and reasoning
  • ToolCallRequestEvent - Tool invocations with arguments
  • ToolCallExecutionEvent - Tool results
  • TaskResult - Final outcome

Console Features:

  • Auto-scroll to latest events
  • Collapsible event details
  • JSON formatting for structured data
  • Color-coded event types
  • Timestamp for each event
  • Source identification (which agent)

Example Console Output:

[2025-10-10 14:23:15] TextMessage (ResearchAssistant)
"I'll search for recent papers on AI agent architectures..."

[2025-10-10 14:23:16] ToolCallRequestEvent
Tool: web_search
Arguments: {
  "query": "AI agent architectures 2024 2025",
  "num_results": 10
}

[2025-10-10 14:23:18] ToolCallExecutionEvent
Result: [10 search results with titles and URLs]

[2025-10-10 14:23:19] TextMessage (ResearchAssistant)
"Found several relevant papers. Let me fetch the most promising one..."

[2025-10-10 14:23:20] ToolCallRequestEvent
Tool: fetch_web_content
Arguments: {"url": "https://..."}

[2025-10-10 14:23:22] TaskResult
Status: completed
Summary: "Research complete. Saved 5 key findings to long-term memory."

Agent Editor Tips

Best Practices:

  1. Start Simple:

    • Create a basic looping agent first
    • Test with 1-2 tools
    • Add complexity incrementally
  2. Tool Selection:

    • Only include tools the agent actually needs
    • Too many tools can confuse the LLM
    • Group related functionality
  3. Prompt Engineering:

    • Be explicit about tool usage
    • Provide step-by-step workflows
    • Include examples in system prompt
    • Mention when to TERMINATE
  4. Testing Strategy:

    • Use the console to debug behavior
    • Watch tool call sequences
    • Adjust prompts based on results
    • Monitor token usage
  5. Nested Teams:

    • Create and test individual agents first
    • Ensure clear role separation
    • Use selector mode for most use cases
    • Provide orchestrator with clear delegation syntax
  6. Error Handling:

    • Editor validates configuration in real-time
    • Red indicators show required fields
    • Hover over errors for details
    • Can't save until all errors resolved

Keyboard Shortcuts

  • Ctrl+S - Save agent (when in editor)
  • Ctrl+Enter - Run agent
  • Esc - Cancel running agent
  • Ctrl+/ - Toggle JSON view

JSON Import/Export

Export Configuration:

# Via API
curl http://localhost:8000/api/agents/ResearchAssistant > research_assistant.json

Import Configuration:

# Via API
curl -X POST http://localhost:8000/api/agents \
  -H "Content-Type: application/json" \
  -d @research_assistant.json

Complete Agent JSON Example:

{
  "name": "ResearchAssistant",
  "agent_type": "looping",
  "description": "Conducts web research and stores findings in memory",
  "tools": [
    "web_search",
    "fetch_web_content",
    "save_to_long_term_memory",
    "retrieve_similar_memories"
  ],
  "llm": {
    "provider": "openai",
    "model": "gpt-4-turbo",
    "temperature": 0.7,
    "max_tokens": 4000
  },
  "prompt": {
    "system": "You are a research assistant that finds, analyzes, and remembers information.\n\nWhen given a research topic:\n1. Use web_search to find relevant sources\n2. Use fetch_web_content to read full articles\n3. Analyze and synthesize the information\n4. Save key findings to long-term memory with descriptive tags\n5. Provide a comprehensive summary with sources\n\nAlways cite your sources and tag memories appropriately.\n\nWhen complete, respond with TERMINATE.",
    "user": "Research the latest developments in AI agent architectures"
  },
  "tool_call_loop": true,
  "reflect_on_tool_use": true,
  "max_consecutive_auto_reply": 20,
  "model_client_stream": false
}

Creating Custom Tools

Tools are Python functions with type annotations and descriptions:

  1. Create tool file: backend/tools/my_custom_tool.py
from pydantic import BaseModel, Field
from autogen_core.tools import FunctionTool
from typing import Optional

def calculate_statistics(
    numbers: list[float],
    operation: str = "mean"
) -> dict:
    """
    Calculate statistics on a list of numbers.

    Args:
        numbers: List of numbers to analyze
        operation: Type of statistic (mean, median, sum, min, max)

    Returns:
        Dictionary with the result
    """
    import statistics

    operations = {
        "mean": statistics.mean,
        "median": statistics.median,
        "sum": sum,
        "min": min,
        "max": max
    }

    if operation not in operations:
        return {"error": f"Unknown operation: {operation}"}

    try:
        result = operations[operation](numbers)
        return {
            "operation": operation,
            "result": result,
            "count": len(numbers)
        }
    except Exception as e:
        return {"error": str(e)}

# Export as FunctionTool
calculate_statistics_tool = FunctionTool(
    func=calculate_statistics,
    name="calculate_statistics",
    description="Calculate statistics (mean, median, sum, min, max) on a list of numbers"
)

# Tools list (required)
tools = [calculate_statistics_tool]
  1. Tool is automatically loaded on backend restart
  2. Use in agents by adding "calculate_statistics" to tools list

Memory System

Agents can use short-term and long-term memory:

Short-term memory (in-conversation):

# Save
save_to_short_term_memory("User prefers TypeScript over JavaScript")

# Retrieve
get_short_term_memory()

Long-term memory (ChromaDB vector store):

# Save with tags
save_to_long_term_memory(
    content="PostgreSQL 15 connection string format",
    tags=["database", "postgres", "config"]
)

# Retrieve similar
retrieve_similar_memories(
    query="How do I connect to postgres?",
    top_k=3,
    tags=["database"]
)

πŸ“ Project Structure

agentic/
β”œβ”€β”€ backend/                      # FastAPI backend server
β”‚   β”œβ”€β”€ agents/                   # Agent JSON configurations
β”‚   β”‚   β”œβ”€β”€ nested_team.json     # Multi-agent team config
β”‚   β”‚   └── *.json               # Custom agent configs
β”‚   β”œβ”€β”€ tools/                    # Custom tool implementations
β”‚   β”‚   β”œβ”€β”€ web_tools.py         # Web search & fetch
β”‚   β”‚   β”œβ”€β”€ memory_tools.py      # Memory management
β”‚   β”‚   └── *.py                 # Custom tools
β”‚   β”œβ”€β”€ scripts/                  # Utility scripts
β”‚   β”‚   └── export_voice_conversations.py
β”‚   β”œβ”€β”€ main.py                   # FastAPI application
β”‚   β”œβ”€β”€ runner.py                 # Agent execution engine
β”‚   β”œβ”€β”€ agent_factory.py          # Agent creation factory
β”‚   β”œβ”€β”€ realtime_voice.py         # Voice assistant controller
β”‚   β”œβ”€β”€ voice_controller.py       # Voice session management
β”‚   β”œβ”€β”€ claude_code_controller.py # Claude Code integration
β”‚   β”œβ”€β”€ nested_agent.py           # Nested team implementation
β”‚   β”œβ”€β”€ requirements.txt          # Python dependencies
β”‚   └── .env                      # Environment variables (create this)
β”‚
β”œβ”€β”€ frontend/                     # React 18 application
β”‚   β”œβ”€β”€ public/                   # Static assets
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/           # Reusable React components
β”‚   β”‚   β”‚   β”œβ”€β”€ AudioVisualizer.js
β”‚   β”‚   β”‚   β”œβ”€β”€ ClaudeCodeInsights.js
β”‚   β”‚   β”‚   β”œβ”€β”€ NestedAgentInsights.js
β”‚   β”‚   β”‚   └── VoiceSessionControls.js
β”‚   β”‚   β”œβ”€β”€ pages/                # Page components
β”‚   β”‚   β”‚   β”œβ”€β”€ VoiceAssistant.js # Voice UI (main interface)
β”‚   β”‚   β”‚   β”œβ”€β”€ AgentDashboard.js # Agent management
β”‚   β”‚   β”‚   └── HomePage.js       # Landing page
β”‚   β”‚   β”œβ”€β”€ api.js                # API client functions
β”‚   β”‚   β”œβ”€β”€ App.js                # Main app component
β”‚   β”‚   └── index.js              # Entry point
β”‚   β”œβ”€β”€ package.json              # Node.js dependencies
β”‚   └── package-lock.json
β”‚
β”œβ”€β”€ debug/                        # Development tools
β”‚   β”œβ”€β”€ screenshot.js             # Puppeteer screenshot automation
β”‚   β”œβ”€β”€ screenshots/              # Screenshot storage
β”‚   β”‚   └── readme/               # README screenshots
β”‚   β”œβ”€β”€ package.json              # Debug tool dependencies
β”‚   └── AUTOMATED_UI_DEVELOPMENT.md
β”‚
β”œβ”€β”€ logs/                         # Application logs
β”‚   β”œβ”€β”€ backend.log               # Backend logs
β”‚   β”œβ”€β”€ frontend.log              # Frontend logs
β”‚   └── voice_exports/            # Exported conversations (JSON)
β”‚
β”œβ”€β”€ venv/                         # Python virtual environment (created by install.sh)
β”‚
β”œβ”€β”€ install.sh                    # Automated installation script
β”œβ”€β”€ run_all.sh                    # Run both services
β”œβ”€β”€ run_backend.sh                # Run backend only
β”œβ”€β”€ run_frontend.sh               # Run frontend only
β”œβ”€β”€ CLAUDE.md                     # Comprehensive developer documentation
└── README.md                     # This file

πŸ”¨ Development

Backend Development

Key files:

  • main.py - FastAPI routes and WebSocket endpoints
  • runner.py - Agent execution with event streaming
  • agent_factory.py - Creates agents from JSON configs
  • realtime_voice.py - OpenAI Realtime API integration
  • claude_code_controller.py - Claude CLI subprocess management

Add new WebSocket endpoint:

# backend/main.py
@app.websocket("/api/custom-endpoint")
async def custom_endpoint(websocket: WebSocket):
    await websocket.accept()
    # Your logic here

Hot reload: Backend automatically reloads on file changes (uvicorn --reload flag)

Frontend Development

Key files:

  • VoiceAssistant.js - Main voice interface with WebSocket management
  • api.js - Backend API client functions
  • ClaudeCodeInsights.js - Claude Code event visualization
  • NestedAgentInsights.js - Team agent event highlights

Add new page:

// frontend/src/pages/MyNewPage.js
import React from 'react';

function MyNewPage() {
  return <div>New Page Content</div>;
}

export default MyNewPage;

Hot reload: React development server automatically reloads on file changes

Tool Development Pattern

# backend/tools/example_tool.py
from autogen_core.tools import FunctionTool
from typing import Optional

def my_tool(
    required_param: str,
    optional_param: Optional[int] = 10
) -> dict:
    """
    Brief description visible to LLM.

    Args:
        required_param: Description of required parameter
        optional_param: Description of optional parameter

    Returns:
        Result dictionary
    """
    # Implementation
    return {"status": "success", "result": "..."}

my_tool_func = FunctionTool(
    func=my_tool,
    name="my_tool",
    description="One-line description for tool selection"
)

tools = [my_tool_func]

Environment Activation

With venv:

source venv/bin/activate
# Your development work
deactivate

With conda:

conda activate agentic
# Your development work
conda deactivate

πŸ› Debugging

Screenshot-based UI Development

Automate visual regression testing:

# Before making changes
node debug/screenshot.js http://localhost:3000/voice debug/screenshots/before.png 3000

# Make UI changes in React components

# After changes
node debug/screenshot.js http://localhost:3000/voice debug/screenshots/after.png 3000

# Compare screenshots visually

Screenshot tool usage:

node debug/screenshot.js <URL> <OUTPUT_PATH> [WAIT_MS]

# Examples:
node debug/screenshot.js http://localhost:3000 output.png 2000
node debug/screenshot.js http://localhost:3000/agents dashboard.png 5000

Voice Conversation Export

Export SQLite conversations to JSON for analysis:

cd backend
python3 scripts/export_voice_conversations.py

# Output: logs/voice_exports/{conversation_id}.json

Analyze with jq:

# Find all Claude Code tool calls
jq '.events[] | select(.source == "claude_code" and .type == "ToolCallRequestEvent")' \
  logs/voice_exports/{id}.json

# Find all Bash commands executed
jq '.events[] | select(.type == "ToolCallRequestEvent" and .data.data.name == "Bash") | .data.data.arguments.command' \
  logs/voice_exports/{id}.json

# Get conversation timeline
jq '.events[] | {timestamp, source, type}' logs/voice_exports/{id}.json

Log Analysis

# Real-time backend logs
tail -f logs/backend.log

# Real-time frontend logs
tail -f logs/frontend.log

# Search for errors
grep -i error logs/backend.log
grep -i error logs/frontend.log

# View specific conversation events (in browser console)
# Press F12 β†’ Console tab β†’ Look for WebSocket messages

Browser DevTools

  • F12 - Open DevTools
  • Console tab - View JavaScript logs and errors
  • Network tab - Monitor WebSocket connections
  • Application tab - Check localStorage, cookies

πŸ—οΈ Architecture

System Overview

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                      User Interface                          β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”‚
β”‚  β”‚ Voice UI     β”‚  β”‚ Agent Dash   β”‚  β”‚ Tool Manager β”‚      β”‚
β”‚  β”‚ (React)      β”‚  β”‚ (React)      β”‚  β”‚ (React)      β”‚      β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜      β”‚
β”‚         β”‚ WebSocket       β”‚ REST             β”‚ REST          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚                 β”‚                  β”‚
          β–Ό                 β–Ό                  β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    FastAPI Backend                           β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚  WebSocket Endpoints                                  β”‚   β”‚
β”‚  β”‚  β€’ /api/realtime-voice                               β”‚   β”‚
β”‚  β”‚  β€’ /api/runs/{agent_name}                            β”‚   β”‚
β”‚  β”‚  β€’ /api/runs/ClaudeCode                              β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                 β”‚                                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚  Controllers                                          β”‚   β”‚
β”‚  β”‚  β”œβ”€β”€ Voice Controller (OpenAI Realtime API)          β”‚   β”‚
β”‚  β”‚  β”œβ”€β”€ Agent Runner (AutoGen execution)                β”‚   β”‚
β”‚  β”‚  └── Claude Code Controller (CLI subprocess)         β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                 β”‚                                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚  Agent Factory                                        β”‚   β”‚
β”‚  β”‚  β€’ Load agent configs (JSON)                          β”‚   β”‚
β”‚  β”‚  β€’ Create agent instances                             β”‚   β”‚
β”‚  β”‚  β€’ Attach tools                                       β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                 β”‚                                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚  Tool System                                          β”‚   β”‚
β”‚  β”‚  β€’ Web search & fetch                                 β”‚   β”‚
β”‚  β”‚  β€’ Memory (short-term & ChromaDB)                     β”‚   β”‚
β”‚  β”‚  β€’ Custom tools (auto-loaded)                         β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                  β”‚
                  β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  External Services                                           β”‚
β”‚  β€’ OpenAI API (GPT-4, Realtime API)                         β”‚
β”‚  β€’ Anthropic API (Claude models, Claude Code)               β”‚
β”‚  β€’ Google Search API (optional)                             β”‚
β”‚  β€’ ChromaDB (vector memory)                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Voice Assistant Flow

User Speech
    ↓
OpenAI Realtime API (WebRTC)
    ↓
Voice Controller
    ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Route based on intent:     β”‚
β”‚  1. send_to_nested β†’ Team   β”‚
β”‚  2. send_to_claude_code β†’   β”‚
β”‚     Claude Code             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
              β”‚
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β–Ό                   β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Nested     β”‚   β”‚ Claude Code  β”‚
β”‚ Team Agent β”‚   β”‚ Subprocess   β”‚
β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
      β”‚                 β”‚
      β”‚ Events          β”‚ Events
      β”‚ (WebSocket)     β”‚ (WebSocket)
      β”‚                 β”‚
      β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β–Ό
    Frontend Visualizer
    (3 tabs: Insights, Console, Code)
               β”‚
               β–Ό
    Voice Narration
    (Text-to-Speech)

Agent Types

1. Looping Agent

  • Single LLM instance
  • Tool call loop until TERMINATE
  • Reflection on tool use (optional)
  • Max turns limit

2. Nested Team

  • Multiple sub-agents with specializations
  • Orchestrator coordination (selector or broadcast)
  • Shared or isolated memory
  • Custom prompt templates

WebSocket Event Format

All events follow this structure:

{
  "type": "EventType",
  "data": {
    "type": "EventType",
    "data": { /* event-specific payload */ }
  },
  "source": "nested" | "claude_code" | "system",
  "timestamp": "2025-10-10T12:00:00Z"
}

Common event types:

  • TextMessage - Assistant text responses
  • ToolCallRequestEvent - Tool call initiated
  • ToolCallExecutionEvent - Tool call completed
  • TaskResult - Agent task completion
  • SystemEvent - System notifications

πŸ“‘ API Reference

REST Endpoints

Agents

GET /api/agents

List all available agents.

Response:

[
  "nested_team",
  "ResearchAssistant",
  "CodeReviewer"
]

GET /api/agents/{name}

Get agent configuration.

Response:

{
  "name": "nested_team",
  "agent_type": "nested_team",
  "tools": ["web_search"],
  "llm": { "provider": "openai", "model": "gpt-4-turbo" },
  "prompt": { "system": "..." }
}

POST /api/agents

Create or update agent configuration.

Request body:

{
  "name": "MyAgent",
  "agent_type": "looping",
  "tools": ["web_search"],
  "llm": {
    "provider": "openai",
    "model": "gpt-4-turbo",
    "temperature": 0.7
  },
  "prompt": {
    "system": "You are a helpful assistant.",
    "user": "Task description"
  }
}

DELETE /api/agents/{name}

Delete agent configuration.


Tools

GET /api/tools

List all available tools.

Response:

[
  "web_search",
  "fetch_web_content",
  "save_to_short_term_memory",
  "get_short_term_memory",
  "save_to_long_term_memory",
  "retrieve_similar_memories"
]

POST /api/tools

Upload custom tool file.

Request: multipart/form-data with Python file


WebSocket Endpoints

Generic Agent Execution

ws://localhost:8000/api/runs/{agent_name}

Send messages:

{"type": "user_message", "data": "Your task here"}
{"type": "cancel"}

Receive events:

{"type": "TextMessage", "data": {...}, "source": "nested"}
{"type": "ToolCallRequestEvent", "data": {...}}
{"type": "TaskResult", "data": {...}}

Voice Assistant

ws://localhost:8000/api/realtime-voice

Handles OpenAI Realtime API WebRTC connection with tool forwarding.


Claude Code Self-Editor

ws://localhost:8000/api/runs/ClaudeCode

Send messages:

{"type": "user_message", "data": "Add a new API endpoint"}
{"type": "cancel"}

Receive events:

{
  "type": "ToolCallRequestEvent",
  "data": {
    "type": "ToolCallRequestEvent",
    "data": {
      "name": "Edit",
      "arguments": {
        "file_path": "/path/to/file.py",
        "old_string": "...",
        "new_string": "..."
      }
    }
  },
  "source": "claude_code"
}

πŸ”§ Troubleshooting

Installation Issues

Problem: install.sh fails with "command not found"

Solution:

chmod +x install.sh
./install.sh

Problem: Python venv module not available

Solution:

# Ubuntu/Debian
sudo apt-get install python3-venv

# Or use conda
conda create -n agentic python=3.11 nodejs=20 -y
conda activate agentic

Backend Issues

Problem: Backend won't start - "ModuleNotFoundError"

Solution:

# Ensure virtual environment is activated
source venv/bin/activate  # or: conda activate agentic

# Reinstall dependencies
cd backend
pip install -r requirements.txt

Problem: "Missing API keys" error

Solution:

# Check .env file exists and has keys
cat backend/.env

# Should contain:
# OPENAI_API_KEY=sk-...
# ANTHROPIC_API_KEY=sk-ant-...

Problem: Port 8000 already in use

Solution:

# Find process using port
lsof -i :8000

# Kill process
kill -9 <PID>

# Or change port in backend/.env:
PORT=8001

Frontend Issues

Problem: Frontend won't start - "npm ERR!"

Solution:

cd frontend
rm -rf node_modules package-lock.json
npm install

Problem: "WebSocket connection failed"

Solution:

  1. Verify backend is running: curl http://localhost:8000/api/agents
  2. Check browser console (F12) for specific error
  3. Ensure no proxy/firewall blocking WebSocket connections

Voice Assistant Issues

Problem: Microphone access denied

Solution:

  • Allow microphone permission in browser
  • Use HTTPS or localhost (required for getUserMedia)
  • Check browser settings for site permissions

Problem: No audio visualization

Solution:

# Check browser console for AudioContext errors
# Ensure browser supports Web Audio API
# Try clicking page first (required for AudioContext on some browsers)

Problem: Voice assistant doesn't respond

Solution:

  1. Check OpenAI API key is valid
  2. Verify backend logs for errors: tail -f logs/backend.log
  3. Check network tab (F12) for WebSocket connection status
  4. Ensure OPENAI_API_KEY has Realtime API access

Claude Code Issues

Problem: "Claude CLI not found"

Solution:

# Install Claude CLI
npm install -g @anthropic-ai/claude-sdk

# Verify
claude --version

# Check it's in PATH
which claude

Problem: Claude Code subprocess crashes

Solution:

# Check backend logs
tail -f logs/backend.log | grep -i claude

# Verify Anthropic API key
echo $ANTHROPIC_API_KEY

# Test Claude CLI manually
claude --print "Hello"

Database Issues

Problem: SQLite database locked

Solution:

# Close all connections to database
pkill -f uvicorn

# Remove lock file if exists
rm backend/voice_conversations.db-wal
rm backend/voice_conversations.db-shm

# Restart backend
./run_backend.sh

Memory Issues

Problem: ChromaDB errors

Solution:

# Reinstall ChromaDB
pip install --force-reinstall chromadb

# Clear ChromaDB data
rm -rf backend/chroma_db/

# Restart backend

General Debugging Steps

  1. Check logs:

    tail -f logs/backend.log
    tail -f logs/frontend.log
  2. Export conversation for analysis:

    cd backend
    python3 scripts/export_voice_conversations.py
    # Check logs/voice_exports/*.json
  3. Take screenshots for UI issues:

    node debug/screenshot.js http://localhost:3000/voice error-screenshot.png 3000
  4. Check environment:

    # Python
    python3 --version
    which python3
    
    # Node.js
    node --version
    which node
    
    # Virtual environment
    which python  # Should point to venv/bin/python or conda env
  5. Restart everything:

    # Kill all processes
    pkill -f uvicorn
    pkill -f "npm start"
    
    # Clear logs
    rm -f logs/*.log
    
    # Restart
    ./run_all.sh

πŸ“š Additional Documentation

  • CLAUDE.md - Comprehensive developer guide for future Claude instances

    • Complete codebase walkthrough
    • Agent creation patterns
    • Tool development guide
    • Debugging workflows
    • Architecture deep-dive
  • debug/AUTOMATED_UI_DEVELOPMENT.md - UI development workflow with screenshot automation


🀝 Contributing

This is a personal project for experimenting with multi-agent systems. If you're working on this codebase:

  1. Document changes in CLAUDE.md for future reference
  2. Update README.md if adding new features
  3. Test with screenshot automation for UI changes
  4. Export conversations to verify agent behavior
  5. Update agent configs in backend/agents/ as needed

πŸ“„ License

Private project - All rights reserved


πŸ’‘ Tips & Best Practices

Voice Assistant

  • Be specific with voice commands for best results
  • Wait for completion before issuing new commands
  • Use natural language - the assistant understands context
  • Check the tabs - Team Insights for highlights, Console for details, Claude Code for edits

Agent Configuration

  • Start simple - Test with looping agent before nested teams
  • Limit tools - Only include tools the agent actually needs
  • Set max_turns - Prevent infinite loops (recommended: 10-20)
  • Use reflection - Enable reflect_on_tool_use for better reasoning

Tool Development

  • Clear descriptions - LLM uses these to decide when to call the tool
  • Type hints - Required for proper schema generation
  • Error handling - Always return dict with "error" key on failure
  • Keep it focused - One tool should do one thing well

Debugging

  • Screenshot everything - Visual regression testing catches UI bugs
  • Export conversations - JSON analysis reveals agent reasoning
  • Monitor WebSocket - Browser DevTools Network tab shows real-time events
  • Check both logs - Backend for Python errors, frontend for React errors

🌟 The Vision

Agentic represents a paradigm shift in how we interact with AI agents.

Instead of writing code to configure agents, you design them visually. Instead of reading logs to debug, you watch them execute in real-time. Instead of running CLI commands, you speak naturally to orchestrate complex workflows.

This is agent development reimagined for humansβ€”not just engineers.

What Makes Agentic Different?

Traditional Frameworks Agentic System
βš™οΈ Code-first configuration 🎨 Visual drag-and-drop editor
πŸ“ Text log debugging πŸ“Ί Real-time execution visualization
πŸ’» CLI/Script execution πŸŽ™οΈ Natural voice control
πŸ”§ Manual tool integration πŸ”Œ Auto-discovered tool system
πŸ€” "Did it work?" βœ… "Watch it happen"
⏱️ Hours to prototype ⚑ Minutes to deploy

Use Cases

For Developers:

  • Rapid prototyping of agent behaviors
  • Visual debugging of multi-agent interactions
  • Testing different LLM models and configurations
  • Building production-ready agent systems

For Researchers:

  • Experimenting with agent architectures
  • Analyzing agent decision-making patterns
  • Comparing model performance
  • Publishing reproducible agent configurations

For Teams:

  • Coordinating specialized AI agents
  • Automating complex workflows
  • Building custom AI assistants
  • Self-improving automation systems

For Everyone:

  • Voice-controlled task automation
  • Natural language system control
  • No-code agent creation
  • Accessible AI orchestration

🀝 Join the Future of Agent Development

Agentic is more than a frameworkβ€”it's a new way of thinking about AI agent development. One where:

  • Visibility replaces guesswork
  • Simplicity replaces complexity
  • Voice replaces typing
  • Teams replace single agents
  • Self-improvement becomes the norm

Start building agents that can operate anything. Today.


Last Updated: 2025-10-10

Version: 2.0.0 - The Visual Agent Revolution

Built with ❀️ for the future of human-AI collaboration

About

AutoGen Agents Creation and Testing - VibeCoded by a real developer to enable more people to do stuff using vibes.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •