Fix CI failures: remove unicode and fix lean build
- Replace all unicode (emojis, checkmarks, arrows, em-dashes) with ASCII in .claude/ docs - Comment out OperatingSystemsList route in core.js - breaks lean builds without computers plugin - Comment out Operating Systems tab in ModelCatalogHub - TODO: Plugins should dynamically register their settings routes Fixes #2 CI check failures on wj branch Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -6,15 +6,15 @@ Now we need to connect it as an MCP server so Claude Code can use its 48 tools d
|
||||
|
||||
## Current Status
|
||||
|
||||
**Installed:** ✅ Gortex v0.64.2 at `C:\Users\270015376\Documents\gortex.exe`
|
||||
**Installed:** [X] Gortex v0.64.2 at `C:\Users\270015376\Documents\gortex.exe`
|
||||
|
||||
**Daemon Running:** ✅
|
||||
**Daemon Running:** [X]
|
||||
```bash
|
||||
/c/Users/270015376/Documents/gortex.exe status
|
||||
# Shows: daemon running, flask-shopdb tracked with 2467 files
|
||||
```
|
||||
|
||||
**Indexed Repository:** ✅ flask-shopdb at `C:\Users\270015376\Documents\github\flask-shopdb`
|
||||
**Indexed Repository:** [X] flask-shopdb at `C:\Users\270015376\Documents\github\flask-shopdb`
|
||||
|
||||
## How to Connect as MCP Server
|
||||
|
||||
@@ -109,7 +109,7 @@ Based on our typical workflow:
|
||||
- With Gortex: 1-2K tokens (edit_symbol)
|
||||
- **Savings: ~60-70%**
|
||||
|
||||
**Merging wilm → wj:**
|
||||
**Merging wilm -> wj:**
|
||||
- Current: 8-12K tokens (read conflicts, understand context)
|
||||
- With Gortex: 3-5K tokens (diff_context tool)
|
||||
- **Savings: ~50-60%**
|
||||
@@ -155,10 +155,10 @@ If working, you'll see Gortex tools available via ToolSearch.
|
||||
## Why This Matters
|
||||
|
||||
Instead of me reading entire files to understand code, I can:
|
||||
1. Ask Gortex "explore fleet alerts" → get relevant symbols
|
||||
2. Query "what calls get_fleet_alerts" → see usage
|
||||
3. Edit symbols directly by ID → no file reading
|
||||
4. Analyze blast radius before changes → prevent bugs
|
||||
5. Get merge context → easier conflict resolution
|
||||
1. Ask Gortex "explore fleet alerts" -> get relevant symbols
|
||||
2. Query "what calls get_fleet_alerts" -> see usage
|
||||
3. Edit symbols directly by ID -> no file reading
|
||||
4. Analyze blast radius before changes -> prevent bugs
|
||||
5. Get merge context -> easier conflict resolution
|
||||
|
||||
This turns Gortex from a "nice to have" into a "fundamental workflow tool" that saves significant tokens and improves code understanding.
|
||||
|
||||
@@ -14,7 +14,7 @@ Quick guide to understanding Hyper-V permissions and why they don't matter for M
|
||||
|
||||
## What This Affects
|
||||
|
||||
### ✓ Still Works (No Admin Needed)
|
||||
### [X] Still Works (No Admin Needed)
|
||||
|
||||
| Feature | How to Use | Notes |
|
||||
|---------|-----------|-------|
|
||||
@@ -28,7 +28,7 @@ Quick guide to understanding Hyper-V permissions and why they don't matter for M
|
||||
|
||||
**Bottom line:** Everything you need works via GUI or SSH.
|
||||
|
||||
### ✗ Doesn't Work (Need Group Membership)
|
||||
### [ ] Doesn't Work (Need Group Membership)
|
||||
|
||||
| Feature | Why It Fails | Workaround |
|
||||
|---------|-------------|-----------|
|
||||
@@ -195,20 +195,20 @@ The following docs have been updated to clarify admin requirements:
|
||||
|
||||
**With VM MCP, Claude can:**
|
||||
```
|
||||
✓ Execute commands on VM
|
||||
✓ Copy files to/from VM
|
||||
✓ Read logs from VM
|
||||
✓ Check service status
|
||||
✓ Install/configure software
|
||||
✓ Test agent deployment
|
||||
✓ All via SSH - no Hyper-V perms needed!
|
||||
[X] Execute commands on VM
|
||||
[X] Copy files to/from VM
|
||||
[X] Read logs from VM
|
||||
[X] Check service status
|
||||
[X] Install/configure software
|
||||
[X] Test agent deployment
|
||||
[X] All via SSH - no Hyper-V perms needed!
|
||||
```
|
||||
|
||||
**Claude cannot (without Hyper-V perms):**
|
||||
```
|
||||
✗ Create snapshots via PowerShell
|
||||
✗ Restore snapshots via script
|
||||
✗ Query VM state via Get-VM
|
||||
[ ] Create snapshots via PowerShell
|
||||
[ ] Restore snapshots via script
|
||||
[ ] Query VM state via Get-VM
|
||||
|
||||
But you can do these manually in GUI!
|
||||
```
|
||||
@@ -235,12 +235,12 @@ Request from IT admin to add you to "Hyper-V Administrators" local group.
|
||||
|
||||
| Task | Without Group | With Group |
|
||||
|------|--------------|------------|
|
||||
| VM MCP (SSH) | ✓ Works | ✓ Works |
|
||||
| Start/stop VM | ✓ GUI | ✓ GUI or PowerShell |
|
||||
| Create snapshot | ✓ GUI | ✓ GUI or PowerShell |
|
||||
| Restore snapshot | ✓ GUI | ✓ GUI or PowerShell |
|
||||
| View VM status | ✓ GUI | ✓ GUI or PowerShell |
|
||||
| Script automation | ✗ Can't | ✓ Can |
|
||||
| VM MCP (SSH) | [X] Works | [X] Works |
|
||||
| Start/stop VM | [X] GUI | [X] GUI or PowerShell |
|
||||
| Create snapshot | [X] GUI | [X] GUI or PowerShell |
|
||||
| Restore snapshot | [X] GUI | [X] GUI or PowerShell |
|
||||
| View VM status | [X] GUI | [X] GUI or PowerShell |
|
||||
| Script automation | [ ] Can't | [X] Can |
|
||||
|
||||
**Bottom line: You can do everything, just not via PowerShell scripts.**
|
||||
|
||||
|
||||
@@ -278,16 +278,16 @@ See `VM-SNAPSHOT-GUIDE.md` for complete snapshot management guide.
|
||||
|
||||
```
|
||||
flask-shopdb/
|
||||
└── .claude/
|
||||
├── INDEX-MCP-DOCS.md ← This file (documentation index)
|
||||
├── README-MCP-SETUP.md ← Quick reference
|
||||
├── MCP-INTEGRATION-GUIDE.md ← Complete guide
|
||||
├── VM-SNAPSHOT-GUIDE.md ← Snapshot management
|
||||
├── setup-vm-ssh.md ← SSH setup guide
|
||||
├── mcp-servers.json ← Configuration file
|
||||
├── test-mcp-servers.ps1 ← Test suite
|
||||
├── quick-start-mcp.ps1 ← Setup automation
|
||||
└── enable-vm-ssh.ps1 ← VM SSH enablement
|
||||
+-- .claude/
|
||||
+-- INDEX-MCP-DOCS.md <- This file (documentation index)
|
||||
+-- README-MCP-SETUP.md <- Quick reference
|
||||
+-- MCP-INTEGRATION-GUIDE.md <- Complete guide
|
||||
+-- VM-SNAPSHOT-GUIDE.md <- Snapshot management
|
||||
+-- setup-vm-ssh.md <- SSH setup guide
|
||||
+-- mcp-servers.json <- Configuration file
|
||||
+-- test-mcp-servers.ps1 <- Test suite
|
||||
+-- quick-start-mcp.ps1 <- Setup automation
|
||||
+-- enable-vm-ssh.ps1 <- VM SSH enablement
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
@@ -20,26 +20,26 @@ mcp-coordinator supports two connection methods:
|
||||
## Architecture
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ Your PC │
|
||||
│ │
|
||||
│ ┌──────────────────┐ ┌──────────────────┐ │
|
||||
│ │ Claude Code #1 │ │ Claude Code #2 │ │
|
||||
│ │ (Session 1) │ │ (Session 2) │ │
|
||||
│ └────────┬─────────┘ └────────┬─────────┘ │
|
||||
│ │ │ │
|
||||
│ │ MCP over HTTP │ MCP over HTTP│
|
||||
│ │ (localhost:3100) │ │
|
||||
│ └──────────────┬───────────────────┘ │
|
||||
│ │ │
|
||||
│ ┌────────▼──────────┐ │
|
||||
│ │ mcp-coordinator │ │
|
||||
│ │ (daemon) │ │
|
||||
│ │ Port: 3100 │ │
|
||||
│ │ MQTT: 1883 │ │
|
||||
│ └───────────────────┘ │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
+-------------------------------------------------------------+
|
||||
| Your PC |
|
||||
| |
|
||||
| +------------------+ +------------------+ |
|
||||
| | Claude Code #1 | | Claude Code #2 | |
|
||||
| | (Session 1) | | (Session 2) | |
|
||||
| +--------+---------+ +--------+---------+ |
|
||||
| | | |
|
||||
| | MCP over HTTP | MCP over HTTP|
|
||||
| | (localhost:3100) | |
|
||||
| +--------------+-------------------+ |
|
||||
| | |
|
||||
| +--------v----------+ |
|
||||
| | mcp-coordinator | |
|
||||
| | (daemon) | |
|
||||
| | Port: 3100 | |
|
||||
| | MQTT: 1883 | |
|
||||
| +-------------------+ |
|
||||
| |
|
||||
+-------------------------------------------------------------+
|
||||
```
|
||||
|
||||
**Both Claude sessions connect to the SAME daemon = shared state = coordination works!**
|
||||
@@ -141,28 +141,28 @@ Claude: "Coordinator running. 2 agents registered: session-main, session-plugin
|
||||
### Architecture
|
||||
|
||||
```
|
||||
┌─────────────────────┐ ┌─────────────────────┐
|
||||
│ Dev PC #1 │ │ Dev PC #2 │
|
||||
│ (270015376) │ │ (coworker) │
|
||||
│ │ │ │
|
||||
│ Claude Code │ │ Cursor │
|
||||
│ │ │ │ │ │
|
||||
│ └─────────────┼────────┼───────┘ │
|
||||
│ │ │ │
|
||||
└─────────────────────┘ └─────────────────────┘
|
||||
│ │
|
||||
│ MCP over HTTP │
|
||||
│ (LAN: 192.168.1.100:3100) │
|
||||
└──────────────┬───────────────┘
|
||||
│
|
||||
┌─────────▼──────────┐
|
||||
│ Shared PC or │
|
||||
│ Dev Server │
|
||||
│ │
|
||||
│ mcp-coordinator │
|
||||
│ Host: 0.0.0.0 │
|
||||
│ Port: 3100 │
|
||||
└────────────────────┘
|
||||
+---------------------+ +---------------------+
|
||||
| Dev PC #1 | | Dev PC #2 |
|
||||
| (270015376) | | (coworker) |
|
||||
| | | |
|
||||
| Claude Code | | Cursor |
|
||||
| | | | | |
|
||||
| +-------------+--------+-------+ |
|
||||
| | | |
|
||||
+---------------------+ +---------------------+
|
||||
| |
|
||||
| MCP over HTTP |
|
||||
| (LAN: 192.168.1.100:3100) |
|
||||
+--------------+---------------+
|
||||
|
|
||||
+---------v----------+
|
||||
| Shared PC or |
|
||||
| Dev Server |
|
||||
| |
|
||||
| mcp-coordinator |
|
||||
| Host: 0.0.0.0 |
|
||||
| Port: 3100 |
|
||||
+--------------------+
|
||||
```
|
||||
|
||||
### Step 1: Set Up Shared Coordinator
|
||||
@@ -186,7 +186,7 @@ Edit `~/.mcp-coordinator/config.json`:
|
||||
{
|
||||
"server": {
|
||||
"port": 3100,
|
||||
"host": "0.0.0.0", // ← Changed from 127.0.0.1 to allow LAN
|
||||
"host": "0.0.0.0", // <- Changed from 127.0.0.1 to allow LAN
|
||||
"cors": {
|
||||
"enabled": true,
|
||||
"origins": ["*"] // Or specific IPs
|
||||
@@ -422,15 +422,15 @@ http://127.0.0.1:3100/dashboard shows:
|
||||
|
||||
```
|
||||
Active Agents (2)
|
||||
├─ 270015376-operator-reports
|
||||
│ └─ Files: plugins/endpoints/api/routes.py
|
||||
│ └─ Status: Working
|
||||
│ └─ Since: 2 minutes ago
|
||||
│
|
||||
└─ 270015376-fleet-alerts
|
||||
└─ Files: plugins/notifications/models/notification.py
|
||||
└─ Status: Working
|
||||
└─ Since: 1 minute ago
|
||||
+- 270015376-operator-reports
|
||||
| +- Files: plugins/endpoints/api/routes.py
|
||||
| +- Status: Working
|
||||
| +- Since: 2 minutes ago
|
||||
|
|
||||
+- 270015376-fleet-alerts
|
||||
+- Files: plugins/notifications/models/notification.py
|
||||
+- Status: Working
|
||||
+- Since: 1 minute ago
|
||||
|
||||
Consultations (0)
|
||||
No conflicts detected
|
||||
@@ -443,13 +443,13 @@ No conflicts detected
|
||||
```
|
||||
You: "Also update the route handler"
|
||||
Claude: [announce_work for plugins/endpoints/api/routes.py]
|
||||
Claude: "⚠️ Conflict detected!"
|
||||
Claude: "[!] Conflict detected!"
|
||||
Claude: "Agent '270015376-operator-reports' is currently modifying routes.py"
|
||||
Claude: [post_to_thread]
|
||||
Claude: "Consulting... Opening thread #1"
|
||||
|
||||
# Session 1 sees notification via MQTT
|
||||
Claude (Session 1): "📢 New consultation: Agent '270015376-fleet-alerts' also needs routes.py"
|
||||
Claude (Session 1): "[ANNOUNCE] New consultation: Agent '270015376-fleet-alerts' also needs routes.py"
|
||||
Claude (Session 1): [Reads thread]
|
||||
Claude (Session 1): [post_to_thread] "I'm working on _send_operator_report_alert function. What do you need?"
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ Research findings for coordinating multiple AI agents working on ShopDB simultan
|
||||
|
||||
---
|
||||
|
||||
## 🏆 Top Recommendation: mcp-coordinator
|
||||
## [TROPHY] Top Recommendation: mcp-coordinator
|
||||
|
||||
**By:** Maxime Gagnon (swoofer)
|
||||
**Status:** Production-ready (v2.3.0, 2500+ tests)
|
||||
@@ -179,7 +179,7 @@ You: "Fix the operator report email alerts"
|
||||
|
||||
Claude: [Calls register_agent]
|
||||
Claude: [Calls announce_work]
|
||||
Claude: "⚠️ Conflict detected! jdoe's AI is also editing routes.py."
|
||||
Claude: "[!] Conflict detected! jdoe's AI is also editing routes.py."
|
||||
Claude: [Calls post_to_thread]
|
||||
Claude: "Consulting with other agent... They're adding fleet alerts, I'm fixing operator reports. Different functions."
|
||||
Claude: [Waits for response]
|
||||
@@ -326,13 +326,13 @@ essaim run swarm --agents 3 -p ~/flask-shopdb
|
||||
|
||||
### For Air-Gapped Environment (ADR-004)
|
||||
|
||||
✅ **Works perfectly:**
|
||||
[X] **Works perfectly:**
|
||||
- Runs entirely locally (no internet required)
|
||||
- SQLite database (no external DB)
|
||||
- MQTT broker embedded (no external service)
|
||||
- Dashboard is local HTTP (no cloud)
|
||||
|
||||
✅ **Team mode on LAN:**
|
||||
[X] **Team mode on LAN:**
|
||||
- Runs on internal network only
|
||||
- No external connections
|
||||
- All data stays in your environment
|
||||
@@ -478,7 +478,7 @@ Claude: "Registered intent to modify routes.py. No conflicts. Proceeding..."
|
||||
You: "Fix the fleet alert function in routes.py"
|
||||
|
||||
Claude: [Calls announce_work for plugins/endpoints/api/routes.py]
|
||||
Claude: "⚠️ Conflict detected! Another session (270015376-main) is editing routes.py."
|
||||
Claude: "[!] Conflict detected! Another session (270015376-main) is editing routes.py."
|
||||
Claude: [Opens consultation thread]
|
||||
Claude: "Consulting... Other session is working on _send_operator_report_alert. I need _alert_targets_endpoint. Different functions, can proceed in parallel."
|
||||
```
|
||||
@@ -527,11 +527,11 @@ Open: http://localhost:3100/dashboard
|
||||
|
||||
| Tool | Status | Notes |
|
||||
|------|--------|-------|
|
||||
| **Claude Code** | ✅ Perfect | Native MCP support |
|
||||
| **Gortex** | ✅ Compatible | Both are MCP servers, no conflict |
|
||||
| **MySQL MCP** | ✅ Compatible | Separate concern |
|
||||
| **Browser MCP** | ✅ Compatible | Separate concern |
|
||||
| **GitHub MCP** | ✅ Compatible | Can coordinate PR creation |
|
||||
| **Claude Code** | [X] Perfect | Native MCP support |
|
||||
| **Gortex** | [X] Compatible | Both are MCP servers, no conflict |
|
||||
| **MySQL MCP** | [X] Compatible | Separate concern |
|
||||
| **Browser MCP** | [X] Compatible | Separate concern |
|
||||
| **GitHub MCP** | [X] Compatible | Can coordinate PR creation |
|
||||
|
||||
### Workflow Example:
|
||||
|
||||
@@ -540,7 +540,7 @@ You: "Review all plugins for ADR compliance and create PRs for fixes"
|
||||
|
||||
Claude (Session 1): [Announces] "Reviewing plugins/notifications/"
|
||||
Claude (Session 2): [Announces] "Reviewing plugins/endpoints/"
|
||||
→ No conflict, both proceed
|
||||
-> No conflict, both proceed
|
||||
|
||||
Claude (Session 1): [Gortex] Finds code patterns
|
||||
Claude (Session 1): [Coordinator] Announces intent to fix
|
||||
@@ -631,13 +631,13 @@ Based on your `.claude/AI-COLLABORATION.md` proposal:
|
||||
|
||||
### Immediate (Today):
|
||||
|
||||
1. ✅ Read this evaluation
|
||||
2. ⏳ Install mcp-coordinator: `npm install -g mcp-coordinator`
|
||||
3. ⏳ Run init: `mcp-coordinator init`
|
||||
4. ⏳ Start daemon: `mcp-coordinator server start --daemon`
|
||||
5. ⏳ Add to `.claude/mcp-servers.json`
|
||||
6. ⏳ Restart Claude Code
|
||||
7. ⏳ Test: `coordinator_status()` in Claude
|
||||
1. [X] Read this evaluation
|
||||
2. [WAIT] Install mcp-coordinator: `npm install -g mcp-coordinator`
|
||||
3. [WAIT] Run init: `mcp-coordinator init`
|
||||
4. [WAIT] Start daemon: `mcp-coordinator server start --daemon`
|
||||
5. [WAIT] Add to `.claude/mcp-servers.json`
|
||||
6. [WAIT] Restart Claude Code
|
||||
7. [WAIT] Test: `coordinator_status()` in Claude
|
||||
|
||||
**Time:** 5-10 minutes
|
||||
|
||||
|
||||
@@ -159,15 +159,15 @@ ssh shopfloor@192.168.100.10 "net localgroup users"
|
||||
|
||||
| Task | SupportUser | shopfloor |
|
||||
|------|-------------|-----------|
|
||||
| Install service | ✓ Yes | ✗ No |
|
||||
| Start/stop service | ✓ Yes | ✗ No (needs admin) |
|
||||
| Read service logs | ✓ Yes | △ Limited |
|
||||
| Run tray app | ✓ Yes | ✓ Yes |
|
||||
| Submit reports | ✓ Yes | ✓ Yes |
|
||||
| Install service | [X] Yes | [ ] No |
|
||||
| Start/stop service | [X] Yes | [ ] No (needs admin) |
|
||||
| Read service logs | [X] Yes | [~] Limited |
|
||||
| Run tray app | [X] Yes | [X] Yes |
|
||||
| Submit reports | [X] Yes | [X] Yes |
|
||||
| Access user profile | Own only | Own only |
|
||||
| Windows Event Log | ✓ Full access | △ Limited |
|
||||
| Install software | ✓ Yes | ✗ No |
|
||||
| Modify registry | ✓ Yes | △ HKCU only |
|
||||
| Windows Event Log | [X] Full access | [~] Limited |
|
||||
| Install software | [X] Yes | [ ] No |
|
||||
| Modify registry | [X] Yes | [~] HKCU only |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -237,7 +237,7 @@ Claude:
|
||||
9. [Wait 5s]
|
||||
10. [SSH: Check tray] Get-Process shopdb-endpoint-tray... Running
|
||||
11. [SSH: Screenshot] Capturing tray notification...
|
||||
12. ✅ Complete! Agent installed, connected, and received fleet alert.
|
||||
12. [X] Complete! Agent installed, connected, and received fleet alert.
|
||||
```
|
||||
|
||||
---
|
||||
@@ -246,12 +246,12 @@ Claude:
|
||||
|
||||
| Requirement | Status | Command to Check |
|
||||
|-------------|--------|------------------|
|
||||
| OpenSSH Server installed | ⏳ | `Get-WindowsCapability -Online -Name OpenSSH.Server*` |
|
||||
| SSH service running | ⏳ | `Get-Service sshd` |
|
||||
| Port 22 open in firewall | ⏳ | `Get-NetFirewallRule -Name sshd` |
|
||||
| User has password set | ⏳ | `net user ShopFloor` |
|
||||
| Network connectivity | ✅ | `arp -a` shows 192.168.100.10 |
|
||||
| Internal network configured | ✅ | VM has 192.168.100.10 |
|
||||
| OpenSSH Server installed | [WAIT] | `Get-WindowsCapability -Online -Name OpenSSH.Server*` |
|
||||
| SSH service running | [WAIT] | `Get-Service sshd` |
|
||||
| Port 22 open in firewall | [WAIT] | `Get-NetFirewallRule -Name sshd` |
|
||||
| User has password set | [WAIT] | `net user ShopFloor` |
|
||||
| Network connectivity | [X] | `arp -a` shows 192.168.100.10 |
|
||||
| Internal network configured | [X] | VM has 192.168.100.10 |
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user