Introductie van cf: de agentische CLI voor de volledige Cloudflare-API
Dit artikel is ook beschikbaar in English, Deutsch, Español, Español (Latinoamérica), 日本語, 한국어, 繁體中文 en 简体中文.

Het afgelopen jaar is het gebruik van Wrangler door agents sterk gestegen.
In maart 2026 waren agents verantwoordelijk voor een kwart van het gebruik van Wrangler, tegenover eencijferige percentages het jaar daarvoor. Vorige week bereikte het gebruik door agents 48%.
Agents zijn productievere gebruikers: ze gebruiken bijna twee keer zo veel afzonderlijke commando's per dag en hebben bijna vier keer zoveel kans om zes of meer commando's te gebruiken.
Agents zijn dol op CLI’s. Maar Wrangler biedt commando's voor slechts zo'n 280 operaties, terwijl Cloudflare er duizenden aanbiedt.
Eerder dit jaar lieten we al doorschemeren hoe we dit wilden oplossen, en vandaag stellen we agents in staat om elk Cloudflare-product te gebruiken door een nieuwe CLI te introduceren: cf.
cf is een CLI die is gebouwd voor de volgende generatie softwareontwikkeling:
- Agents kunnen het commando vinden dat ze nodig hebben om alles te doen wat ze willen, met specifieke zoekopdrachten en sturing.
- JSON is de standaardinterface, mooi opgemaakt voor mensen en gecondenseerd voor agents voor maximale contextbesparing.
- cloudflare.config.ts is het nieuwe configuratieformaat voor het gehele Cloudflare-platform, te beginnen met Workers, en brengt de veiligheid en nauwkeurigheid van TypeScript naar jou en het taalserverprotocol (LSP) van je agent.
- Vite wordt de standaard, met de beste lokale ontwikkelserver en een plug-in-suite voor ontwikkelaars en framework-auteurs.
Installeer vandaag nog de open bèta wereldwijd en start hem van eender waar:
npm i -g cfcf geeft je agent toegang tot de volledige Cloudflare-API
Wat als je agent alles kon doen wat Cloudflare kan? Dat is de vraag die ons begin dit jaar nieuwsgierig maakte: agents werden steeds krachtiger, maar wat ze konden doen met de CLI van Cloudflare was nog steeds beperkt.
Wrangler was handmatig gebouwd, waarbij elk productteam zijn eigen aanpak hanteerde voor de ontwikkelervaring van de commando's. Patronen doorvoeren bij teams was vrijwel onmogelijk, zelfs niet bij onze ~280 commandopaden. We hadden inconsistente terminologie verspreid over d1 info, hyperdrive get en workflows describe, omdat elk team op verschillende momenten zijn eigen werkwijzen ontwikkelde. Sommige teams bouwden volledig op maat gemaakte ervaringen met duizenden regels code die uiteindelijk nauwelijks werden gebruikt, en teams bedachten verschillende oplossingen voor dezelfde problemen.
We wilden tegelijkertijd standaardiseren wat we hadden én een enorme uitbreiding realiseren. Forge, de nieuwe uniforme API-generatiepipeline van Cloudflare, stelde ons hiertoe in staat, voortbouwend op het idee om onze CLI-commando's rechtstreeks te genereren vanuit het API-schema dat onze API-documentatie en SDK-generatie aandrijft. Alles wat we leveren heeft een OpenAPI-schema, en als we dit met iets meer informatie annoteren, kunnen we het als bron gebruiken voor Forge om een CLI te maken.
Dit stelt ons in staat cf uit te breiden van de ~280 functies die Wrangler in de loop van de tijd had opgebouwd, naar de volledige API-oppervlakte van Cloudflare met meer dan 3.000 operaties.
Nu is het eenvoudig om je agent cf te geven en hem te vragen een worker op te zetten, te deployen, te monitoren, te beschermen met Cloudflare Access, een domein te kopen en het te beveiligen met Cloudflare WAF, allemaal vanuit één tool.
Gebouwd voor een agent die cf nog nooit heeft gebruikt
cf is gebouwd voor de toekomst van software engineering, waarbij agentische ontwikkeling drastisch verandert hoe software wordt gemaakt en uitgerold. Dit jaar hebben we ons gericht op het leveren van tools om deze verschuiving te ondersteunen, met cf als hoogtepunt. cf is van de grond af opgebouwd met agents in gedachten en bevat innovatieve tools voor agentische opdrachtdetectie die volgens ons binnenkort standaard zullen worden in meer CLI’s.
Wrangler had als voordeel dat jaren documentatie, blogs en guides van derden waren opgenomen in het trainingsproces van LLM’s. Maar het had hetzelfde nadeel: het wijzigen van hoe Wrangler werkt gaat nu in tegen aangeleerd gedrag, en significante wijzigingen waren onvermijdelijk gezien de omvang van de verbeteringen die we willen aanbrengen.
Het introduceren van een nieuwe CLI die agents nog nooit hebben gezien klinkt als een grote verstorende verandering, maar het is eigenlijk de eenvoudigste oplossing. Door de ontwerpkeuzes die we hebben gemaakt, de contextinjecties die we kunnen doen en de AGENTS.md-bestanden die we kunnen toevoegen, is een dergelijke overstap eigenlijk minder verwarrend dan een agent te vragen de grote verschillen tussen twee versies van een hem bekende tool te contextualiseren. We lanceren met een paar van deze agentgerichte functies ingebouwd, met meer op komst.
Agents moeten JSON filteren, niet naar tabellen kijken
Wanneer agents Wrangler gebruiken, voegen ze --json toe aan elk commando dat ze uitvoeren en filteren ze de uitvoer vaak met jq om een subset van velden te extraheren. Maar slechts sommige commando's in Wrangler ondersteunden --json; veel commando's retourneerden unicode-tabellen, ontworpen voor mensen die de uitvoer in hun terminal bekijken. Agents kunnen hiermee overweg, maar het kost hen meer tijd en tokens dan een jq-filter.
In cf nemen we het tegenovergestelde standpunt in: agents hebben simpelweg JSON nodig, en als agents de toekomstige primaire gebruiker van deze tool zijn, moet het de standaard zijn. Voor de overgrote meerderheid van commando's die zelden door mensen worden gebruikt, is dit overduidelijk de juiste keuze.
Jij als menselijke gebruiker van deze CLI staat in werkelijkheid één stap verwijderd van direct gebruik. Het verdient de voorkeur dat agents hun resultaten gemakkelijk kunnen filteren en die gefilterde lijst kunnen teruggeven in het door jou gewenste formaat, in plaats van tabellen te leveren die je waarschijnlijk nooit direct zult lezen.
Maar wat als je iets wilt doen waarbij echte persoonlijke invoer nodig is, zoals zoeken naar een domein om te kopen?
Voor commando's die je agent kan bereiken via het koppelen van benoemde parameters in een lange en omslachtige reeks, kun je eenvoudig een formulier invullen. Cf splitst de API-vereisten op in een reeks gevalideerde invoervelden, zodat het kopen van een domein, zelfs met complexe vereisten, eenvoudig te volgen is.
Of vraag gewoon je agent om het te doen, als je dat liever hebt.
Je agent kan zelf het juiste commando vinden
Hoe kan je agent, met 3.000 mogelijke routes door een CLI, snel de juiste operatie vinden zonder je context op te blazen? Daarom hebben we ook cf cli search toegevoegd.
Met dit commando kan je agent in natuurlijke taal aangeven wat hij moet doen, en een kleine zoekindex levert een lijst met geschikte commando's op basis van hun API-beschrijving en parameters. We informeren je agent automatisch over dit commando wanneer hij voor het eerst --help uitvoert.
Configuratie die typecontroles uitvoert op je agent
Ons nieuwe configuratieformaat is gebaseerd op TypeScript, dat makkelijk te lezen is voor mensen en agents, en stelt je in staat je configuratie programmatisch te schrijven.
Getypte configuratie is enorm nuttig voor agents. We hebben gemerkt dat agents, zelfs zonder voorafgaande kennis van het programmatische configuratieformaat, gemakkelijk de configuratie kunnen identificeren en op verzoek kunnen aanpassen, zelfs bij elementen zoals env die drastisch zijn veranderd ten opzichte van dezelfde functie in Wrangler. Alle agents die LSP-plug-ins gebruiken, zoals Claude Code en Codex, profiteren van de mogelijkheid om meer over het configuratiebestandsformaat in context te interpreteren en maken daardoor veel nauwkeurigere suggesties.
Vergelijk dit met TOML, dat geen toegankelijk schema had, of JSONC, dat een gekoppeld schema had dat agents zelden gebruikten.
Sommige Wrangler-configuratiebestanden binnen Cloudflare zijn met 40% gecondenseerd, van meer dan 5.000 regels met veel aangepaste omgevingen per ontwikkelaar, naar factory files die de configuratie van elke ontwikkelaar efficiënter opbouwen.
Dit wordt bereikt door elke omgeving programmatisch te definiëren vanuit dezelfde universele basis, in plaats van env-blokken te kopiëren zoals gebruikelijk was in Wrangler. Een eenvoudige Worker met meerdere omgevingen schakelt eenvoudig via het Vite-native modusargument tussen de ene configuratieset en de andere.
Een eenvoudige configuratie waarmee dit nu mogelijk is, ziet er als volgt uit:
import { bindings, defineConfig } from "cf/config";
import * as entrypoint from "./index.js" with { type: "cf-worker" };
export default defineConfig(({ mode }) => ({
worker: {
name: "example-worker",
entrypoint,
compatibilityDate: "2026-09-27",
env: {
Environment: bindings.text(`This is ${mode} environment`),
},
},
}));Met cf migrate kun je je Cloudflare Worker naar dit nieuwe format migreren.
We bieden ook een aantal hulpfuncties aan om het bouwen van je Worker te vereenvoudigen.
bindings is een eenvoudige manier om je agent te laten ontdekken wat het ontwikkelaarsplatform allemaal te bieden heeft. Alles — van omgevingsvariabelen tot opslag, databases en wachtrijen — kan automatisch door je editor aangevuld en uitgelegd worden.
import { bindings, defineConfig } from "cf/config";
export default defineConfig(({ mode }) => ({
worker: {
// ...
env: {
API_URL: bindings.text(
mode === "production"
? "https://example.com"
: "https://staging.example.com",
),
API_TOKEN: bindings.secret(),
CACHE: bindings.kv({
id: mode === "production"
? "production-namespace-id"
: "staging-namespace-id",
}),
DATABASE: bindings.d1({ name: `example-${mode}-database` }),
UPLOADS: bindings.r2({ name: `example-${mode}-uploads` }),
JOBS: bindings.queue < { userId: string } > ({
name: `example-${mode}-jobs`,
}),
AI: bindings.ai(),
SEARCH_INDEX: bindings.vectorize({
name: `example-${mode}-search`,
}),
API: bindings.worker({ worker: `example-${mode}-api` }),
},
},
}));Daarnaast hebben we een hulpprogramma toegevoegd voor triggers,, de nieuwe manier om routes, wachtrijen, schema’s en e-mailtriggers voor je Worker te definiëren. Deze acties, die je Worker kunnen activeren, staan niet langer verspreid door je configuratiebestand, maar bevinden zich nu in één gemakkelijk te vinden blok.
import { defineConfig, triggers } from "cf/config";
export default defineConfig({
worker: {
// ...
triggers: [
triggers.fetch({ pattern: "example.com/*" }),
triggers.scheduled({ schedule: "0 * * * *" }),
triggers.queue({ name: "jobs", maxBatchSize: 10 }),
triggers.email({ addresses: ["support@example.com"] }),
],
},
});defineConfig.worker is nog maar het begin. Het is onze bedoeling dat je met cloudflare.config.ts Cloudflare in zijn geheel op deze manier zult beheren. Elk product dat je nodig hebt — waarbij de bijbehorende API via cf beschikbaar is voor je agent — kan via de typesafe-configuratie worden gedefinieerd. Binnenkort kun je via dit configuratiebestand complete beleidsregels instellen, zones configureren, DNS instellen en nog veel meer.
Een toonaangevende ontwikkelervaring
Toen Wrangler begon met het bouwen van JavaScript Workers, bestond Vite nog niet. In plaats daarvan gebruikten we esbuild in Wrangler om je Workers te bundelen. De dev-server die Wrangler beschikbaar stelde op :8787 was iets dat het Wrangler-team had gebouwd, en aanpassingen vereisten ingrijpen in de interne werking van Cloudflare-specifieke lokale tooling zoals Miniflare.
Vite is een enorme verbetering hierop, met een groot ecosysteem van plug-ins, een toonaangevende dev-server met HMR (hot module replacement) en builds die de Rust-gebaseerde bibliotheek Rolldown gebruiken voor tree-shaking. Alles wat je met Vite kunt doen, kun je doen met de Cloudflare Vite-plug-in.
De Cloudflare Vite-plug-in is de aanbevolen manier om Workers te bouwen, wat je ook aan het bouwen bent: of het nu een front-end-gericht project is of een back-end-API. Samen met onze Vitest-plug-in biedt het een samenhangende ontwikkel- en testomgeving die overeenkomt met de Cloudflare Workers-runtime en je directe toegang geeft tot bindings en platform-API's.
cf is standaard gebouwd op Vite. De meeste Workers zullen eenvoudig migreren met agents. Andere hebben mogelijk meer tijd nodig, daarom zal cf voor JavaScript Workers die esbuild en Rust- en Python-Workers moeten blijven gebruiken, blijven delegeren aan Wrangler voor dev en deployment.
Migreren vanuit Wrangler
Het migreren van een Worker vanuit Wrangler is zo eenvoudig als het uitvoeren van cf migrate.
cf migrateWorkers die al met Vite worden gebouwd, worden automatisch geconverteerd naar cloudflare.config.ts. Als je Worker afhankelijk is van Wrangler voor esbuild, blijft cf builds delegeren aan Wrangler.
Wanneer de open bèta eindigt, zullen we een definitieve hoofdversie van Wrangler uitbrengen die jou en je agent naar cf verwijst. We blijven onderhoudssupport bieden voor Wrangler gedurende 18 maanden nadat de bèta is afgelopen, zodat je de tijd hebt om te migreren.
Je kunt ook nieuwe projecten nemen en ze automatisch configureren voor Cloudflare door cf init/deploy uit te voeren, wat de Cloudflare Vite-plug-in voor je installeert en een configuratiebestand aanmaakt.
Statische sites hebben nog steeds geen configuratiebestand nodig om te starten, en ze deployen is zo eenvoudig als het uitvoeren van cf deploy in je project.
Om een nieuw Hello World-project te starten met cf, gebruik je cf init.
cf is open source en problemen kunnen worden gemeld via onze GitHub-repository.

