Open a terminal. Write one page. Publish it. Learn what happened.
Not a website builder that hides the work. Every step leaves you with something ordinary you own: a Markdown file, a Git repository, and a static website. Delete kosong tomorrow and all three still work.
Everything local works with no account and no networkPiping a script into your shell deserves suspicion. This one downloads a fixed release and refuses to install anything whose checksum does not match — read it first, or install manually from a release and verify it yourself:
Nothing above touches the network or asks who you are.
| Command | What it does | What it teaches |
|---|---|---|
kosong start | Set things up, one step at a time | — |
kosong new | Create a page | A file is a durable object you can move |
kosong edit | Open your editor | The terminal opens editors; it is not one |
kosong preview | Serve it locally | A local server is a temporary website |
kosong status | Report current state | Software can describe itself |
kosong doctor | Check your setup | Prerequisites can be checked, not guessed |
kosong login | Sign in by email code | — |
kosong sync | Keep a private remote copy | — |
kosong delete-account | Delete your account and its stored page | Deleting an account is not deleting your files |
kosong site init | Make a publishable folder | Git tracks a folder's history |
kosong site publish | Build and deploy | Deployment moves files. It is not magic |
kosong site rollback | See past versions | Published systems change with intent |
| Thing | Where | Works without kosong |
|---|---|---|
| Your page | kosong.md | Any Markdown editor |
| Your site | <name>/ | An ordinary Astro project |
| Its history | <name>/.git | Ordinary git |
| The built files | <name>/dist | Plain HTML |
Every external tool is invoked as an executable plus separate arguments, so a ; in a name is a character, not a command. There is nosh -c anywhere in the codebase.
Wrangler has no command for it, and doing it through Cloudflare's API would mean holding your Cloudflare credentials — which kosong is built never to do. kosong site rollback shows your deployment history and tells you exactly where to click instead.
The supplemental course, module by module. This is the curriculum — what each module teaches, which commands it is built on, and what the le…
The boundarykosong publishes to services you own accounts with. This page says exactly what it asks them to do, what it refuses to do, and why the refus…
When it breaksFind what you saw on your screen. Every entry says what happened, what to do, and — because knowing why is the point — what the failure was …
kosong uses HTTPS, encryption at rest, private storage, verified-email sign-in, hashed single-use codes, short-lived access tokens, and rotating refresh tokens.
It is not end-to-end encrypted. The service operator could read a synced document. If that matters to you, do not sync — everything local works without it. SeeSECURITY.md for the full boundary.