Cloudflare 전 제품을 아우르는 통합 CLI 구축
(blog.cloudflare.com)- Cloudflare는 100개 이상의 제품과 약 3,000개의 API 작업을 통합 관리할 수 있는 전역 CLI를 개발 중임
- 새로운 CLI는 기존 Wrangler를 확장해 모든 Cloudflare 서비스와 리소스를 코드 기반으로 제어 가능하게 함
- TypeScript 스키마 시스템을 도입해 API, CLI 명령어, 인자 정의를 일관되게 자동 생성하며 OpenAPI 변환도 지원함
- 로컬 개발 환경에서는 Local Explorer를 통해 KV, R2, D1 등 리소스를 시각적으로 탐색하고 프로덕션과 동일한 API로 테스트 가능함
- 현재 기술 프리뷰(
npx cf또는npm install -g cf)가 공개되어 있으며, Cloudflare는 사용자 피드백을 받아 완전한 통합 CLI 완성을 추진 중임
Cloudflare 전역 CLI 구축
- Cloudflare는 100개 이상의 제품과 약 3,000개의 HTTP API 작업을 보유한 광범위한 API 생태계를 운영 중임
- 개발자와 에이전트(agents) 가 Cloudflare 플랫폼에서 애플리케이션과 플랫폼을 구축하고 API를 통해 분석 및 로그를 조회함
- 이를 위해 Cloudflare는 모든 제품을 CLI, SDK, Terraform, 설정 파일, 문서 등 다양한 인터페이스에서 사용할 수 있도록 확장 중임
- 기존 Wrangler CLI는 일부 제품만 지원했으나, 이제 Cloudflare 전 제품을 아우르는 새로운 CLI로 재구축 중임
- 새로운 CLI는 인프라를 코드로 구성할 수 있게 하며, 현재
npx cf또는npm install -g cf로 기술 프리뷰 버전을 사용할 수 있음
스키마와 코드 생성 파이프라인의 재설계
- Cloudflare는 OpenAPI 스키마를 기반으로 SDK, Terraform provider, Code Mode MCP 서버를 자동 생성함
- 그러나 CLI, Workers Bindings, wrangler.jsonc, Agent Skills, 대시보드, 문서 등은 여전히 수동으로 관리되어 확장성과 일관성에 한계가 있었음
- OpenAPI는 REST API만 표현할 수 있어 CLI 명령어, 로컬 개발, RPC 기반 Workers Bindings, Agent Skills 등 복합적 인터페이스를 표현하기 어려움
- Cloudflare는 이를 해결하기 위해 TypeScript 기반의 새로운 스키마 시스템을 도입함
- TypeScript 타입 정의를 통해 API, CLI 명령어, 인자, 컨텍스트를 모두 기술 가능
- 일관성을 보장하는 linting 및 guardrail 규칙을 포함
- 필요 시 OpenAPI 스키마로 변환 가능
- 이 시스템을 통해 CLI뿐 아니라 향후 다양한 인터페이스를 자동 생성할 수 있는 통합 코드 생성 기반을 마련함
에이전트와 CLI의 일관성 및 컨텍스트 엔지니어링
- 에이전트는 CLI 명령어의 일관된 패턴을 기대함
- 예:
get은 항상get,info는 사용하지 않음 --force,--json등 옵션 이름도 통일
- 예:
- 이러한 규칙은 스키마 레벨에서 강제되어 대규모 조직에서도 명령어 불일치 문제를 방지함
- Wrangler CLI는 로컬 및 원격 리소스를 모두 다루는 독특한 구조를 가짐
- D1, R2, KV 등 리소스를 로컬 또는 원격으로 동일한 명령어로 관리 가능
- 명령 실행 시 로컬/원격 여부를 명확히 표시해 혼동을 방지함
- 이러한 일관성은 에이전트가 로컬 개발 환경에서도 정확한 컨텍스트를 인식하도록 돕는 핵심 요소임
Local Explorer — 로컬에서도 가능한 모든 작업
- Cloudflare는 Local Explorer를 Wrangler와 Cloudflare Vite 플러그인에 오픈 베타로 공개함
- Local Explorer는 로컬 개발 중 Worker가 사용하는 KV, R2, D1, Durable Objects, Workflows 등의 시뮬레이션 리소스를 탐색 가능
- Cloudflare API나 대시보드에서 가능한 작업을 로컬에서도 동일한 API 구조로 수행할 수 있음
- Miniflare 기반 로컬 환경에서 프로덕션과 동일한 API를 제공하며, SQLite 데이터베이스로 빠른 테스트와 오프라인 개발을 지원함
- 기존에는
.wrangler/state디렉터리를 직접 분석해야 했으나, 이제는 키보드 단축키e로 Local Explorer를 열어 바인딩과 데이터를 시각적으로 확인 가능 - Local Explorer는 스키마 검증, 테스트 데이터 삽입, 테이블 초기화 등 로컬 개발 주기를 대화형으로 개선함
/cdn-cgi/explorer/api엔드포인트를 통해 로컬 리소스를 관리할 수 있으며, 에이전트는 이 주소의 OpenAPI 스펙을 사용해 로컬 자원을 제어 가능
Cloudflare 전역 CLI를 위한 피드백 요청
- Cloudflare는 Wrangler의 기존 기능과 새 시스템을 결합해 모든 제품을 지원하는 통합 CLI를 완성할 계획임
- 현재 기술 프리뷰(
npx cf또는npm install -g cf)를 통해 초기 버전을 체험 가능 - 사용자에게 CLI에서 원하는 기능, 대시보드에서 클릭으로만 가능한 작업,
wrangler.jsonc에서 설정하고 싶은 항목(DNS, Cache Rules 등)에 대한 피드백을 요청함 - Cloudflare Developers Discord에서 의견을 공유할 수 있으며, 향후 지속적인 업데이트가 예정되어 있음
Cloudflare 플랫폼 개요
- Cloudflare의 Connectivity Cloud는 기업 네트워크 보호, 대규모 애플리케이션 구축, 웹사이트 가속, DDoS 방어, 해킹 차단, Zero Trust 구현을 지원함
- 무료 앱 1.1.1.1을 통해 더 빠르고 안전한 인터넷 사용 가능
- Cloudflare의 “더 나은 인터넷 구축” 미션과 채용 정보는 공식 웹사이트에서 확인 가능
Hacker News 의견들
-
Wrangler CLI가 로컬 개발 중 필요한 API 토큰 권한을 미리 보여주면 좋겠음
배포 전에 어떤 권한이 필요한지 명확히 알 수 있고,cf permissions check같은 명령으로 누락되거나 불필요한 권한을 확인할 수 있으면 이상적임- 완전 공감함. ChatGPT가 처음에 권한을 잘못 설정하면 결국 몇 시간 동안 문서를 뒤지거나 토큰 조합을 시도해야 함
- 이런 기능을 하는 doctor 명령어가 있으면 정말 편리함. 더 많은 서비스가 이런 걸 제공했으면 함
- 예전에 오타로 토큰을 잘못 설정한 적이 있는데, 이런 기능이 있었다면 큰 도움이 되었을 것임
- 더 나아가면, CLI가 자동으로 키를 생성해주는 기능도 좋을 것 같음
- 결국 핵심은 API의 발견 가능성(discoverability) 을 높이는 것이라 생각함
GraphQL은 HATEOAS 원칙을 잘 따르기 때문에 LLM이 API를 탐색하기에 유리함
문서 버전이 맞지 않아 생기는 문제보다, API 자체가 스스로 기능을 드러내는 구조가 훨씬 낫다고 봄
-
리소스 그룹 단위로 권한 제어를 먼저 추가해줬으면 함
지금은 zone(도메인) 기반 권한만 있어서, zone에 속하지 않는 worker 같은 리소스는 낮은 권한으로도 코드가 교체되거나 삭제될 수 있음
GitHub Enterprise처럼 super account + sub account 구조를 지원하면 더 좋겠음. 예: ACME Corp / ACME Corp (Prod)- 혹시 이게 Cloudflare Organization 기능과 같은 개념인지 궁금함
- 도메인을 공유하지 못하더라도 superaccount + subaccount 구조는 정말 유용할 것 같음
- worker가 zone 기반이 아니라서 활용도가 떨어진다는 점에 동의함
-
훌륭한 글이라 영감을 받았음. 다만 TypeSpec이 언급되지 않은 게 의외임
TypeScript 스타일의 스키마 언어로, “OpenAPI가 진짜 잘 만들어졌다면 이런 느낌일 것”이라 설명하곤 함
아마 자체 구현이 더 단순하고 유연하다고 판단했을 듯함. 요즘은 agent 덕분에 BYO 비용도 많이 줄었음- TypeSpec을 정말 좋아함. OpenAPI 작성이 훨씬 쉬워짐
하지만 요즘은 aep.dev 스타일 API를 선호함. 일관된 패턴 덕분에 aepcli를 바로 쓰거나 직접 만들기 쉬움
Terraform도 별도 provider 없이 바로 작동함 - OpenAPI의 어떤 부분을 개선한 건지 궁금함
- TypeSpec을 정말 좋아함. OpenAPI 작성이 훨씬 쉬워짐
-
요즘 AI agent 중심의 CLI-first 설계가 흥미로움
우리도 개발자 도구를 만들 때 CLI와 API를 먼저 만들고, 대시보드는 나중에 붙였음
위에서 언급된cf permissions check아이디어가 특히 좋음
agent는 CLI 사용은 잘하지만 에러 원인 진단은 서툼.
“scope X 누락, cf token add --scope X 실행” 같은 명확한 에러 메시지가 훨씬 중요함 -
npx cf로 기술 프리뷰를 바로 써볼 수 있다는데, 몇 가지 궁금한 점이 있음
오픈소스인지, 그리고 Node.js 없이 단일 바이너리 형태로 제공될 계획이 있는지 알고 싶음.
혹시 최근 인수한 Bun 같은 걸 활용할 수도 있을까?- 나도 리포지토리를 못 찾았지만, npm 패키지가 MIT 라이선스이고 소스맵이 포함되어 있어서 곧 공개될 것 같음
-
장기 토큰은 피했으면 함.
대신 CLI에서 짧은 수명의 제한된 토큰을 쉽게 만들고, 파일로 관리하거나 자동 갱신할 수 있으면 좋겠음
또 다른 방법으로는 proxy 모드를 두어, 특정 도메인이나 버킷에만 접근 권한을 위임하는 구조도 괜찮을 듯함- GitLab처럼 SSH 서버를 통해 짧은 수명의 PAT를 한 번에 생성하는 방식이 마음에 듦
-
아이러니하게도 AI agent 시대가 오면서 다시 CLI 중심 개발로 돌아가고 있음
Cloudflare 캐시를 지울 때마다 웹 UI에서 여러 단계를 클릭해야 하는데, 그냥 OpenClaw agent에게 명령만 하면 좋겠음- 굳이 OpenClaw를 쓸 필요가 없음. CLI 명령을 직접 호출하면 됨. 그게 CLI의 본질임
-
Wrangler의 인증 방식은 OAuth(전체 권한)와 대시보드에서 수동 생성한 정적 토큰 두 가지뿐임
하지만 사람과 AI agent가 서로 다른 권한 경계를 가져야 하는 경우엔 맞지 않음
CLI에서 직접 scoped, short-lived 토큰을 만들 수 있으면 좋겠음
GitHub issue #13042에서도 논의 중임.
토큰은 리소스 타입뿐 아니라 리소스 ID와 액션 단위로 세분화되어야 함 -
4월 1일에 Cloudflare가 EmDash를 x402 지원과 함께 공개했는데, 이제는 CLI에 집중하는 듯함
Cloudflare가 인간이 아닌 agent를 주요 사용자로 삼는 개발자 생태계를 조용히 재구축 중인 것 같음 -
TypeScript 스키마로 API, CLI 명령, 인자, 컨텍스트를 정의했다는데,
왜 그 도구나 프레임워크가 여기서 소개되지 않았는지 궁금함
혹시 위에서 언급된 TypeSpec과 유사한 구조인지 알고 싶음