🎉 DevOps Interview Prep Bundle is live — 1000+ Q&A across 20 topicsGet it →
All Articles

Agentic Platform Engineering: AI Agents as the Self-Service Layer in 2026

Internal developer portals promised self-service infrastructure through forms and templates. The next iteration replaces the form with a conversational agent that understands intent, applies platform guardrails, and provisions correctly — closing the gap between what developers ask for and what golden paths actually need.

Shubham4 min read
Share:Tweet

Platform engineering's core promise — developers self-serve infrastructure without filing a ticket to the platform team — has always had a gap between the promise and reality: a Backstage form with 15 fields still requires the developer to know which options are correct for their use case. An agent that understands "I need a Postgres database for a service that'll get moderate write traffic and needs point-in-time recovery" and translates that into the right golden-path template with the right settings is the next iteration of that self-service layer.

From Forms to Conversational Provisioning

Traditional IDP self-service:
  Developer opens Backstage form → fills in 12 fields, half of which
  they're not sure about → submits → platform team's template applies
  defaults for whatever the developer left ambiguous

Agentic self-service:
  Developer describes intent in natural language → agent asks
  clarifying questions where genuinely ambiguous → agent selects
  the correct golden-path template and fills parameters →
  generates a PR against the platform's IaC repo for review

The agent doesn't bypass platform guardrails — it still generates a PR that goes through the same review/approval flow a manually-filled form would. The difference is translating fuzzy developer intent into the correct structured request, instead of making the developer guess which of 12 form fields matter for their case.

Intent-to-Template Translation

python
import anthropic
import json
 
client = anthropic.Anthropic()
 
TRANSLATE_PROMPT = """A developer wants to provision infrastructure. Translate
their request into a specific platform golden-path template and parameters.
 
Developer request: "{request}"
 
Available golden-path templates and when to use them:
{template_catalog}
 
Platform guardrails that must be respected (non-negotiable defaults):
{platform_guardrails}
 
Determine:
1. Which template matches this request
2. What parameters to fill, based on what the developer said
3. What is genuinely ambiguous and needs a clarifying question before proceeding
   (don't guess at things that materially affect cost or reliability)
 
Respond with ONLY valid JSON:
{{"template": "...", "parameters": {{}}, "clarifying_questions": [...],
  "ready_to_generate": true/false}}"""
 
 
def translate_request(request: str, template_catalog: dict, guardrails: dict) -> dict:
    response = client.messages.create(
        model="claude-sonnet-5",
        max_tokens=1000,
        messages=[{
            "role": "user",
            "content": TRANSLATE_PROMPT.format(
                request=request, template_catalog=template_catalog, platform_guardrails=guardrails
            )
        }]
    )
    text = response.content[0].text.strip()
    if text.startswith("```"):
        text = text.split("```")[1].replace("json", "", 1).strip()
    return json.loads(text)

Example Conversation

Developer: "I need a Postgres database for the new inventory service,
moderate write traffic, need to be able to restore to any point in the
last week if something goes wrong"

Agent: Matched template: postgres-managed-rds (not postgres-dev-lightweight,
based on "moderate write traffic" and the durability requirement)

Parameters filled:
- instance_class: db.r6g.large (moderate traffic tier per platform sizing guide)
- backup_retention_period: 7 (matches "restore to any point in the last week")
- multi_az: true (platform guardrail: required for any prod database per policy)

Clarifying question: "Is this for production or staging? This affects the
multi_az setting and estimated monthly cost (~$340/mo prod vs ~$85/mo staging)."

Developer: "production"

Agent generates PR against platform-infra repo:
  templates/postgres-managed-rds/inventory-service.yaml
  Ready for platform team review — matches golden path, no guardrail exceptions needed.

Where Guardrails Stay Non-Negotiable

python
PLATFORM_GUARDRAILS = {
    "production_databases": {"multi_az": "required", "backup_retention_min_days": 7},
    "public_endpoints": {"requires_waf": True, "requires_security_review": True},
    "cost_ceiling_needs_approval": 500,    # monthly $ threshold requiring explicit sign-off
}
 
def enforce_guardrails(generated_config: dict, guardrails: dict) -> dict:
    """The agent proposes, but hard platform policy always overrides
    what a developer's natural-language request implied."""
    if generated_config.get("environment") == "production":
        generated_config["multi_az"] = True    # Non-negotiable, regardless of what was asked
        generated_config["backup_retention_period"] = max(
            generated_config.get("backup_retention_period", 0),
            guardrails["production_databases"]["backup_retention_min_days"]
        )
    if estimate_monthly_cost(generated_config) > guardrails["cost_ceiling_needs_approval"]:
        generated_config["requires_manual_approval"] = True
    return generated_config

Why This Still Generates a PR, Not a Direct Apply

The self-service promise isn't "skip review entirely" — it's "skip the tedious part of figuring out which template and settings apply to my specific situation." The agent's output is a pull request against the platform's infrastructure-as-code repository, going through the exact same CI checks, cost estimation, and platform team review as a manually-authored one. What changes is the developer experience getting there: a natural-language conversation instead of parsing a 15-field form and guessing at unfamiliar options, with the platform team's guardrails enforced identically either way.

Where This Genuinely Helps vs Where It's Just a Nicer Form

  • Genuine improvement: developers who don't know the platform's specific terminology or sizing conventions get correctly routed without needing to read internal docs first — this is a real reduction in platform team support burden
  • Marginal improvement: for developers who already know exactly which template and settings they want, a well-designed form isn't meaningfully slower than a conversation — the agent's value is concentrated in the ambiguous, "I'm not sure what I need" cases

More platform engineering content? Read our Internal developer platforms replace DevOps teams and Backstage vs Port vs Cortex IDP comparison.

🔧

Today I Fixed

Short real fixes from production — posted daily

Browse fixes
Newsletter

Stay ahead of the curve

Get the latest DevOps, Kubernetes, AWS, and AI/ML guides delivered straight to your inbox. No spam — just practical engineering content.

Related Articles

Comments