agent-builder
The platform's own meta-agent. Generates, tests, and deploys new a2a-pack agents from a natural-language description.
What it does
The single build(name, prompt) skill:
- Builds an inner
deepagentsLangGraph configured with project tools and packaged builder skills:deepagent-agent-design— when to use DeepAgents skills, subagents, workspace backends, and deterministic toolsa2apack-agent-authoring— how to shapeagent.py, public@skillschemas, runtime metadata, pricing, resources, and authdeepagents-implementation-patterns— concretecreate_deep_agentwiring forctx.llmcredentials, skills, tools, and subagentsworkspace-artifact-safety— workspace grants, artifacts, bounded subprocesses, and scope expansionagent-quality-review— pre-sandbox and pre-deploy checks for generated agentslist_agent_files(name)/write_agent_file(name, path, content)/read_agent_file(name, path)— boto3 → MinIO, scoped toagents/<name>/in the caller's workspacewrite_agent_skill(...)— creates valid DeepAgentsskills/<skill-name>/SKILL.mdbundles for generated agents, so rich behavior lives in progressive-disclosure skills instead of fake toolsinit_agent_template(name, description, frontend="react"|"static"|"none")— starts from the currenta2a-packscaffold and can include packed frontend templates underfrontend/for app-like agentstest_agent_in_sandbox(name)— tarballs the workspace project, spins a microVM with the publica2a-packwheel installed, runsa2a cardto verify the scaffold is valid, and prints frontend metadata when a packed app is declaredcp_deploy_tarball(name, version, public)— POSTs the tarball to/v1/agents/from-tarballon the user's behalf using their forwarded CP JWTcp_deploy_source_repo(name)— POSTs the current managed source repo to/v1/agents/{name}/source/deploywhen source edits already live in Gitea
- Streams the graph's tool calls back to the dashboard as
agent_progressevents (so the user watches the build happen in real time, not in silence). - Returns the live URL when the new agent finishes deploying.
What it needs forwarded
Three platform-managed bits land on the inner skill via RunContext:
| Field | Source | Required? |
|---|---|---|
ctx.workspace.bucket |
grant minted by the orchestrator | yes |
ctx.llm |
caller's saved LLM credential, routed by the platform (Card declares llm_provisioning=platform) |
yes |
ctx.cp_jwt |
caller's CP JWT (Card declares wants_cp_jwt=True) |
yes — used by cp_deploy_tarball |
The user opts into all three when they pick agent-builder from the
marketplace — the dashboard already surfaces these on the agent card.
Pricing
$0.10 / call during the current pricing model. The builder uses your saved
LLM credential. The deployed agent is yours forever; subsequent invocations of
a generated LLM agent also use the caller's saved LLM credential via ctx.llm.
How to call it
In the dashboard chat (Workspace tab):
use agent-builder.build to make a new agent named "csv-sanitizer" that takes a CSV path, strips whitespace from every column, deduplicates rows, and writes the cleaned file back next to the original
The orchestrator will discover agent-builder, hand off with the required forwards, you'll watch the inner deepagents scaffold + test + deploy in real time, then get a live URL.
Local dev
cd apps/agent-builder
python3 -m venv .venv
.venv/bin/pip install -e ../a2a -r requirements.txt
.venv/bin/a2a card # see what the Card looks like
.venv/bin/a2a validate
You can't run the full skill locally without a workspace bucket + CP JWT — those come from the platform at invoke time.