Skip to content

Agentic Layer on Cloudflare

An Agentic Layer on Cloudflare infra

Real business actions. Deterministic permissions. Human approvals. Audit evidence.

Explore the config
One config
cloud.config.ts
import { defineBackend, model, t } from "@cloudconfig/core";

export const config = defineBackend({
  models: {
    post: model({
      title: t.text().required(),
      body: t.textarea(),
      status: t.select(["draft", "published"]),
      author: t.relation("user"),
    }),
  },
  server: { basePath: "/api", docs: true },
});
Models. Validation. Access rules.

Your stack. Your infrastructure.

TypeScript
Nuxt
Next.js
Cloudflare
SQLite

Useful access. Clear limits.

For engineering teams putting agents into production.

Scoped permissions

Explicit actions. Defined limits.

$

cloud.config.tsmodels

nuxt.config.tsmodule

AGENTS.mdagents

.agents/skills/cloudconfig-*/skills

Business rules

Eligibility. Thresholds. Conditions.

New record

Restful API

OpenAPI specification.

openapi.json
generated
GET/api/postsList with filters
POST/api/postsCreate validated
PATCH/api/posts/:idPartial update
DELETE/api/posts/:idDelete by id

Agent access

Useful capabilities. Controlled access.

describe_schemamodels + endpoints
posts_listpage · search · sort
posts_createvalidated input
posts_updatepartial by id

Audit evidence

Every action. Every decision. Recorded.

const api = createClient<typeof config>({
baseUrl: "/api",
})
await api.post.list({ page: 1 })
await api.post.create({ title: "Hello" })

Your existing stack

Same models. Same runtimes. Same workflows.

Connect. Define. Deploy.

Business access, under your control.
01

Add CloudConfig

One command. Your project.

$ cloudconfig init
02

Define the rules

Actions. Permissions. Approval limits.

$ cloud.config.ts
03

Deploy to Cloudflare

Your account. Your infrastructure.

$ cloudconfig deploy

Keep your stack

Your AI. Your cloud. Your workflows. CloudConfig controls business actions.

Quickstart
Nuxt. Next.js. Standalone.
nuxt.config.ts
// cloudconfig init registers the module. It mounts the backend and picks the
// database per request: Cloudflare D1 when deployed, a local file otherwise.
export default defineNuxtConfig({
  modules: ['@cloudconfig/nuxt'],
})

// Then anywhere in your app — typed from the config, routed inside Nitro
// during SSR, so there is no HTTP round-trip:
//
//   const api = useCloudConfig<typeof config>()
//   const { data } = await useAsyncData(() => api.post.list())

Agents act.
You stay in control.

Permissions. Approvals. Evidence.