Distills what made this session's track specs high-quality into reusable methodology for both Claude and Gemini Tier 1 orchestrators: Key additions to conductor-new-track.md: - MANDATORY Step 2: Deep Codebase Audit before writing any spec - 'Current State Audit' section template (Already Implemented + Gaps) - 6 rules for writing worker-ready tasks (WHERE/WHAT/HOW/SAFETY) - Anti-patterns section (vague specs, no line refs, no audit, etc.) - Architecture doc fallback references Key additions to mma-tier1-orchestrator.md (Claude + Gemini): - 'The Surgical Methodology' section with 6 protocols - Spec template with REQUIRED sections (Current State Audit is mandatory) - Plan template with REQUIRED task format (file:line refs + API calls) - Root cause analysis requirement for fix tracks - Cross-track dependency mapping requirement - Added py_get_definition to Gemini's tool list (was missing) The core insight: the quality gap between this session's output and previous track specs came from (1) reading actual code before writing specs, (2) listing what EXISTS before what's MISSING, and (3) specifying exact locations and APIs in tasks so lesser models don't have to search or guess. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Manual Slop
A GUI orchestrator for local LLM-driven coding sessions. Manual Slop bridges high-latency AI reasoning with a low-latency ImGui render loop via a thread-safe asynchronous pipeline, ensuring every AI-generated payload passes through a human-auditable gate before execution.
Tech Stack: Python 3.11+, Dear PyGui / ImGui, FastAPI, Uvicorn Providers: Gemini API, Anthropic API, DeepSeek, Gemini CLI (headless) Platform: Windows (PowerShell) — single developer, local use
Architecture at a Glance
Four thread domains operate concurrently: the ImGui main loop, an asyncio worker for AI calls, a HookServer (HTTP on :8999) for external automation, and transient threads for model fetching. Background threads never write GUI state directly — they serialize task dicts into lock-guarded lists that the main thread drains once per frame (details).
The Execution Clutch suspends the AI execution thread on a threading.Condition when a destructive action (PowerShell script, sub-agent spawn) is requested. The GUI renders a modal where the user can read, edit, or reject the payload. On approval, the condition is signaled and execution resumes (details).
The MMA (Multi-Model Agent) system decomposes epics into tracks, tracks into DAG-ordered tickets, and executes each ticket with a stateless Tier 3 worker that starts from ai_client.reset_session() — no conversational bleed between tickets (details).
Documentation
| Guide | Scope |
|---|---|
| Architecture | Threading model, event system, AI client multi-provider architecture, HITL mechanism, comms logging |
| Tools & IPC | MCP Bridge security model, all 26 native tools, Hook API endpoints, ApiHookClient reference, shell runner |
| MMA Orchestration | 4-tier hierarchy, Ticket/Track data structures, DAG engine, ConductorEngine execution loop, worker lifecycle |
| Simulations | live_gui fixture, Puppeteer pattern, mock provider, visual verification patterns, ASTParser / summarizer |
Module Map
| File | Lines | Role |
|---|---|---|
gui_2.py |
~3080 | Primary ImGui interface — App class, frame-sync, HITL dialogs |
ai_client.py |
~1800 | Multi-provider LLM abstraction (Gemini, Anthropic, DeepSeek, Gemini CLI) |
mcp_client.py |
~870 | 26 MCP tools with filesystem sandboxing and tool dispatch |
api_hooks.py |
~330 | HookServer — REST API for external automation on :8999 |
api_hook_client.py |
~245 | Python client for the Hook API (used by tests and external tooling) |
multi_agent_conductor.py |
~250 | ConductorEngine — Tier 2 orchestration loop with DAG execution |
conductor_tech_lead.py |
~100 | Tier 2 ticket generation from track briefs |
dag_engine.py |
~100 | TrackDAG (dependency graph) + ExecutionEngine (tick-based state machine) |
models.py |
~100 | Ticket, Track, WorkerContext dataclasses |
events.py |
~89 | EventEmitter, AsyncEventQueue, UserRequestEvent |
project_manager.py |
~300 | TOML config persistence, discussion management, track state |
session_logger.py |
~200 | JSON-L + markdown audit trails (comms, tools, CLI, hooks) |
shell_runner.py |
~100 | PowerShell execution with timeout, env config, QA callback |
file_cache.py |
~150 | ASTParser (tree-sitter) — skeleton and curated views |
summarize.py |
~120 | Heuristic file summaries (imports, classes, functions) |
outline_tool.py |
~80 | Hierarchical code outline via stdlib ast |
Setup
Prerequisites
- Python 3.11+
uvfor package management
Installation
git clone <repo>
cd manual_slop
uv sync
Credentials
Configure in credentials.toml:
[gemini]
api_key = "YOUR_KEY"
[anthropic]
api_key = "YOUR_KEY"
[deepseek]
api_key = "YOUR_KEY"
Running
uv run gui_2.py # Normal mode
uv run gui_2.py --enable-test-hooks # With Hook API on :8999
Running Tests
uv run pytest tests/ -v
Project Configuration
Projects are stored as <name>.toml files. The discussion history is split into a sibling <name>_history.toml to keep the main config lean.
[project]
name = "my_project"
git_dir = "./my_repo"
system_prompt = ""
[files]
base_dir = "./my_repo"
paths = ["src/**/*.py", "README.md"]
[screenshots]
base_dir = "./my_repo"
paths = []
[output]
output_dir = "./md_gen"
[gemini_cli]
binary_path = "gemini"
[agent.tools]
run_powershell = true
read_file = true
# ... 26 tool flags