A Python framework to emulate Grok heavy functionality using a powerful multi-agent system. Built on OpenRouter's API, Make It heavy delivers comprehensive, multi-perspective analysis through intelligent agent orchestration.
- ๐ง Grok heavy Emulation: Multi-agent system that delivers deep, comprehensive analysis like Grok heavy mode
- ๐ Parallel Intelligence: Deploy 4 specialized agents simultaneously for maximum insight coverage
- ๐ฏ Dynamic Question Generation: AI creates custom research questions tailored to each query
- โก Real-time Orchestration: Live visual feedback during multi-agent execution
- ๐ ๏ธ Hot-Swappable Tools: Automatically discovers and loads tools from the
tools/
directory - ๐ Intelligent Synthesis: Combines multiple agent perspectives into unified, comprehensive answers
- ๐ฎ Single Agent Mode: Run individual agents for simpler tasks with full tool access
- Python 3.8+
- uv (recommended Python package manager)
- OpenRouter API key
- Clone and setup environment:
git clone <https://github.com/Doriandarko/make-it-heavy.git>
cd "make it heavy"
# Create virtual environment with uv
uv venv
# Activate virtual environment
source .venv/bin/activate # On Windows: .venv\Scripts\activate
- Install dependencies:
uv pip install -r requirements.txt
- Configure API key:
# Edit config.yaml and replace YOUR API KEY HERE with your OpenRouter API key
Run a single intelligent agent with full tool access:
uv run main.py
What it does:
- Loads a single agent with all available tools
- Processes your query step-by-step
- Uses tools like web search, calculator, file operations
- Returns comprehensive response when task is complete
Example:
User: Research the latest developments in AI and summarize them
Agent: [Uses search tool, analyzes results, provides summary]
Emulate Grok heavy's deep analysis with 4 parallel intelligent agents:
uv run make_it_heavy.py
How Make It heavy works:
- ๐ฏ AI Question Generation: Creates 4 specialized research questions from your query
- ๐ Parallel Intelligence: Runs 4 agents simultaneously with different analytical perspectives
- โก Live Progress: Shows real-time agent status with visual progress bars
- ๐ Intelligent Synthesis: Combines all perspectives into one comprehensive Grok heavy-style answer
Example Flow:
User Query: "Who is Pietro Schirano?"
AI Generated Questions:
- Agent 1: "Research Pietro Schirano's professional background and career history"
- Agent 2: "Analyze Pietro Schirano's achievements and contributions to technology"
- Agent 3: "Find alternative perspectives on Pietro Schirano's work and impact"
- Agent 4: "Verify and cross-check information about Pietro Schirano's current role"
Result: Grok heavy-style comprehensive analysis combining all agent perspectives
graph TD
A[User Input] --> B[Question Generation Agent]
B --> C[Generate 4 Specialized Questions]
C --> D[Parallel Agent Execution]
D --> E[Agent 1: Research]
D --> F[Agent 2: Analysis]
D --> G[Agent 3: Alternatives]
D --> H[Agent 4: Verification]
E --> I[Synthesis Agent]
F --> I
G --> I
H --> I
I --> J[Comprehensive Final Answer]
- Self-contained: Complete agent implementation with tool access
- Agentic Loop: Continues working until task completion
- Tool Integration: Automatic tool discovery and execution
- Configurable: Uses
config.yaml
for all settings
- Dynamic Question Generation: AI creates specialized questions
- Parallel Execution: Runs multiple agents simultaneously
- Response Synthesis: AI combines all agent outputs
- Error Handling: Graceful fallbacks and error recovery
- Auto-Discovery: Automatically loads all tools from directory
- Hot-Swappable: Add new tools by dropping files in
tools/
- Standardized Interface: All tools inherit from
BaseTool
Tool | Purpose | Parameters |
---|---|---|
search_web |
Web search with DuckDuckGo | query , max_results |
calculate |
Safe mathematical calculations | expression |
read_file |
Read file contents | path , head , tail |
write_file |
Create/overwrite files | path , content |
mark_task_complete |
Signal task completion | task_summary , completion_message |
Edit config.yaml
to customize behavior:
# OpenRouter API settings
openrouter:
api_key: "YOUR KEY"
base_url: "https://openrouter.ai/api/v1"
model: "openai/gpt-4.1-mini" # Change model here
# Agent settings
agent:
max_iterations: 10
# Orchestrator settings
orchestrator:
parallel_agents: 4 # Number of parallel agents
task_timeout: 300 # Timeout per agent (seconds)
# Dynamic question generation prompt
question_generation_prompt: |
You are an orchestrator that needs to create {num_agents} different questions...
# Response synthesis prompt
synthesis_prompt: |
You have {num_responses} different AI agents that analyzed the same query...
# Tool settings
search:
max_results: 5
user_agent: "Mozilla/5.0 (compatible; OpenRouter Agent)"
- Create a new file in
tools/
directory - Inherit from
BaseTool
- Implement required methods:
from .base_tool import BaseTool
class MyCustomTool(BaseTool):
@property
def name(self) -> str:
return "my_tool"
@property
def description(self) -> str:
return "Description of what this tool does"
@property
def parameters(self) -> dict:
return {
"type": "object",
"properties": {
"param": {"type": "string", "description": "Parameter description"}
},
"required": ["param"]
}
def execute(self, param: str) -> dict:
# Tool implementation
return {"result": "success"}
- The tool will be automatically discovered and loaded!
Supports any OpenRouter-compatible model:
openrouter:
model: "anthropic/claude-3.5-sonnet" # For complex reasoning
model: "openai/gpt-4.1-mini" # For cost efficiency
model: "google/gemini-2.0-flash-001" # For speed
model: "meta-llama/llama-3.1-70b" # For open source
Change number of parallel agents:
orchestrator:
parallel_agents: 6 # Run 6 agents instead of 4
Note: Make sure your OpenRouter plan supports the concurrent usage!
User: "Analyze the impact of AI on software development in 2024"
Single Agent: Comprehensive research report
Grok heavy Mode: 4 specialized perspectives combined into deep, multi-faceted analysis
User: "How do I optimize a React application for performance?"
Single Agent: Step-by-step optimization guide
Grok heavy Mode: Research + Analysis + Alternatives + Verification = Complete expert guide
User: "Create a business plan for an AI startup"
Single Agent: Structured business plan
Grok heavy Mode: Market research + Financial analysis + Competitive landscape + Risk assessment
API Key Error:
Error: Invalid API key
Solution: Update config.yaml with valid OpenRouter API key
Tool Import Error:
Error: Could not load tool from filename.py
Solution: Check tool inherits from BaseTool and implements required methods
Synthesis Failure:
๐จ SYNTHESIS FAILED: [error message]
Solution: Check model compatibility and API limits
Timeout Issues:
Agent timeout errors
Solution: Increase task_timeout in config.yaml
For detailed debugging, modify orchestrator to show synthesis process:
# In orchestrator.py
synthesis_agent = OpenRouterAgent(silent=False) # Enable debug output
make it heavy/
โโโ main.py # Single agent CLI
โโโ make_it_heavy.py # Multi-agent orchestrator CLI
โโโ agent.py # Core agent implementation
โโโ orchestrator.py # Multi-agent orchestration logic
โโโ config.yaml # Configuration file
โโโ requirements.txt # Python dependencies
โโโ README.md # This file
โโโ tools/ # Tool system
โโโ __init__.py # Auto-discovery system
โโโ base_tool.py # Tool base class
โโโ search_tool.py # Web search
โโโ calculator_tool.py # Math calculations
โโโ read_file_tool.py # File reading
โโโ write_file_tool.py # File writing
โโโ task_done_tool.py # Task completion
- Fork the repository
- Create a feature branch
- Add new tools or improve existing functionality
- Test with both single and multi-agent modes
- Submit a pull request
MIT License with Commercial Attribution Requirement
For products with 100K+ users: Please include attribution to Pietro Schirano and mention the "Make It heavy" framework in your documentation or credits.
See LICENSE file for full details.
- Built with OpenRouter for LLM API access
- Uses uv for Python package management
- Inspired by Grok heavy mode and advanced multi-agent AI systems
Ready to make it heavy? ๐
uv run make_it_heavy.py