Skip to content

App config

kumiko.config.ts is the one place an app names its features, client entries and ports. kumiko/schema.ts, kumiko agent lint, kumiko check and kumiko ports all read it.

  • defineAppConfig from @cosmicdrift/kumiko-framework/config validates the config when the file loads: ports in range and unique within the app, client entries relative and inside the app.
  • prodFeatures are mounted only in production (provider features such as S3 or SMTP). allAppFeatures(config) returns features plus prodFeatures; that is the list migrations and agent lint check.
  • ports with dev, e2e and optional infra (postgres, redis, meilisearch, s3). Keep them number literals: kumiko ports reads them statically across all apps of a workspace and reports collisions.
kumiko.config.ts defineAppConfig with features, prodFeatures, client, ports
src/feature.ts two placeholder features
src/__tests__/app-config.test.ts feature list, port list, validation errors

See docs/reference/app-skeleton.md for the files around it.


The feature entry point — embedded straight from the source file, so the code here is exactly what runs. Multi-file samples keep their remaining files next to it on GitHub (link below):

import { defineFeature } from "@cosmicdrift/kumiko-framework/engine";
export const notesFeature = defineFeature("notes", () => {});
// Stands in for a provider feature that only production mounts (S3, SMTP).
export const auditExportFeature = defineFeature("audit-export", () => {});

📄 On GitHub: samples/recipes/app-config/src/feature.ts