Public beta · Get started

Deploy your first
service in minutes.

Download one executable for your OS, drop it next to your app folder, and run it — you get a live service. No Go toolchain, no Docker, no node_modules.

Windows · macOS · Linux no toolchain 9.8 ms cold start
Walkthrough

From download to a live API

Six steps. No surprises. Follow them in order or jump to any step.

1

Download the binary for your OS

No install, no Go toolchain. Grab the prebuilt executable from the releases page, put it in your project folder, and run it. The binary runs whatever sits in its folder.

Get the starter two ways — clone with git, or download the ZIP. It already ships app.kitwork.js, config and views.

Clone with git
git clone https://github.com/kitwork/starter.git
Download ZIP no git required

On macOS & Linux, make it runnable once with chmod +x kitwork. Then the runtime serves on http://localhost:8085.

2

Get the starter app

The starter is ready to run — no build step. Drop the binary you downloaded next to the config, your app.kitwork.js and the views.

# what's inside — drop the binary in here
starter/
├─ kitwork # the binary you downloaded
├─ config.kitwork.yml # settings
├─ app.kitwork.js # your routes & logic
└─ views/ # HTML templates
3

Configure the runtime

Set the port and, if you need data, point Kitwork at your PostgreSQL. hot_reload picks up file changes as you save.

config.kitwork.yml
port: 8085
root: "."
hot_reload: true
database:
  type: "postgres"
  host: "localhost"
  port: 5432
  name: "postgres"
4

Write your first route

Routes resolve before any handler runs. Return JSON, text or a rendered view — the runtime does the rest.

app.kitwork.js
// your whole app lives here
import { router, database } from "kitwork";

const db = database.connection();

router.get("/api/hello").handle((req, res) => {
  return res.json({ status: "active", engine: "Kitwork" });
});

router.get("/api/users").handle((req, res) => {
  const users = db.table("user").list(10);
  return res.json({ success: true, users });
});
5

Cache & serve static files

Caching and file delivery are built into the router — chain them onto any route. No extra service, no middleware config.

// cache a response for 5 seconds
router.get("/api/gold").cache("5s").handle((req, res) => {
  return res.json({ price: 2300 });
});

// serve a file straight from disk
router.get("/favicon.ico").file("/assets/favicon.ico");
6

Talk to the database

A zero-allocation layer over PostgreSQL with a small built-in ORM. No driver setup, no connection boilerplate — just query.

// query with the built-in ORM
const user  = db.table("user").find("username", "grace");
const users = db.table("user").list(5);
const count = db.table("user").count();

// insert or update
db.table("user").insert({ username: "ada", role: "admin" });
db.table("user").where("id", id).update({ role: "editor" });
Kitwork

KITWORK.

Sovereign cloud infrastructure as one resilient runtime. Compute, data, edge, and clustering — one runtime, one philosophy.

Cloud infrastructure updates from Kitwork.

Platform

Solutions

Developers

Company

© 2026 Kitwork. AGPL-3.0 license.