Code at the edge.
Live in seconds.
Kodena lets your team ship Workers and static sites without leaving the dashboard. Write code in the browser or drag a folder in — every script gets its own subdomain on the global Cloudflare network.
Two paths.
One click.
Pick a Sawala project, name a script, then choose how you ship it: paste Worker source code into the in-browser editor, or drag-and-drop a folder of static files. Either way, the moment you click Deploy, Kodena builds the upload, pushes it to Cloudflare, and your tenant URL is ready before you can refresh the tab.
- ✓Source uploads — paste a Worker script, deploy in seconds.
- ✓Folder uploads — drag a build output (HTML, CSS, JS, images) and ship it as a static site.
- ✓Non-blocking — Kodena returns the moment the upload is accepted; the dispatch finishes in the background.
- ✓No CLI required for v1 — every deploy path is reachable from the dashboard.
Runtime Cloudflare Workers — no cold starts
Namespace Workers for Platforms — global dispatch
Subdomain <slug>-<handle>.kodena.id
Editor Monaco in the browser
Uploads Source code · static folder
Cloudflare Workers for Platforms under the hood. No servers, no scaling config, no cold starts.
A real code editor.
A real upload zone.
Kodena ships with two authoring surfaces side by side — pick whichever fits the script you are shipping today, and switch when the script changes shape tomorrow.
Edit Worker source code with the same editor that powers VS Code. Cloudflare Workers types are pre-loaded — autocomplete on env.fetch(req) works out of the box.
Worker source — autocompleted
export default {
async fetch(req: Request, env: Env): Promise<Response> {
return new Response("hi from kodena");
},
} satisfies ExportedHandler<Env>;Drop a folder from your file manager. Kodena walks the tree, base64s the bytes in a Web Worker, and uploads everything in one request — no zip step, no CLI dance.
my-site/
├── index.html
├── about.html
├── assets/
│ ├── styles.css
│ └── app.js
└── images/
└── logo.svg
→ POST /kodena/scripts
{ "kind": "assets", "assets": [...] }Your script,
your subdomain.
Every Kodena script is published to its own URL the moment it deploys — landing-acme.kodena.id where acme is a short, friendly name your organization picks once. No DNS to configure, no certificates to issue.
handleUp to 16 lowercase letters and digits, no hyphens. Claimed once per organization, the same name across every script.
slugYou pick the slug. Unique within your organization. Hyphens allowed — script slugs may contain them.
Reserved names
adminapiappauthdocshelpkodenaloginsawalasigninsignupsupportsystemwwwURL anatomy
https://landing-acme.kodena.id
└──────┘ └──┘ └──────┘
│ │ │
│ │ └── tenant domain (provided)
│ └────────── your org's Kodena name
└───────────────── your script's slugWorkers for Platforms.
Sized for your team.
Kodena is built on Cloudflare Workers for Platforms — a single shared dispatch namespace named kodena holds every tenant Worker your team deploys. One global cert, one global runtime, one global cache.
dispatcherDispatcher Worker. Inspects the incoming Host header, looks up the matching script in Kodena's database, and forwards the request via env.dispatcher.get(name).fetch(req). No origin hop.
tagsCloudflare script tags. Every deploy carries kodena:script, org:<id>, project:<id> tags — list, filter, and audit your team's footprint from the Cloudflare dashboard or API.
dispatch lookup — runs on every request
// runs on every *.kodena.id request
const name = parseHost(req.headers.get('host'));
return env.dispatcher.get(name).fetch(req);tags applied at every deploy
POST /kodena/scripts
{
"slug": "landing",
"kind": "code",
"script_content": "export default { ... }"
}
→ 201 Created
{
"id": "scr_01HX...",
"slug": "landing",
"url": "https://landing-acme.kodena.id"
}More on the roadmap.
Everything you need to run a small platform — without running one yourself.
Non-blocking deploys
Deploys return the moment the upload is accepted. Dispatch happens in the background — the dashboard updates as soon as the script is live.
Tagged scripts
Every deployed Worker carries org and project tags. Filter your org's entire footprint via one Cloudflare API call.
Rename and redeploy
Edit the source or the slug, click Deploy again — Kodena handles the old-vs-new transition. No "delete and recreate" dance.
Clean delete
Deleting a script removes both the database row and the dispatched Worker. No orphans, no stranded subdomains.
Framework uploads
ZIP upload and a CLI deploy flow are on the roadmap — point at any framework's dist/ output and ship it.
OpenAPI docs
Built-in Scalar API reference at /dashboard/kodena/api-docs — always in sync with your deployed API.
Ship your first script today.
Paste a Worker or drop a folder. Live in under a minute.