You have been the factory operator, passing a brief to Codex and reviewing the output. Now give that job’s first step to a Mantle agent named Travel Factory Studio. The traveler asks the product for flight information. A developer asks Studio for a new travel agent.
1. Read the build contract (10 minutes)
Open the builder at propose. Find sessions.create, get_final_result, artifacts.list and content. The hosted OpenAI Agents API receives the brief and instructions, runs a hosted session, and exposes its output as an artifact. The Python openai client calls that service. The workshop does not use an Agents SDK Runner.
| Boundary | Evidence to keep |
|---|---|
| Hosted session finishes | Session ID. Final text alone supplies no file. |
| Artifact listing contains the expected path | /workspace/outputs/agent.json and artifact ID |
| Content download finishes | Saved candidate bytes and local SHA-256 |
| Human approves the matching candidate | Separate Mantle project containing the generated skill and its allowed tools |
Predict: the session says “done” and saves only notes.txt. Can Studio produce a travel agent from that run? Answer: the builder selects only the contracted artifact path. Without it, stop and report a missing candidate.
The build task asks for at most 2,000 characters of instructions, a description under 300 characters and a JSON file under 16 KB. Read the candidate against those limits before approval. The compiler’s instruction ceiling is 2,500 characters; it rejects an oversized candidate rather than shortening it. The task’s lower target leaves room for a concise proposal.
Inspect a failed delivery
Here is an illustrative session result. The developer asked Studio for a new travel desk.
| Evidence | Observed value |
|---|---|
| Session | Finished |
| Builder’s final message | “Your travel desk is ready.” |
| Files attached to the session | /workspace/outputs/notes.txt |
What would you tell the developer? Where in the builder would you look first?
Trace the missing file
“The session finished, but I have no agent specification to review.” Find the comparison with /workspace/outputs/agent.json between artifact listing and download. A note can explain a build without supplying the bytes needed to compile one. Inspect the existing run before starting another billed session.
2. Ask Studio to build (20 minutes)
Stop the product Inspector with Ctrl+C, then run:
bash desk inspect studio
End the traveler call. From a second terminal, run:
bash desk url
Open Inspector, click Start voice conversation, and speak this brief:
Build a four-tool voice travel desk for Bergen to Oslo. When two records match my flight number, ask which date I mean. Use the selected arrival time for the Oslo forecast, and convert my dollar budget to Norwegian kroner.
Studio should ask for permission to start a billed hosted session. Listen for the spoken confirmation. Say “No” and inspect the events. No build should run. If an event shows a build or session after your refusal, stop here and preserve the call and receipt. Inspect that existing run and ask the workshop host to resolve the unexpected outcome before continuing. Do not submit another brief or approve another build while its outcome is unresolved.
After confirming that no build started, ask again only if you intend to run the live exercise and have Agents API and model access. Say “Yes, start the build” once. Inspect the factory tool call and receipt. Studio invokes the existing Python builder in its own locked environment. The proposed traveler agent lives in a new directory after review.
If the receipt reports invalid_candidate, the hosted session has finished but nothing was built. Keep the unmodified candidate and receipt, inspect the stated field or limit, and stop this live exercise. A replacement session needs an explicit new allowance. If the result is uncertain, inspect the existing run before deciding what to do.
Alternative entry point: choose the terminal instead of Studio before starting a build. This command exercises the same hosted builder.
bash desk propose hosted "Build a Bergen to Oslo travel desk with all four tools."
Use one paid entry point per build. If a result is uncertain, inspect the existing run and its session information before considering a retry.
3. Operate the handoff (20 minutes)
Review the candidate’s instructions for airport ambiguity, dates and missing evidence. Compare its name and skill with the Codex candidate. Run:
bash desk approve runs/YOUR_HOSTED_RUN_ID builds/studio-desk
Stop Studio, then run:
bash desk inspect builds/studio-desk
Start a new voice conversation with that generated agent. Give a flight number and arrival date from the board you inspected, and ask for landing weather. Resolve any flight/date clarification before requesting the forecast, then ask for a currency conversion in the same call. Verify both tool results. A successful build ends with a usable product, separate from Studio.
If live access is unavailable, use:
bash desk propose sample
Approve that returned path and train the sample-built project. Trace the four API calls in source, mark hosted generation pending and continue with the trip. Keep mode, session ID where applicable, receipt hash, output directory and observed conversation in your notes.