Sawala CloudSawala CloudBeta

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.

DEPLOY

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.
Sawala Cloud — Kodena deploys

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.

AUTHOR

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.

Monacoin-browser TypeScript editor

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>;
Drag & dropstatic site uploads

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": [...] }
TENANTS

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.

handle

Up to 16 lowercase letters and digits, no hyphens. Claimed once per organization, the same name across every script.

slug

You pick the slug. Unique within your organization. Hyphens allowed — script slugs may contain them.

Reserved names

adminapiappauthdocshelpkodenaloginsawalasigninsignupsupportsystemwww

URL anatomy

https://landing-acme.kodena.id
        └──────┘ └──┘ └──────┘
            │      │       │
            │      │       └── tenant domain (provided)
            │      └────────── your org's Kodena name
            └───────────────── your script's slug
PLATFORM

Workers 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.

dispatcher

Dispatcher 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.

tags

Cloudflare 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.