PIES Studio 1.9 · Documentation
If you pay for a coding agent such as Claude Code, most of what you pay for is typing. Ask the agent for a job-tracking application and it writes the schema, the API, every screen, the sign-in page and the menu, line by line, as output tokens. We wanted to know what changes when the same agent builds the same application through PIES Studio Hobby instead, sending short specs and letting PIES generate the code.
This page is the whole measurement: the brief, the method, both pairs of runs, what each build produced, the gaps we found in our own result, and how to repeat it. One run each way, so treat the numbers as a first reading, not a benchmark.
Two ways of building one application with the same AI model:
We recorded what the agent's own usage report says: output tokens, cache reads and writes, cost at API list price, turns and wall time.
Both runs got the same text:
Build a job tracking app: a customers table (name, phone, email, suburb), a jobs table (customer, title, status one of New/Scheduled/In progress/Done, due date, notes), list and edit screens for both, and a dashboard with job counts by status and overdue jobs. Include 8 sample customers and 20 sample jobs. Make it runnable.
claude -p --output-format json. The JSON result carries usage (input, cache read, cache write, output tokens), total_cost_usd, num_turns and duration_ms. We read those fields and nothing else.| Agent writes the code | Agent builds through PIES | PIES as a share | |
|---|---|---|---|
| Output tokens | 27,297 | 11,254 | 41% |
| Cache read tokens | 554,514 | 567,016 | 102% |
| Cache write tokens | 48,108 | 53,991 | 112% |
| Cost, API list price | US$2.47 | US$1.79 | 72% |
| Agent turns | 34 | 26 | 76% |
| Agent wall time | 330 s | 142 s | 43% |
| Build step after the agent | none, the agent started both servers | 10 s incremental preview build | |
| Output tokens per turn | 803 | 433 | 54% |
Through PIES the agent wrote 41% of the output tokens, for 72% of the cost, in 43% of the time. Cache reads were the same in both runs.
Our first pair let the plain run choose any stack. It chose a 421-line Python script with SQLite and server-rendered HTML: 5 turns, 11,044 output tokens, US$1.05, 143 seconds, and it worked. The PIES run of that pair took 24 turns, 14,731 output tokens and US$2.12, and its preview was blocked by one widget the agent had bound to the wrong table. Read on its own that pair says PIES costs twice as much. It does not compare like with like: a standard-library script is a fraction of the code of a React, Go and MySQL application. We report it here so nobody has to take our word for which pair we picked.
The agent writing the code. 983 lines of Go, JSX and SQL. Sign-in works, all seven screens render from the left menu, the dashboard tiles are right (New 6, Scheduled 5, In progress 4, Done 5), the overdue table shows customer names, and MySQL holds 8 customers and 20 jobs. Everything the brief asked for works.
The agent building through PIES. In Studio: Tables customers (8 rows) and jobs (20 rows); Screens Customers, Jobs, Edit Customer, Edit Job and Dashboard, plus the standard sign-in screens; Functions Startup, create_customer and create_job; five Events; a menu. The preview built in 10 seconds and the running application signs in with PIES Studio.
Two things are wrong in the PIES build, and one is a difference you should know about.
Fixing the two gaps in Studio takes a few more agent turns or a minute by hand. We did not do that before measuring, because the point was to measure one run as it came out.
The saving is in output tokens. Through PIES the agent sends a table spec of a few hundred characters and PIES generates the schema, the Functions and the Screens deterministically. The agent still has to read results back and decide what to do next, so it takes a similar number of turns, but each turn writes about half as much: 433 output tokens a turn against 803.
Cache reads did not drop. Every turn re-reads the conversation so far plus the list of tools the agent can call. The Studio MCP server exposes 109 tools, and their descriptions weigh about as much as the code the plain run had to read back. So the schema overhead was matched, not removed.
That is what we are changing next (tracked as PV-4489):
When those land we will run the same brief again and publish the new pair beside this one.
claude mcp add --transport sse pies http://127.0.0.1:19085/sse
Or install the plugin, which also adds the /pies-build and /pies-run commands: see Build with Claude, OpenAI or Cursor.
claude -p "<the brief above>. Use the pies tools." \
--allowedTools "mcp__pies__*" --output-format json > via-pies.json
claude -p "<the brief above>. Stack: React front end, Go REST backend, MySQL. Seven screens: ... Start it and confirm it serves." \
--strict-mcp-config --mcp-config '{"mcpServers":{}}' \
--allowedTools Bash,Read,Write,Edit,Glob,Grep --output-format json > plain.json
usage, total_cost_usd, num_turns and duration_ms from both files, then open every screen of both applications and check the counts.Related: Build with Claude, OpenAI or Cursor · PIES Studio Hobby · Build with AI