# QwenClaw Rig Integration ## Overview QwenClaw now integrates with **Rig** (https://github.com/0xPlaygrounds/rig), a high-performance Rust AI agent framework, providing: - πŸ€– **Multi-Agent Orchestration** - Agent councils for complex tasks - πŸ› οΈ **Dynamic Tool Calling** - Context-aware tool resolution - πŸ“š **RAG Workflows** - Vector store integration for semantic search - ⚑ **High Performance** - Rust-native speed and efficiency --- ## Architecture ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ QwenClaw │────▢│ Rig Service β”‚ β”‚ (TypeScript) │◀────│ (Rust + Rig) β”‚ β”‚ - Daemon β”‚ β”‚ - Agents β”‚ β”‚ - Web UI β”‚ β”‚ - Tools β”‚ β”‚ - Scheduling β”‚ β”‚ - Vector Store β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β–Ό β–Ό Qwen Code OpenAI/Anthropic Telegram SQLite Vectors ``` --- ## Quick Start ### 1. Start Rig Service ```bash cd rig-service # Set environment variables export OPENAI_API_KEY="your-key-here" export RIG_HOST="127.0.0.1" export RIG_PORT="8080" # Build and run cargo build --release cargo run ``` ### 2. Use Rig in QwenClaw ```typescript import { initRigClient, executeWithRig } from "./src/rig"; // Initialize Rig client const rig = initRigClient("127.0.0.1", 8080); // Check if Rig is available if (await rig.health()) { console.log("βœ… Rig service is running!"); } // Create an agent const sessionId = await rig.createAgent({ name: "researcher", preamble: "You are a research specialist.", model: "gpt-4", }); // Execute prompt const result = await executeWithRig(sessionId, "Research AI trends in 2026"); console.log(result); ``` --- ## API Reference ### Agents ```typescript // Create agent const sessionId = await rig.createAgent({ name: "assistant", preamble: "You are a helpful assistant.", model: "gpt-4", provider: "openai", temperature: 0.7, }); // List agents const agents = await rig.listAgents(); // Execute prompt const response = await rig.executePrompt(sessionId, "Hello!"); // Get agent details const agent = await rig.getAgent(sessionId); // Delete agent await rig.deleteAgent(sessionId); ``` ### Multi-Agent Councils ```typescript // Create council with multiple agents const councilId = await rig.createCouncil("Research Team", [ { name: "researcher", preamble: "You are a research specialist.", model: "gpt-4", }, { name: "analyst", preamble: "You are a data analyst.", model: "gpt-4", }, { name: "writer", preamble: "You are a content writer.", model: "gpt-4", }, ]); // Execute task with council const result = await rig.executeCouncil(councilId, "Write a research report on AI"); console.log(result); // Output includes responses from all agents ``` ### Tools ```typescript // List all available tools const tools = await rig.listTools(); // Search for relevant tools const searchTools = await rig.searchTools("research", 5); // Returns: web_search, academic_search, etc. ``` ### RAG (Retrieval-Augmented Generation) ```typescript // Add document to vector store const docId = await rig.addDocument( "AI agents are transforming software development...", { source: "blog", author: "admin" } ); // Search documents semantically const results = await rig.searchDocuments("AI in software development", 5); // Get specific document const doc = await rig.getDocument(docId); // Delete document await rig.deleteDocument(docId); ``` --- ## HTTP API ### Agents | Method | Endpoint | Description | |--------|----------|-------------| | POST | `/api/agents` | Create agent | | GET | `/api/agents` | List agents | | GET | `/api/agents/:id` | Get agent | | POST | `/api/agents/:id/prompt` | Execute prompt | | DELETE | `/api/agents/:id` | Delete agent | ### Councils | Method | Endpoint | Description | |--------|----------|-------------| | POST | `/api/councils` | Create council | | GET | `/api/councils` | List councils | | POST | `/api/councils/:id/execute` | Execute council task | ### Tools | Method | Endpoint | Description | |--------|----------|-------------| | GET | `/api/tools` | List all tools | | POST | `/api/tools/search` | Search tools | ### Documents | Method | Endpoint | Description | |--------|----------|-------------| | POST | `/api/documents` | Add document | | GET | `/api/documents` | List documents | | POST | `/api/documents/search` | Search documents | | GET | `/api/documents/:id` | Get document | | DELETE | `/api/documents/:id` | Delete document | --- ## Configuration ### Environment Variables ```bash # Rig Service Configuration RIG_HOST=127.0.0.1 RIG_PORT=8080 RIG_DATABASE_PATH=rig-store.db # Model Providers OPENAI_API_KEY=sk-... ANTHROPIC_API_KEY=sk-ant-... QWEN_API_KEY=... # Defaults RIG_DEFAULT_PROVIDER=openai RIG_DEFAULT_MODEL=gpt-4 ``` ### Rig Service Config Edit `rig-service/.env`: ```env RIG_HOST=127.0.0.1 RIG_PORT=8080 RIG_DATABASE_PATH=./data/rig-store.db OPENAI_API_KEY=your-key-here ``` --- ## Use Cases ### 1. Research Assistant ```typescript const researcher = await rig.createAgent({ name: "researcher", preamble: "You are a research specialist. Find accurate, up-to-date information.", model: "gpt-4", }); // Add research papers to vector store await rig.addDocument("Paper: Attention Is All You Need...", { type: "paper" }); await rig.addDocument("Paper: BERT: Pre-training...", { type: "paper" }); // Search and execute const context = await rig.searchDocuments("transformer architecture", 3); const result = await rig.executePrompt( researcher, `Based on this context: ${context.map(d => d.content).join("\n")}, explain transformers.` ); ``` ### 2. Code Review Council ```typescript const councilId = await rig.createCouncil("Code Review Team", [ { name: "security", preamble: "You are a security expert. Review code for vulnerabilities.", }, { name: "performance", preamble: "You are a performance expert. Identify bottlenecks.", }, { name: "style", preamble: "You are a code style expert. Ensure clean, maintainable code.", }, ]); const review = await rig.executeCouncil(councilId, ` Review this code: \`\`\`typescript ${code} \`\`\` `); ``` ### 3. Content Creation Pipeline ```typescript // Create specialized agents const researcher = await rig.createAgent({ name: "researcher", preamble: "Research topics thoroughly.", }); const writer = await rig.createAgent({ name: "writer", preamble: "Write engaging content.", }); const editor = await rig.createAgent({ name: "editor", preamble: "Edit and polish content.", }); // Or use a council const councilId = await rig.createCouncil("Content Team", [ { name: "researcher", preamble: "Research topics thoroughly." }, { name: "writer", preamble: "Write engaging content." }, { name: "editor", preamble: "Edit and polish content." }, ]); const article = await rig.executeCouncil(councilId, "Write an article about AI agents"); ``` --- ## Building Rig Service ### Prerequisites - Rust 1.70+ - Cargo ### Build ```bash cd rig-service # Debug build cargo build # Release build (optimized) cargo build --release # Run cargo run ``` ### Cross-Platform ```bash # Linux/macOS cargo build --release # Windows (MSVC) cargo build --release # Cross-compile for Linux from macOS cargo install cross cross build --release --target x86_64-unknown-linux-gnu ``` --- ## Troubleshooting ### Rig Service Won't Start ```bash # Check if port is in use lsof -i :8080 # Check logs RUST_LOG=debug cargo run ``` ### Connection Issues ```typescript // Test connection const rig = initRigClient("127.0.0.1", 8080); const healthy = await rig.health(); console.log("Rig healthy:", healthy); ``` ### Vector Store Issues ```bash # Reset database rm rig-store.db # Check document count via API curl http://127.0.0.1:8080/api/documents ``` --- ## Performance | Metric | QwenClaw (TS) | Rig (Rust) | |--------|---------------|------------| | Startup | ~2-3s | ~0.5s | | Memory | ~200MB | ~50MB | | Tool Lookup | O(n) | O(log n) | | Concurrent | Event loop | Native threads | --- ## Next Steps 1. **Start Rig Service**: `cd rig-service && cargo run` 2. **Initialize Client**: `initRigClient()` in your code 3. **Create Agents**: Define specialized agents for tasks 4. **Use Councils**: Orchestrate multi-agent workflows 5. **Add RAG**: Store and search documents semantically --- ## Resources - **Rig GitHub**: https://github.com/0xPlaygrounds/rig - **Rig Docs**: https://docs.rig.rs - **QwenClaw Repo**: https://github.rommark.dev/admin/QwenClaw-with-Auth --- ## License MIT - Same as QwenClaw