Prompt Management & PML
Treat prompts like code. Infere stores prompts as PML (Prompt Markup Language)
files inside real Git repositories - every save creates a new version backed by a git commit,
and every push is validated server-side before it can reach main.
ℹ️ PML Structure: A
.pml file combines YAML frontmatter (name,
version, model config, variables) with a body organized by XML-style section tags:
<system>, <context>, <instructions>,
<constraints>, <output_format>, and
<examples>. Variables use {{mustache}} templating with built-in
filters for strings, arrays, numbers, and JSON.
---
name: customer-support-agent
version: 2.1.0
model:
provider: anthropic
name: claude-sonnet-4-5
temperature: 0.7
variables:
- name: customer_name
type: string
required: true
---
<system>
You are a helpful customer support agent for Acme Corp.
</system>
<context>
Customer: {{customer_name}}
</context>
<output_format>
Respond in plain text, at most three paragraphs.
</output_format>
Author, Version, Deploy
- Author - in the visual Prompt Editor or locally in your IDE with the PML CLI (
pml init,pml validate,pml render,pml run) and the PML VS Code extension (syntax highlighting, validation, preview). - Test - try prompts live in the Playground against real models, or clone the repo and push to a branch.
- Version - every "Save as New Version" produces a numbered version tied to a git commit hash, with history, badges, and side-by-side diffs.
- Review - open a Pull Request from a feature branch; protected branches require reviews and status checks before merge.
- Deploy - deploy a prompt to an API token from the UI, or push an ephemeral deploy ref (
git push origin main:refs/heads/deploy/<prompt>/<token>). Deployments are 1:1 - a token holds exactly one prompt - and changes propagate to the edge within seconds.
Every push validates both .pml prompt files and .eml evaluator files -
prompts and their evaluators are versioned together in the same repository.