# Extensions (/docs/orm/extensions) > For the complete Prisma documentation index, see [llms.txt](https://www.prisma.io/docs/llms.txt). A markdown version of any docs page is available by appending `.md` to its URL. Every package that plugs into Prisma ORM: database packages, column types, indexes, query operations, and middleware, by Prisma and the community. Location: ORM > Extensions An extension is an npm package that adds something Prisma ORM does not do on its own: a column type such as a vector or a geometry, an index type, query operations (new functions you can call in a query, such as pgvector's `cosineDistance`), or middleware, which runs your own code before and after every query. To use PostgreSQL you install `@prisma/orm-postgres`, and to use MongoDB you install `@prisma/orm-mongo`, because support for a database comes from an extension too. Installing the package is not the whole job, because you register an extension in two places. It goes in `prisma.config.ts`, so that the command line tools know about it, and in `db.ts`, the file where you create the client, so that your queries can use what it adds. `@prisma/orm-postgres` is the package you call directly: `ormConfig(...)` in `prisma.config.ts` and `postgres(...)` in `db.ts`. Other extensions are listed in the `extensions` array passed to those two calls. [Using extensions](https://www.prisma.io/docs/orm/extensions/using-extensions) shows both registrations, with the install command, for pgvector. Middleware is the exception, because you register it on the client only, and [How middleware works](https://www.prisma.io/docs/orm/middleware/how-middleware-works) covers that. Your contract is what Prisma ORM 8 calls your schema: [`contract.prisma`](https://www.prisma.io/docs/orm/contract-authoring/the-data-contract) in place of `schema.prisma`. If you have a Prisma ORM 7 project, [Coming from Prisma ORM 7](https://www.prisma.io/docs/orm/coming-from-prisma-orm-7) says what replaced `schema.prisma`, `@prisma/client`, and `$use`. ## Catalog [#catalog] The [extension directory](https://www.prisma.io/extensions) has the install command and the registration snippet for each entry below. MySQL's library, `@prisma/orm-mysql`, is an early preview for migrations, reads and writes, and [Supported databases](https://www.prisma.io/docs/orm/supported-databases) says what it covers and what is planned. An entry marked experimental works today, but its API can change between releases. | Name | What it adds | Package | Databases | By | | ---------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------- | ------------------- | ----------------------------------------------- | | [arktype-json](https://www.prisma.io/extensions/arktype-json) | JSON columns validated by an arktype schema and typed end to end. | `@prisma/orm-extension-arktype-json` | PostgreSQL | Prisma | | [Cache middleware](https://www.prisma.io/extensions/middleware-cache) | Serve repeated reads from an in-memory or pluggable cache, opted in per query. | `@prisma/orm-extension-middleware-cache` | PostgreSQL, MongoDB | Prisma | | [MongoDB](https://www.prisma.io/extensions/mongodb) | MongoDB support for Prisma ORM: config, runtime, contract authoring, BSON values, and migrations in one package. | `@prisma/orm-mongo` | MongoDB | Prisma | | [ParadeDB](https://www.prisma.io/extensions/paradedb) (experimental) | BM25 full-text search ranked by relevance, with fuzzy, phrase, and proximity queries. | `@prisma/orm-extension-paradedb` | PostgreSQL | Prisma | | [pgvector](https://www.prisma.io/extensions/pgvector) | Vector columns and similarity search for embeddings. | `@prisma/orm-extension-pgvector` | PostgreSQL | Prisma | | [PostGIS](https://www.prisma.io/extensions/postgis) | Geometry columns and geospatial queries such as distance and containment. | `@prisma/orm-extension-postgis` | PostgreSQL | Prisma | | [PostgreSQL](https://www.prisma.io/extensions/postgresql) | PostgreSQL support for Prisma ORM: config, runtime, contract authoring, and migrations in one package. | `@prisma/orm-postgres` | PostgreSQL | Prisma | | [SQLite](https://www.prisma.io/extensions/sqlite) (experimental) | SQLite support for Prisma ORM: config, runtime, contract authoring, and migrations in one package. | `@prisma/orm-sqlite` | SQLite | Prisma | | [Supabase](https://www.prisma.io/extensions/supabase) (experimental) | Supabase auth and storage tables plus role-bound clients for row-level security. | `@prisma/orm-extension-supabase` | PostgreSQL | Prisma | | [IndexedDB](https://www.prisma.io/extensions/indexeddb) (experimental) | Prisma 8 for IndexedDB: a browser database from your PSL schema, with typed accessors and explicit migrations. | `@prisma-idb/client-idb` | IndexedDB | [Yash Kolekar](https://whyash5114.com) | | [typed-json](https://www.prisma.io/extensions/typed-json) | Typed JSON and text columns with no validator dependency. | `prisma-orm-extension-typed-json` | PostgreSQL | [Omar Dulaimi](https://github.com/omar-dulaimi) | | [zod-json](https://www.prisma.io/extensions/zod-json) | Typed JSON columns described and enforced by a zod schema. | `prisma-orm-extension-zod-json` | PostgreSQL | [Omar Dulaimi](https://github.com/omar-dulaimi) | Three of these have their own page: [PostGIS](https://www.prisma.io/docs/orm/extensions/postgis), [ParadeDB](https://www.prisma.io/docs/orm/extensions/paradedb), and [arktype-json](https://www.prisma.io/docs/orm/extensions/arktype-json). [Using extensions](https://www.prisma.io/docs/orm/extensions/using-extensions) walks through pgvector. In the Supabase row, role-bound clients are client instances pinned to a particular PostgreSQL role, so the database applies that role's row-level security policies to whatever you query through them. ## Publish your own [#publish-your-own] An extension you write yourself is an npm package with one entry point for the command line tools and one for your application. Name your two entry points `control` and `runtime`, as pgvector does and as the [call for extension authors](https://www.prisma.io/blog/prisma-next-call-for-extension-authors) describes. Middleware ships a single entry point instead, because it is only ever registered on the client. Name the package `prisma-orm-`, or `@your-scope/prisma-orm-` if you publish under your own npm scope. List the keyword `prisma-orm-extension` in its `package.json`, so that people and tools searching npm can find every community Prisma ORM 8 extension: ```json title="package.json" { "name": "prisma-orm-sentry", "keywords": ["prisma-orm-extension"] } ``` To write middleware, follow [Authoring custom middleware](https://www.prisma.io/docs/orm/middleware/authoring-custom-middleware). If you are adding a whole database, `@prisma/orm-postgres` is the one to copy for a SQL database and `@prisma/orm-mongo` for a document database. Once your package is on npm, [submit it to the directory](https://www.prisma.io/extensions/submit), and a maintainer reviews your entry before it appears in the catalog. ## See also [#see-also] * [Using extensions](https://www.prisma.io/docs/orm/extensions/using-extensions): install an extension and run your first query with it * [Supported databases](https://www.prisma.io/docs/orm/supported-databases): which databases Prisma ORM ships and what is planned * [Coming from Prisma ORM 7](https://www.prisma.io/docs/orm/coming-from-prisma-orm-7): what changes in a project that already uses `@prisma/client` and `schema.prisma` ## Related pages - [`Coming from Prisma ORM 7`](https://www.prisma.io/docs/orm/coming-from-prisma-orm-7): What each Prisma ORM 7 schema attribute, command, and query is called in Prisma ORM 8, and what is not available. - [`Core concepts`](https://www.prisma.io/docs/orm/core-concepts): How Prisma ORM 8 fits together, in the order you meet each piece: the contract, the files contract emit writes, the database signature, queries, and migrations. - [`Overview`](https://www.prisma.io/docs/orm/data-modeling): Describe the data your application needs with models, primary keys, scalar fields, and relations. - [`Prisma 7`](https://www.prisma.io/docs/orm/v7): Prisma ORM is a next-generation Node.js and TypeScript ORM that provides type-safe database access, migrations, and a visual data editor. - [`Prisma ORM`](https://www.prisma.io/docs/orm/v6): Learn about Prisma ORM