# Keel > Host-owned routing and render-time frontend packs. The server owns URLs, page ids, and payload types. Packs implement ids — never paths. Keel is a protocol plus Kotlin/JS libraries. Format `keel/1`. First host adapter is Ktor; seven pack adapters ship — Svelte 5, React 18/19, Vue 3, Solid 1.9, Preact 10, Lit 3, and Angular 19 (Svelte was the first). Maven: `dev.kolektiv.keel:core`, `dev.kolektiv.keel:ktor`. npm: `@kolektiv/keel`, `@kolektiv/keel-svelte`, `@kolektiv/keel-react`, `@kolektiv/keel-vue`, `@kolektiv/keel-solid`, `@kolektiv/keel-preact`, `@kolektiv/keel-lit`, `@kolektiv/keel-angular`, `@kolektiv/keel-pack`. Live contract: `GET /__keel/schema` on any Keel host. Scaffold a pack with `keel-scaffold `. Docs: https://keel.mey.cat/ (Cloudflare Pages; local `pnpm dev` is http://127.0.0.1:8080/) ## Docs - [What is Keel](https://keel.mey.cat/docs/getting-started/): host-owned routing, packs implement ids - [Server Installation](https://keel.mey.cat/docs/getting-started/server/): Maven — one repo (`maven-releases`, `maven-snapshots`, or `keel-maven` for unique pre-releases), `dev.kolektiv.keel:core` - [Client Setup](https://keel.mey.cat/docs/getting-started/client/): npm — `keel-npm` registry, `@kolektiv/keel*`, install and bootstrap per adapter - [Host (Ktor)](https://keel.mey.cat/docs/getting-started/host/): stand up a Keel host - [Pack](https://keel.mey.cat/docs/getting-started/pack/): keel-scaffold (`--framework`) or keelPack in Vite - [First page](https://keel.mey.cat/docs/getting-started/first-page/): register a page id and implement it in a pack - [Routing](https://keel.mey.cat/docs/core-concepts/routing/): page ids live on the server; packs implement ids, never paths - [Page contracts](https://keel.mey.cat/docs/core-concepts/contracts/): page ids + payload types are the contract - [Seed and headers](https://keel.mey.cat/docs/core-concepts/seed/): the read model bootstrap and visits share - [Document head and SEO](https://keel.mey.cat/docs/core-concepts/head/): `+head.svelte` / `+head.html`, placeholders, sanitizing, CSP nonces - [Packs](https://keel.mey.cat/docs/core-concepts/packs/): `.feb` manifest, page-id modules, asset prefixes - [Routing primitives](https://keel.mey.cat/docs/core-concepts/primitives/): router, Link, Form, useForm, Head - [Server actions](https://keel.mey.cat/docs/core-concepts/actions/): typed writes; the seed stays the read model - [Choosing a pack](https://keel.mey.cat/docs/advanced/choosing-a-pack/): the call site passes the pack into render - [Partial reloads](https://keel.mey.cat/docs/advanced/partials/): `only` / `except` on visits; shallow merge - [Forms and 422s](https://keel.mey.cat/docs/advanced/forms/): progressive enhancement over router.visit - [Mutate and rehydrate](https://keel.mey.cat/docs/advanced/query/): action then reload; state reads subscribe, method reads do not - [Pack hot reload](https://keel.mey.cat/docs/advanced/pack-hot-reload/): watcher, `seed.build` / `X-Keel-Build`, client reload - [Navigation guards](https://keel.mey.cat/docs/advanced/navigation-guards/): `beforeEach`, async guards, popstate, `force` - [Wire protocol](https://keel.mey.cat/docs/implementing/protocol/): seed JSON, headers, status codes, path grammar, CSRF, `/__keel/schema` - [Host adapter](https://keel.mey.cat/docs/implementing/host-adapter/): what a backend must implement, `KeelConfig` knobs - [Pack adapter](https://keel.mey.cat/docs/implementing/pack-adapter/): PageModule, .feb, RouterAdapter, manifest head/layout fields - [Typegen](https://keel.mey.cat/docs/implementing/typegen/): `.ts`, `.d.ts`, JSON contract - [Framework adapters](https://keel.mey.cat/docs/implementing/framework-adapters/): one pack contract across Svelte, React, Vue, Solid, Preact, Lit, and Angular — install, bootstrap, page state, forms, actions, components, guards, mount, and DX caveats - [AGENTS.md](https://github.com/KolektivComputer/keel/blob/main/AGENTS.md): how to work in this repository ## Optional - [Harbor sample](https://github.com/KolektivComputer/keel/tree/main/samples/harbor): `./gradlew :samples:harbor:run` → http://127.0.0.1:8090 ## Skills - [keel-host](https://raw.githubusercontent.com/KolektivComputer/keel/main/skills/keel-host/SKILL.md): implement a Keel host — pages, actions, call-site packs, document head, CSP, hot reload - [keel-pack](https://raw.githubusercontent.com/KolektivComputer/keel/main/skills/keel-pack/SKILL.md): author a frontend pack — Svelte, React, Vue, Solid, Preact, Lit, or Angular pages, `+head.html`/`+head.svelte`, navigation guards, `.feb` builds - [keel-scaffold](https://raw.githubusercontent.com/KolektivComputer/keel/main/skills/keel-scaffold/SKILL.md): scaffold a blank pack for any adapter (`--framework`) from `/__keel/schema` Skills cover the full framework adapter matrix: Svelte, React, Vue, Solid, Preact, Lit, and Angular. Install: `npx skills add KolektivComputer/keel`. Styling packs with Tailwind 4 + daisyUI 5: install the companion `npx skills add saadeghi/daisyui -s daisyui -a kilo -y`. Or copy `skills/*` into `.claude/skills/`, `.grok/skills/`, or `.agents/skills/`. See `skills/README.md`.