# Namespace

`namespace` is the Postgres schema this catalog owns. Omitted means `public`.

`schema()` still compiles `public`. `okm` places the catalog into `namespace` before it plans. Apply creates that schema when it is not `public`, then sets the session search path so `okm_meta`, `okm_history`, and `okm_backfill` land there. `connect()` reads `okm_meta` in that namespace. `public` keeps the unqualified query.

```ts title="okmodel.config.ts"
import { defineConfig } from "okmodel/migrate";

export default defineConfig({
  schema: "./schema.ts",
  database: process.env.DATABASE_URL!,
  namespace: "identity", // [!code focus]
});
```

Two catalogs on one database use two configs and two values, for example `identity` and `billing`. The page for that layout is [Several catalogs](/docs/define/schema/catalogs).
