Cloudflare's cf CLI Defaults to JSON: What Birthday Week 2026 Means for Developers

Cloudflare's cf CLI Defaults to JSON: What Birthday Week 2026 Means for Developers

Cloudflare shipped four things during Birthday Week 2026: the cf CLI, Forge, Vinext 1.0 and EmDash 1.0. Four launches in a week is a lot of announcement to read, and the temptation is to skim the headlines and move on.

The detail worth stopping on is a default. In the cf CLI, JSON is the default output format — not a human-readable table. You have to ask for the table.

That is a small line in a launch post and it tells you who the tool is for.

What actually shipped

Let us take the numbers first, because they set up everything else.

Wrangler, the CLI most of us have been using, accumulated about 280 hand-written command operations over several years. The cf CLI covers more than 3,000 operations — the whole Cloudflare API surface. Cloudflare’s own Forge announcement puts the full API at over 3,500 operations across hundreds of services.

You do not close a gap like that by hiring more people to write commands. You close it by generating the commands, which is exactly what the second launch is. Forge is the pipeline that produced cf: OpenAPI specifications in, SDKs and CLIs and docs out. It is Apache 2.0 licensed, and Cloudflare are explicit that you can run it yourself, privately, modified, for free, against your own API.

So two of the four launches are really one story. The CLI is the artefact; Forge is the admission that hand-maintaining a surface that size was never going to work.

The part that is actually new

Now, take the cf defaults only.

  • Output is JSON unless you ask otherwise.
  • Discovery happens through cf cli search, in natural language.
  • Configuration moves to cloudflare.config.ts, a TypeScript file, so that it type-checks and a language server can read it.

Read those three together and the design intent is not subtle. Tables are for eyes. JSON is for parsers. Natural-language search is not there because developers forgot the flags — it is there because an agent does not know them. And configuration moved to TypeScript so that a language server can tell an agent what is valid before it writes the call.

Cloudflare say as much about Wrangler’s retirement: when the open beta ends, the final major version of Wrangler will direct “you and your agent” to use cf. Not you. You and your agent.

The direction across all four launches is the same one. EmDash ships a built-in MCP server alongside its admin interface, so agents get a first-class path to the content rather than a scraped one. Vinext, by Cloudflare’s own account, graduated from an AI experiment into a production framework.

So the shift is not that tooling has become AI-powered. It is that the primary reader of developer tooling has changed, and the human-facing affordances — the pretty table, the interactive prompt — are quietly becoming the compatibility layer.

Where the launch copy and the repository disagree

The Vinext headline is that you can take any Next.js app, Pages Router or App Router, and deploy it anywhere including the Cloudflare Workers free plan.

The repository is more careful. Vinext is a Vite plugin that reimplements the Next.js API surface rather than consuming Next.js build output, and it reports roughly 94% coverage of the next/* modules. The README states plainly that it is “not yet a drop-in replacement for every application”, and names the gaps: incomplete "use cache" and Partial Prerendering, no build-time image or font optimisation, native module issues in App Router development, platform-specific behaviour like preferredRegion.

There is a command, vinext check, that you are told to run before migrating.

Ninety-four per cent is a genuinely impressive number for a reimplementation. It is also not a hundred, and the six per cent is not randomly distributed — it clusters in caching and image handling, which is precisely where a content-heavy site lives. That does not make Vinext a bad bet. It makes it a bet you size by running the check on your own application rather than by reading the announcement.

The one I would actually act on

EmDash is the launch I would look at hardest, and for a reason specific to how we build.

EmDash 1.0 is a full-stack TypeScript CMS built on Astro, MIT licensed, positioned as the spiritual successor to WordPress. It was announced on 1 April this year, which invited a certain amount of scepticism, and has reached a stable release with more than 175 contributors, over 1,800 commits and 25 languages. Cloudflare have been running their own blog on it since August — millions of pageviews a week, with legitimate spikes to 5,000 requests per second.

Every site in our own constellation is Astro. A CMS that is native to the framework we already run, rather than a headless API we would have to glue on, is a different proposition from yet another CMS.

The plugin registry is the interesting piece and the one to be careful about. It is decentralised, built on AT Protocol — developers publish without handing identity or release ownership to a central marketplace — and plugins run sandboxed in isolated runtimes with capability-gated access to content, media and network.

That is a direct answer to WordPress’s structural problem, where a plugin typically runs with the same privileges as the core application and a supply chain compromise is total. Capability-gating is the right shape of fix.

It is also brand new. A decentralised registry has no established norms yet for what happens when a popular plugin is abandoned, or when two identities claim the same name. Those problems are not hypothetical — they are the ones every package ecosystem eventually has, and this one has not had time to have them.

What I would do on Monday

Not a migration. Three small things, in order of how cheap they are.

Run vinext check against one real application. Not to migrate — to find out whether your six per cent is the boring kind or the load-bearing kind. It costs an afternoon and it converts an announcement into a number about your own codebase.

Install cf alongside Wrangler and leave Wrangler where it is. It is an open beta, and Wrangler has 18 months of maintenance after the beta ends. There is no cliff here. What you are buying with the install is a feel for whether cloudflare.config.ts fits how you actually manage environments.

Look at EmDash if, and only if, you are already on Astro. If you are not, the framework is the migration and the CMS is a detail. If you are, this is the first CMS in a while that does not ask you to run a second stack beside the one you have.

And the thing I would not do is treat the JSON default as a curiosity. It is the clearest statement in the whole week about who these tools are being built for. What we need to decide is not whether to adopt any single one of these four. It is whether our own internal tooling still assumes a person is reading the output.


Sources: Cloudflare’s launch posts for cf, Forge and EmDash 1.0, and the Vinext repository. Figures quoted are Cloudflare’s own, checked on 29 September 2026.

Free Guide · 2026

AI Strategy Primer for Australian Business Leaders

A practical framework for AI adoption in 2026 — cut through the hype and start with what matters.

We email a confirmation link first. No spam. Unsubscribe any time.