<!-- cmdz — Building an app entirely by talking to an agent: an end-to-end walkthrough. Source: https://www.cmdz.com/blog/building-an-app-entirely-by-talking-to-an-agent -->
# Building an app entirely by talking to an agent: an end-to-end walkthrough
> A complete session from empty directory to a live app on a custom domain, without touching a dashboard — including the two moments the agent had to come back and ask.

A complete session from empty directory to a live app on a custom domain, without touching a dashboard — including the two moments the agent had to come back and ask.

11 Mar 2026 · 4 min read · cmdz

This is a real session, lightly edited for length. An empty directory to a live app on a custom domain, entirely through Claude Code with the cmdz MCP server connected.

The interesting parts are not where it worked. They are the two moments it had to stop.

## Setup

```bash
claude mcp add --transport http cmdz https://mcp.cmdz.com/v1
```

Browser opens. Passkey. Organisation. Profile — `build`, the default: 41 of 47 tools, no delete scopes. Confirm.

## The first instruction

> Build me a small link-in-bio app. Next.js, Postgres, my links editable behind a login. Deploy it to cmdz when it works locally.

It wrote the app. That part is not what this post is about; you have seen an agent write a Next.js app.

Forty minutes later, `pnpm dev` worked and it moved on to the deployment.

## What it did on the platform

```
cmdz_whoami              → org_01J9…, role owner, cap € 20.00, used € 0.00
cmdz_create_project      → linktree · region nl-rtm-1
cmdz_list_service_types  → postgres, valkey, bucket, vector
cmdz_quote_service       → postgres small: 2 260 credits/mo = € 2.26
```

Then it stopped and told me:

> A small Postgres is € 2.26 a month, which is 11% of your € 20 limit. Your app is currently the only thing in this organisation. Shall I create it?

It quoted before creating. That is not the agent being polite — `cmdz_quote_service` exists as a separate tool precisely so a price can be obtained without committing to it, and the tool description tells the agent to use it first.

> yes

```
cmdz_create_service      → postgres small, provisioning
cmdz_connect_service     → DATABASE_URL injected into app "web"
cmdz_set_env             → AUTH_SECRET set (value generated, never read back)
cmdz_deploy              → build 41s · release 22s
cmdz_wait_for_operation  → healthy after 3s
```

> Live at https://linktree.cmdz.app. Build 41 s, release 22 s. Run rate € 4.71/mo, 24% of your limit.

Ninety-four seconds from "deploy" to a URL. It set `AUTH_SECRET` to a value it generated and then could not read back, which is exactly right.

## Moment one: it hit the ceiling

> Make it fast. Four replicas, bigger instances.

```
cmdz_scale_app  → error
```

> I cannot do that. Scaling to 4 × (2 vCPU, 4 GB) would reserve about 1 240 credits more per month than your limit allows — you have € 15.29 of headroom and this needs about € 21.

> I cannot raise your limit; that is one of the operations no agent profile grants. Two options: raise it yourself in the portal, or I scale to 2 × (1 vCPU, 2 GB), which fits at about € 9.40 a month and for a link-in-bio app is almost certainly more than enough.

> Which would you like?

This is the whole design working. The refusal was mechanical — a reservation that did not fit — and the error carried `retryable: false` and `next_steps`, so the agent stopped instead of retrying with slightly different parameters.

It also proposed the cheaper option unprompted, because `cmdz_explain_cost` had told it what the sizes cost.

> the smaller one

```
cmdz_scale_app  → 2 × (1 vCPU, 2 GB) · rolling · healthy
```

## The domain

> Put linktree.dev on it if it's available.

```
cmdz_search_domain  → linktree.dev available · € 14.38/yr · renews € 14.38
```

> Available at € 14.38 for the first year and € 14.38 to renew — no introductory pricing trick.

> I cannot buy it: `cmdz_buy_domain` is not in the `build` profile, because a registration is a real purchase charged outside your spending limit. You would need to do this in the portal or grant the `full` profile.

## Moment two: I granted more, briefly

I granted `full` for the session.

```
cmdz_buy_domain          → confirmation token required
```

> This charges € 14.38 to your card now, outside your spending limit, and renews at € 14.38 on 25 July 2027. Confirm in the portal to continue.

Even on `full`, it needed a confirmation token it could not mint. I confirmed in the portal.

```
cmdz_buy_domain          → registered
cmdz_add_domain          → linktree.dev → web
cmdz_get_dns_instructions → zone created, A/AAAA written
cmdz_check_domain_status → certificate issued
```

> https://linktree.dev is live.

## What the whole thing cost

```
compute + memory   € 4.40/mo
postgres           € 2.26/mo
storage + backups  € 1.12/mo
build minutes      € 0.11/mo
outbound           included
─────────────────────────────
run rate           € 7.89/mo
limit              € 20.00 · 39% used

one-off: linktree.dev € 14.38 (outside the limit, on card)
```

Total elapsed, from empty directory to custom domain: about an hour and a half, of which perhaps four minutes were platform operations.

## What I want you to take from this

Not that an agent can deploy an app — several platforms can do that now, and Railway's does it well.

What matters is the shape of the two refusals. Both times it stopped, it stopped for a **mechanical** reason: a reservation that did not fit, and a confirmation token it could not produce. Neither was a policy in a prompt that a sufficiently persuasive follow-up could talk it out of.

That is the difference between an agent you supervise and an agent you can leave alone. And the reason I could grant `full` for ten minutes without thinking hard about it is that the worst case was bounded by a number I had already chosen.

[The limit is not the brake on the agent. The limit is what makes the agent possible.](/mcp)

## Set your limit and start.

One click with a passkey, then you verify a payment method once to start your 14-day free trial (€ 10 of credit). After that it is prepaid pay-as-you-go — you only ever spend credit you have already bought, and no invoice ever arrives above the amount you set.

- [Create account](https://app.cmdz.com/signup)
- [Read the docs](https://docs.cmdz.com)
