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
β 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.
β Code-first configuration
β Log-based debugging
β100+ lines of boilerplate
β Restart after every change
β No visual feedback
β Manual team coordinationExample: Write complex config files β Read logs to debug β Restart repeatedly β No visibility into agent reasoning.
β
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:
- "Research quantum computing and write a report"
- Agent team autonomously decides: Search β Read β Analyze β Organize β Write
- If stuck, agents adapt: Try different sources, ask for clarification, delegate to specialists
- You watch it happen in real-time
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
| 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) |
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.
- 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
- 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
- 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
- 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
- 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
- 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
- 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
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.
- Quick Start
- Why Agentic
- What Can You Build
- Installation Methods
- Configuration
- Usage
- Project Structure
- Development
- Debugging
- Architecture
- API Reference
- Troubleshooting
- Node.js >= 20.0.0
- Python >= 3.9.0
- pip package manager
- API Keys: OpenAI and Anthropic
# 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- Frontend: http://localhost:3000
- Voice Assistant: http://localhost:3000/voice
- API Docs: http://localhost:8000/docs
- Backend API: http://localhost:8000
The automated installation script handles dependency checking and environment setup:
./install.shWhat it does:
-
Checks dependencies:
- Node.js >= 20.0.0
- Python >= 3.9.0
- pip package manager
- Python venv module
-
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
- All dependencies present + venv available: Creates Python virtual environment (
-
Installs packages:
- Python dependencies from
backend/requirements.txt - Frontend Node.js packages
- Debug tool dependencies
- Python dependencies from
-
Creates configuration:
.envtemplate inbackend/.env- Executable run scripts (
run_all.sh,run_backend.sh,run_frontend.sh)
If you prefer manual control over the installation process:
# 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# 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# 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.shEdit 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=...# Database path for voice conversations
DATABASE_PATH=voice_conversations.db
# Server configuration
HOST=0.0.0.0
PORT=8000
# Logging level
LOG_LEVEL=INFOThe 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 --versionStart both backend and frontend:
./run_all.shStart services separately:
# Terminal 1 - Backend
./run_backend.sh
# Terminal 2 - Frontend
./run_frontend.shLogs location:
- Backend:
logs/backend.log(when usingrun_all.sh) - Frontend:
logs/frontend.log(when usingrun_all.sh)
- Navigate to http://localhost:3000/voice
- Click "Start Session" button
- Allow microphone access when prompted
- 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
The agent dashboard provides a comprehensive interface for creating, editing, and managing AI agents with a powerful visual editor.
Three-Panel Layout:
- Left Panel - Agent list with quick navigation
- Center Panel - Full-featured agent editor
- 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
- Navigate to http://localhost:3000/agents
- Click "Create New Agent" button in the left panel
- Configure agent in the center editor panel
- Click "Save Agent" to persist configuration
- Click "Run Agent" to test execution
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
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
Creating a Research Agent:
-
Set Basic Info:
Name: ResearchAssistant Type: looping Description: Conducts web research and stores findings -
Configure LLM:
Provider: openai Model: gpt-4-turbo Temperature: 0.7 Max Tokens: 4000 -
Select Tools:
- β web_search
- β fetch_web_content
- β save_to_long_term_memory
- β retrieve_similar_memories
-
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. -
Set User Prompt:
Research the latest developments in AI agent architectures and multi-agent systems. Focus on papers from 2024-2025. -
Configure Advanced Settings:
Tool Call Loop: β Reflect on Tool Use: β Max Consecutive Replies: 20 -
Save and Test:
- Click "Save Agent" (top right)
- Click "Run Agent" to execute
- Monitor results in right panel console
Creating a Software Development Team:
-
First, create individual agents:
ProductManager- Requirements analysisArchitect- System designDeveloper- Code implementationTester- Quality assurance
-
Create team coordinator:
Name: DevTeam Type: nested_team Sub-Agents: [ProductManager, Architect, Developer, Tester] Orchestrator Mode: selector Orchestrator Agent: ProductManager -
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.
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."
Best Practices:
-
Start Simple:
- Create a basic looping agent first
- Test with 1-2 tools
- Add complexity incrementally
-
Tool Selection:
- Only include tools the agent actually needs
- Too many tools can confuse the LLM
- Group related functionality
-
Prompt Engineering:
- Be explicit about tool usage
- Provide step-by-step workflows
- Include examples in system prompt
- Mention when to TERMINATE
-
Testing Strategy:
- Use the console to debug behavior
- Watch tool call sequences
- Adjust prompts based on results
- Monitor token usage
-
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
-
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
- Ctrl+S - Save agent (when in editor)
- Ctrl+Enter - Run agent
- Esc - Cancel running agent
- Ctrl+/ - Toggle JSON view
Export Configuration:
# Via API
curl http://localhost:8000/api/agents/ResearchAssistant > research_assistant.jsonImport Configuration:
# Via API
curl -X POST http://localhost:8000/api/agents \
-H "Content-Type: application/json" \
-d @research_assistant.jsonComplete 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
}Tools are Python functions with type annotations and descriptions:
- 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]- Tool is automatically loaded on backend restart
- Use in agents by adding
"calculate_statistics"to tools list
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"]
)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
Key files:
main.py- FastAPI routes and WebSocket endpointsrunner.py- Agent execution with event streamingagent_factory.py- Creates agents from JSON configsrealtime_voice.py- OpenAI Realtime API integrationclaude_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 hereHot reload: Backend automatically reloads on file changes (uvicorn --reload flag)
Key files:
VoiceAssistant.js- Main voice interface with WebSocket managementapi.js- Backend API client functionsClaudeCodeInsights.js- Claude Code event visualizationNestedAgentInsights.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
# 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]With venv:
source venv/bin/activate
# Your development work
deactivateWith conda:
conda activate agentic
# Your development work
conda deactivateAutomate 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 visuallyScreenshot 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 5000Export SQLite conversations to JSON for analysis:
cd backend
python3 scripts/export_voice_conversations.py
# Output: logs/voice_exports/{conversation_id}.jsonAnalyze 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# 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- F12 - Open DevTools
- Console tab - View JavaScript logs and errors
- Network tab - Monitor WebSocket connections
- Application tab - Check localStorage, cookies
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 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) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
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)
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
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 responsesToolCallRequestEvent- Tool call initiatedToolCallExecutionEvent- Tool call completedTaskResult- Agent task completionSystemEvent- System notifications
GET /api/agentsList 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/agentsCreate 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.
GET /api/toolsList 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/toolsUpload custom tool file.
Request: multipart/form-data with Python file
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": {...}}ws://localhost:8000/api/realtime-voice
Handles OpenAI Realtime API WebRTC connection with tool forwarding.
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"
}Problem: install.sh fails with "command not found"
Solution:
chmod +x install.sh
./install.shProblem: 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 agenticProblem: 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.txtProblem: "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=8001Problem: Frontend won't start - "npm ERR!"
Solution:
cd frontend
rm -rf node_modules package-lock.json
npm installProblem: "WebSocket connection failed"
Solution:
- Verify backend is running:
curl http://localhost:8000/api/agents - Check browser console (F12) for specific error
- Ensure no proxy/firewall blocking WebSocket connections
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:
- Check OpenAI API key is valid
- Verify backend logs for errors:
tail -f logs/backend.log - Check network tab (F12) for WebSocket connection status
- Ensure OPENAI_API_KEY has Realtime API access
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 claudeProblem: 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"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.shProblem: ChromaDB errors
Solution:
# Reinstall ChromaDB
pip install --force-reinstall chromadb
# Clear ChromaDB data
rm -rf backend/chroma_db/
# Restart backend-
Check logs:
tail -f logs/backend.log tail -f logs/frontend.log
-
Export conversation for analysis:
cd backend python3 scripts/export_voice_conversations.py # Check logs/voice_exports/*.json
-
Take screenshots for UI issues:
node debug/screenshot.js http://localhost:3000/voice error-screenshot.png 3000
-
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
-
Restart everything:
# Kill all processes pkill -f uvicorn pkill -f "npm start" # Clear logs rm -f logs/*.log # Restart ./run_all.sh
-
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
This is a personal project for experimenting with multi-agent systems. If you're working on this codebase:
- Document changes in CLAUDE.md for future reference
- Update README.md if adding new features
- Test with screenshot automation for UI changes
- Export conversations to verify agent behavior
- Update agent configs in
backend/agents/as needed
Private project - All rights reserved
- 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
- 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_usefor better reasoning
- 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
- 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
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.
| 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 |
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
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

