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.
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
Email / DSS Ticket
Input
Jira Webhook
Trigger
Express Server
Port 9200
triage
Subagent
Investigation Report
Output
Jira Comment
Output
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.
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
ssh root@hetzner-devbox "cd /root/repos/{repo} \
&& claude --agent dev-planner --print \
'{ticket + context}'"
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
ssh root@hetzner-devbox "cd /root/repos/{repo} \
&& claude --agent dev-executor --print \
'{approved plan}'"
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
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",
"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"],
"example_requests": [
"The weekly sales report has wrong numbers",
"Add a new column to the order export",
"QuickBooks sync is failing"
],
"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.
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'"
Read-only. Will not modify any files in the repo.
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/'"
Full write access. Creates branch, commits, and updates Jira.
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": "..."}'
Autonomous. Posts investigation report as Jira comment.