DevAgent — Unified Architecture

One system, three subagent modes. Meeting-driven development with autonomous triage for between-meeting bugs.

1. Architecture Diagram

Two pathways converge on shared infrastructure. The meeting cycle drives planned work; the webhook pathway handles ad-hoc support tickets.

Primary Meeting Cycle Planned work
Client Meeting Input
/meeting-prep debrief Skill
Step D9 Handoff
dev-planner Subagent
User Review Gate
dev-executor Subagent
Feature Branch Output
Jira Comment Output
Reactive Webhook Pathway Ad-hoc support
Email / DSS Ticket Input
Jira Webhook Trigger
Express Server Port 9200
triage Subagent
Investigation Report Output
Jira Comment Output
Both pathways share
Shared Infrastructure
CR
Client Registry
config/clients.json — routing & context
SM
Session Manager
src/core/ — spawns Claude Code
M0
Mem0
Semantic memory — past tickets & patterns
JU
Jira Updater
src/jira-updater.js — comments & transitions

2. Subagent Reference

Three Claude Code subagent definitions at /root/.claude/agents/ on Hetzner. Each is a Markdown file with YAML frontmatter.

Plan dev-planner

Read-only investigation. Analyzes Jira tickets and codebase to produce a structured implementation plan. Does not modify any files.

Trigger Meeting debrief Step D9
Model claude-sonnet-4-6
Isolation Read-only — no file writes
Tools
Read Glob Grep Bash (read-only) Jira MCP Mem0
# Planning phase ssh root@hetzner-devbox "cd /root/repos/{repo} \ && claude --agent dev-planner --print \ '{ticket + context}'"
Execute dev-executor

Implements an approved plan. Creates a feature branch, writes code, commits changes, and posts an implementation summary to Jira.

Trigger User approves dev-planner output
Model claude-sonnet-4-6
Isolation Full access — read + write
Tools
Read Write Edit Bash Git Jira MCP Mem0
# Execution phase ssh root@hetzner-devbox "cd /root/repos/{repo} \ && claude --agent dev-executor --print \ '{approved plan}'"
Triage triage

Autonomous investigation. Receives DSS tickets via webhook, identifies the client and repo, investigates the issue, and posts findings to Jira.

Trigger Jira webhook (DSS ticket created)
Model claude-sonnet-4-6
Isolation Read-only — approval gate for changes
Tools
Read Glob Grep Bash (read-only) Jira MCP Mem0
# Via session-manager.js claude --agent triage --print \ --max-turns 15 \ '{ticket JSON + client registry}'

3. Client Registry Schema

Enriched config/clients.json with natural language descriptions, example requests, and per-function detail for accurate routing.

{ "client_id": "hmr-designs", "display_name": "HMR Designs", "jira_project": "HD", "cloud": "aws", "aws_profile": "hmr-designs", // 1 NL description for subagent context "description": "Custom furniture manufacturer. 16 AWS Lambda functions for order management, Redshift analytics, automated reporting, and QuickBooks integration.", "repos": [ { "name": "hmr-aws-lambda-functions", "path": "/root/repos/hmr-aws-lambda-functions", "tech": ["Python", "AWS Lambda", "Redshift"], // 2 Example requests mapped to functions "example_requests": [ "The weekly sales report has wrong numbers", "Add a new column to the order export", "QuickBooks sync is failing" ], // 3 Per-function detail "functions": [ { "name": "generate-weekly-report", "description": "Queries Redshift, builds Excel report, emails to stakeholders", "entry": "src/generate-weekly-report/" }, { "name": "quickbooks-sync", "description": "Bidirectional sync between orders DB and QuickBooks Online", "entry": "src/quickbooks-sync/" } ] } ], "notify_slack": "#hmr-designs" }
1 NL Descriptions
Free-text descriptions injected into the subagent prompt so Claude Code understands the client's business and tech stack without exploring the repo first. Reduces investigation from ~10 turns to ~3.
2 Example Requests
Concrete phrases that map to this repo. The triage subagent uses semantic similarity to match incoming ticket descriptions to the correct repo when a client has multiple repositories.
3 Per-Function Detail
For multi-function repos (e.g., HMR's 16 Lambdas), each function gets a name, description, and entry path. Claude Code can jump directly to the relevant code without scanning the entire repo.

4. Progressive Autonomy Roadmap

DevAgent evolves from fully human-reviewed to fully autonomous as trust is established through successful executions.

Phase 1 — Current
Human-Reviewed
Every plan and execution is reviewed and approved by a human before any changes are made.
  • dev-planner output reviewed manually
  • Explicit approval before dev-executor runs
  • Triage produces reports only — no auto-fix
  • All Jira comments reviewed before posting
Phase 2
Reduced Review
Low-risk changes auto-approved. Complex work still requires human review.
  • Auto-approve: config changes, dependency bumps
  • Auto-approve: simple bug fixes (single file)
  • Human review: multi-file changes, new features
  • Risk scoring based on files changed + complexity
Phase 3
Fully Autonomous
Meeting to deployment with no human in the loop. Review is post-hoc only.
  • Meeting debrief auto-triggers planning + execution
  • Triage auto-fixes and deploys known issue patterns
  • Slack notifications for visibility, not approval
  • Rollback automation on deployment failure

5. Quick Start Guide

CLI invocation for each subagent. All commands run via SSH to Hetzner where Claude Code and all repos are available.

Plan dev-planner
# Investigate a Jira ticket and produce a plan ssh root@hetzner-devbox \ "cd /root/repos/creme-report-automation \ && claude --agent dev-planner \ --print \ 'Investigate CC-120: Centralize retailer email attachments into S3 bucket for automated parsing'" # Output: structured implementation plan # with files to modify, approach, risks
Read-only. Will not modify any files in the repo.
Execute dev-executor
# Implement an approved plan ssh root@hetzner-devbox \ "cd /root/repos/creme-report-automation \ && claude --agent dev-executor \ --print \ 'Implement the approved plan for CC-120. Create feature branch feature/cc-120-email-attachments. Files: src/email-parser/, src/s3-uploader/'" # Output: feature branch + Jira comment
Full write access. Creates branch, commits, and updates Jira.
Triage triage
# Triggered automatically via webhook, or: curl -X POST \ http://hetzner-devbox:9200/test/triage \ -H "Content-Type: application/json" \ -H "X-Triage-Agent-Secret: $SECRET" \ -d '{"issueKey": "DSS-14", "summary": "Weekly report shows zero revenue for Q1", "description": "..."}' # Output: investigation report on Jira
Autonomous. Posts investigation report as Jira comment.