Skip to main content

Module Structure

bud-core

The foundation. Reference project extraction, POM mutation (via maven-model), JavaParser-based refactoring, project analysis, intent classification, and execution planning. Zero Spring framework dependencies β€” enforced by ArchUnit rules. Key classes:
  • TemplateExtractor β€” Extracts reference projects from classpath using JDK ClassLoader + manifest files
  • PomMutator β€” Read/write Maven POM files (add/remove dependencies, set versions, add plugins)
  • JavaParserRefactor β€” AST-based package rename for extracted projects
  • RecipeCatalog β€” Composable recipes (actuator, security, CI, native image, etc.)
  • StartersCatalog β€” Searchable index of Spring Boot starters
  • BootProjectAnalyzer β€” Analyze existing projects for dependencies, structure, test strategy
  • BudWorkflow β€” Full pipeline orchestrator: normalize β†’ classify β†’ resolve β†’ plan β†’ execute β†’ recipes β†’ explain
  • ExecutionPlanner β€” Routes resolved intents to CACHE, INITIALIZR, or EXPAND tiers
  • TemplateSemanticCache β€” Subset-matching cache: intent capabilities βŠ† reference project capabilities

bud-mcp-server

Spring Boot 4.1.0-M2 application that wraps bud-core with 23 @McpTool-annotated methods. Communicates via stdio JSON-RPC (MCP protocol). This is the tool layer β€” it has no AI, no LLM calls, no opinions about what to do. It just exposes deterministic operations.

bud-acp-server

The product. An ACP agent with two LLM roles:
  • Classifier (Sonnet via your approved CLI, ~$0.01/call) β€” Analyzes prompts via structured output JSON schema. Extracts capabilities, domain entities, best-fit reference project, and overlay level.
  • Expander (Sonnet via your approved CLI, ~$0.19/call) β€” Generates domain-specific code for EXPAND-tier requests. Only invoked for business domain prompts.

Three-Tier Routing

When Bud receives a prompt, it classifies the intent and routes to one of three execution tiers:
The execution planner applies a 6-rule cascade to determine the tier. Rules are ordered so that domain prompts with entities (customer, order, inventory) always route to EXPAND, even if a reference project partially matches.

Protocol Stack

Two protocol boundaries, both stdio-based:
  1. ACP β€” IDE ↔ BudAgent (session management, prompt/response)
  2. MCP β€” Claude Code ↔ Bud MCP Server (tool discovery, tool invocation)

Enterprise Model

  • No API key β€” Bud delegates all LLM calls to your enterprise-approved agentic CLI (Claude Code, Gemini CLI, Codex, etc.)
  • No billing exposure β€” the CLI handles authentication and billing
  • No compliance review β€” your IT department already approved the CLI
  • Swap providers freely β€” change your CLI, Bud keeps working. No vendor lock-in on the AI side.
  • Deterministic tools β€” the 23 MCP tools don’t call any LLM; scaffolding is pure code operations
The LLM (running on your approved CLI) is involved in two places: intent classification (understanding what you asked for) and code expansion (generating domain-specific code for business apps). The reference project scaffolding itself is deterministic.

Key Dependencies