Skip to content

Architecture

Module Relationships

flowchart TB
    subgraph Entry["Entry Points"]
        CLI[cli.py<br/>Click CLI]
    end

    subgraph Core["Core"]
        Agent[ProductionAgent<br/>agent/agent.py]
        Builder[AgentBuilder<br/>agent/builder.py]
        Registry[ToolRegistry<br/>tools/registry.py]
        Loop[ExecutionLoop<br/>core/loop.py]
    end

    subgraph Providers["LLM Providers"]
        Anthropic[Anthropic]
        OpenRouter[OpenRouter]
        OpenAI[OpenAI]
        ZAI[ZAI]
    end

    subgraph Tools["Built-in Tools"]
        FileOps[File Operations]
        BashTool[Bash Executor]
        SearchTools[Search Tools]
        SpawnAgent[Spawn Agent]
    end

    subgraph Integrations["Integrations"]
        Session[SQLiteStore<br/>Session Persistence]
        MCP[MCPClient<br/>External Tools]
        Context[ContextEngineering<br/>Compaction]
        Perms[PolicyEngine<br/>Approval System]
        Budget[Economics<br/>Budget Management]
        Recording[SessionGraph<br/>Recording]
        Skills[SkillLoader<br/>Skills System]
    end

    subgraph TUI["TUI Layer"]
        TUIApp[AttocodeApp<br/>Textual App]
        Bridges[ApprovalBridge<br/>BudgetBridge]
    end

    CLI --> Builder
    Builder --> Agent
    CLI --> TUIApp
    Agent --> Loop
    Agent --> Registry
    Agent --> Providers
    Registry --> Tools
    Registry --> Perms
    Agent --> Integrations
    TUIApp --> Bridges
    Bridges --> Perms
    MCP --> Registry

Data Flow

sequenceDiagram
    participant User
    participant TUI as AttocodeApp
    participant Agent as ProductionAgent
    participant LLM as LLM Provider
    participant Tools as ToolRegistry
    participant Perms as PolicyEngine
    participant Store as SessionStore

    User->>TUI: Enter prompt
    TUI->>Agent: run(prompt)
    Agent->>Store: create_session()
    Agent->>LLM: chat(messages)
    LLM-->>Agent: tool_calls[]

    loop For each tool call
        Agent->>Tools: execute(tool, args)
        Tools->>Perms: evaluate(tool, args)
        alt Needs approval
            Perms->>TUI: requestApproval()
            User-->>TUI: Y/N
            TUI-->>Perms: response
        end
        Tools-->>Agent: result
        Agent->>Store: record_tool_call()
    end

    Agent->>LLM: chat(messages + results)
    LLM-->>Agent: response
    Agent->>Store: save_checkpoint()
    Agent-->>TUI: AgentResult
    TUI-->>User: Display response

Directory Structure

Directory Purpose Key Files
agent/ Agent core orchestration agent.py, builder.py, context.py
core/ Execution engine, LoopDeps protocol loop.py, loop_deps.py, subagent_spawner.py
tools/ Tool implementations 12 tool modules
providers/ LLM adapters, ProcessBackend/AgentExecutor base.py, adapters/, backend.py
integrations/ Feature modules 12 subdirectories
tui/ Terminal UI app.py, 52+ widgets
tracing/ Execution traces JSONL event recording
tricks/ Context engineering Recitation, failure tracking
types/ Shared type definitions agent.py, messages.py

Integration Domains

Domain Module Count Lines Purpose
budget/ 6 ~2,200 Token economics, loop detection
context/ 8 ~3,500 Compaction, codebase analysis
safety/ 8 ~2,000 Sandboxes, policies, validators
persistence/ 1 ~1,100 SQLite session store
agents/ 5 ~1,500 Multi-agent coordination
tasks/ 6 ~2,000 Planning, decomposition
skills/ 4 ~450 Skill loading, deps, state
mcp/ 4 ~800 MCP client integration
recording/ 5 ~1,400 Session graph, playback
swarm/ 12 ~10,300 Multi-agent orchestration
utilities/ 27 ~4,000 Helper modules
streaming/ 1 ~300 PTY shell