kisenon

Projects

The unit of isolation in Kisenon — naming, lifecycle, and cascade semantics.

A project is the top-level container in Kisenon. Every branch, endpoint, role, and database lives under exactly one project.

What a project owns

  • A main branch, auto-created at project creation time.
  • Copy-on-write storage scoped to this project. No other project can read its pages.
  • The Postgres major version pinned at creation.
  • A region. Today every project lives in the single home-cluster region (US, bare metal); multi-region is roadmap.

Project isolation

Storage, WAL, and caches are partitioned per project; there is no shared write path between projects. Endpoints from different projects cannot reach each other's storage even if their compute pods are scheduled on the same node — the per-project network policy and the storage authentication token gate every page request.

This is the boundary you can rely on for compliance and noisy-neighbour isolation. Branch boundaries within a project are softer: branches share storage and inherit the parent's pages until they diverge.

Naming

Project names are user-visible labels. They:

  • Must be 1–63 characters.
  • Match ^[a-zA-Z][a-zA-Z0-9_-]*$. Letters, digits, _, -; must start with a letter.
  • Are not required to be globally unique; unique within your organization is enough.

The internal project id (prj_<24 hex>) is what every other resource references. The label is for humans.

Postgres version

You pick the major version at creation time. The default is 17. Once set, it cannot be changed in place — major-version upgrade is an out-of-band migration that we will document when it lands. For alpha, treat the version as immutable.

Create

From the web console, click New project, enter a name, pick the Postgres major version, and choose a region (the dropdown defaults to Auto (nearest)). Click Create. From the CLI:

keon projects create --name my-app --pg-version 17

The control plane provisions storage, creates the main branch, and returns the project id. End-to-end this typically takes under two seconds.

Delete

Deleting a project cascades through every resource it owns:

  1. All endpoints on every branch are stopped and removed.
  2. All branches are torn down.
  3. The project's storage is unloaded and its data is queued for asynchronous compaction and eventual removal from object storage.

The cascade is irreversible. There is no undelete, and the storage artefacts are not recoverable from the console after the cascade starts. Take a logical dump (pg_dump) before deleting if the data matters.

keon projects delete <project-id>

The CLI prompts for confirmation; pass --yes to skip when scripting.