The libraries every Kern service and module is built on.
A Kern module declares what it is: its data, its API, its permissions and its screens. The runtime in here does the rest. It creates the module's database schema, mounts its routes, registers its permissions, runs its jobs and delivers its events.
The same libraries are published for anyone else. A module you write uses exactly what ours use.
| Package | What it gives you | Version |
|---|---|---|
@kernhq/contracts |
The shapes every service and module agree on: data, API, events, permission keys | |
@kernhq/kernel |
The module runtime: database, migrations, routes, permissions, jobs, events, storage | |
@kernhq/sdk |
A typed client for Kern's API, and the realtime connection | |
@kernhq/ui |
The design system, and how a module declares its screens | |
@kernhq/testing |
Scratch databases and containers for integration tests | |
@kernhq/tsconfig |
The TypeScript settings every repository extends |
Install any of them from npm. They are public and need no credentials.
pnpm add @kernhq/kernel @kernhq/contractsGoal: change a library and see the change in the services that use it.
You need:
- Node 24 and pnpm 10.
pnpm install
pnpm buildExpected result: every package has a dist/ directory.
pnpm typecheck
pnpm testExpected result: both report success.
pnpm changesetChoose the packages you changed, choose how big the change is, and write what changed for somebody using the package.
Expected result: a new file in .changeset/.
When your change reaches main, the release runs on its own. It bumps the versions, publishes the
packages to npm, and pushes the version commit back.
- Contracts land first. A change here is published before the services that depend on it are updated. Skip that order and every other repository's build turns red.
- Packages go to npm, not GitHub Packages. GitHub Packages asks for a token even for public packages, which would mean nobody could install Kern without credentials.
@kernhq/tsconfigexists because every repository is built on its own in CI, where a config file at the root of a local workspace does not exist.
Read CONTRIBUTING.md and CLAUDE.md.
Apache-2.0 — all of it. This repository is the Kern framework, and it is permissive on purpose: a module you write is yours, and you may keep it closed and sell it.
The Kern product — shell, core, chat, mail, collab, docs and the first-party modules —
is AGPL-3.0-only. See LICENSING.md.
Kern — one place for your team's work: issues, conversations, documents and people. Open source, self-hosted. kernaio.com · github.com/KernAIO