5.2 KiB
GEMINI.md
This file covers Gemini-CLI-specific operational notes for the Manual Slop project. The primary toolchain is Gemini CLI; for general agent orientation, see AGENTS.md.
Project Overview
Manual Slop is a local GUI orchestrator for LLM-driven coding sessions. It bridges high-latency AI reasoning with a low-latency ImGui render loop via a thread-safe async pipeline; every AI-generated payload passes through a human-auditable gate before execution.
Main Technologies:
- Language: Python 3.11+
- Package Management:
uv - GUI Framework: ImGui Bundle (
imgui-bundle) - AI SDKs:
google-genai(Gemini),anthropic(Claude),openai(DeepSeek + MiniMax via OpenAI-compatible endpoints),GeminiCliAdapter(headless gemini CLI subprocess) - Configuration: TOML (
tomli-w)
Providers Supported (as of 2026-06-02):
- Gemini SDK — Primary; uses server-side CachedContent
- Gemini CLI — Headless adapter with full functional parity
- Anthropic — Ephemeral prompt caching (4-breakpoint system)
- DeepSeek — Code-optimized reasoning
- MiniMax — OpenAI-compatible alternative
Entry Point: sloppy.py (was gui_legacy.py before the rename; gui_2.py is now the active ImGui application module).
Architecture (key modules):
src/gui_2.py: Primary ImGui application; App class, frame-sync, HITL dialogs, event system. ~260K lines.src/ai_client.py: Multi-provider LLM abstraction (Gemini, Anthropic, DeepSeek, Gemini CLI, MiniMax). Module-level singleton with state.src/mcp_client.py: 45 MCP tools (file I/O, AST inspection, C/C++ tree-sitter, analysis, network, runtime, Beads). Three-layer security model.src/multi_agent_conductor.py: ConductorEngine + WorkerPool. 4-Tier MMA orchestration with DAG execution.src/dag_engine.py: TrackDAG (cycle detection, topological sort) + ExecutionEngine (tick-based state machine).src/aggregate.py: Context aggregation pipeline.src/app_controller.py: Main controller; bridges GUI and async AI workers.src/api_hooks.py: HTTP API on:8999for external automation and IPC.src/rag_engine.py: RAG subsystem (ChromaDB + embedding providers).src/personas.py: Unified agent profile management.src/workspace_manager.py: Workspace profile save/load.src/hot_reloader.py: State-preserving module reloading.
Full module list: src/*.py. See docs/guide_architecture.md for the threading model and event system.
Building and Running
- Setup: The application uses
uvfor dependency management. Ensureuvis installed. - Credentials: You must create a
credentials.tomlfile in the root directory to store your API keys:The[gemini] api_key = "****" [anthropic] api_key = "****" [deepseek] api_key = "****" [minimax] api_key = "****"credentials.tomlis blacklisted by the MCP allowlist — AI tools cannot read it. - Run the Application:
uv run sloppy.py # Normal mode uv run sloppy.py --enable-test-hooks # With Hook API on :8999
Gemini-CLI-Specific Conventions
- Conductor Extension: Gemini CLI uses the conductor extension, which reads
./conductor/for task tracking, workflow, and product context. Tracks live inconductor/tracks/<name>_<YYYYMMDD>/withspec.md,plan.md, andmetadata.json. - Skill Activation: Use
activate_skill mma-orchestratorto load the orchestrator skill, then activate the tier-specific skill (e.g.,activate_skill mma-tier1-orchestrator). - The Conductor Convention: Read
conductor/workflow.mdfor the TDD protocol. Treatconductor/tracks.mdas the task registry. Track implementation follows per-file atomic commits with git notes. - Tool Execution: AI-generated PowerShell scripts and tool calls pass through the Execution Clutch (HITL). Scripts are saved to
scripts/generated/<ts>_<seq>.ps1. - Context Refresh: After every tool call that modifies the file system, the application automatically refreshes file contents in the context using
mtimechecks. - Fuzzy Anchor Resilience: Line-based operations (
get_file_slice,set_file_slice,py_update_definition, fuzzy anchor slices) use FuzzyAnchor to survive file modifications. They can be batched in a single turn without line drift. - Layout Persistence: Window layouts are saved to
manualslop_layout.ini(wasdpg_layout.ini). - Logging: All API communications are logged to
logs/sessions/<id>/comms.log. Tool calls totoolcalls.log. Generated scripts toscripts/generated/. - Code Style:
- Use exactly 1-space indentation for Python (NO EXCEPTIONS). See
conductor/product-guidelines.md. - Use the manual-slop MCP tools (
manual-slop_edit_file,manual-slop_py_update_definition) for surgical edits — native edit tools destroy indentation. - Internal methods and variables are prefixed with an underscore (e.g.,
_flush_to_project,_do_generate).
- Use exactly 1-space indentation for Python (NO EXCEPTIONS). See
Human-Facing Documentation
For understanding, using, and maintaining the tool, see docs/Readme.md and the 14 deep-dive guides it indexes. See conductor/product.md for the product vision.