# @backstage/plugin-catalog-backend

> The Backstage backend plugin that provides the Backstage catalog

Latest version **4.0.0** (published 2026-09-15) · Apache-2.0 license · 0 weekly downloads

## Install

```sh
npm install @backstage/plugin-catalog-backend
pnpm add @backstage/plugin-catalog-backend
yarn add @backstage/plugin-catalog-backend
bun add @backstage/plugin-catalog-backend
```

## Health

**Score 75/100 (B)** — status: active.

Positive: has types; esm support; no vulnerabilities; recently updated; high maintenance score; high quality score; popular repo.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 4.0.0 |
| Published | 2026-09-15 |
| First published | 2020-06-17 |
| Weekly downloads | 0 |
| License | Apache-2.0 |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 33 |
| Unpacked size | 1.8 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 34409 |
| Maintainers | patriko, freben, marcuseide |
| Keywords | backstage |

## Links

- npm: https://www.npmjs.com/package/@backstage/plugin-catalog-backend
- Repository: https://github.com/backstage/backstage
- Homepage: https://backstage.io
- npm.io page: https://npm.io/package/@backstage/plugin-catalog-backend

## Dependencies (33)

- [yn](https://npm.io/package/yn.md) ^4.0.0
- [ajv](https://npm.io/package/ajv.md) ^8.10.0
- [zod](https://npm.io/package/zod.md) ^3.25.76 || ^4.0.0
- [glob](https://npm.io/package/glob.md) ^13.0.0
- [knex](https://npm.io/package/knex.md) ^3.0.0
- [yaml](https://npm.io/package/yaml.md) ^2.0.0
- [luxon](https://npm.io/package/luxon.md) ^3.0.0
- [lodash](https://npm.io/package/lodash.md) ^4.17.21
- [core-js](https://npm.io/package/core-js.md) ^3.6.5
- [express](https://npm.io/package/express.md) ^4.22.0
- [p-limit](https://npm.io/package/p-limit.md) ^3.0.2
- [fs-extra](https://npm.io/package/fs-extra.md) ^11.2.0
- [minimatch](https://npm.io/package/minimatch.md) ^10.2.1
- [ajv-errors](https://npm.io/package/ajv-errors.md) ^3.0.0
- [prom-client](https://npm.io/package/prom-client.md) ^15.0.0
- [git-url-parse](https://npm.io/package/git-url-parse.md) ^15.0.0
- [@backstage/types](https://npm.io/package/@backstage/types.md) ^1.2.2
- [@backstage/config](https://npm.io/package/@backstage/config.md) ^1.3.9
- [@backstage/errors](https://npm.io/package/@backstage/errors.md) ^1.3.1
- [@opentelemetry/api](https://npm.io/package/@opentelemetry/api.md) ^1.9.0
- [zod-validation-error](https://npm.io/package/zod-validation-error.md) ^5.0.0
- [@backstage/integration](https://npm.io/package/@backstage/integration.md) ^2.1.2
- [@backstage/catalog-model](https://npm.io/package/@backstage/catalog-model.md) ^1.10.1
- [@backstage/catalog-client](https://npm.io/package/@backstage/catalog-client.md) ^1.16.2
- [fast-json-stable-stringify](https://npm.io/package/fast-json-stable-stringify.md) ^2.1.0
- [@backstage/filter-predicates](https://npm.io/package/@backstage/filter-predicates.md) ^0.1.5
- [@backstage/backend-plugin-api](https://npm.io/package/@backstage/backend-plugin-api.md) ^1.10.1
- [@backstage/plugin-events-node](https://npm.io/package/@backstage/plugin-events-node.md) ^0.4.26
- [@backstage/plugin-catalog-node](https://npm.io/package/@backstage/plugin-catalog-node.md) ^2.2.5
- [@backstage/backend-openapi-utils](https://npm.io/package/@backstage/backend-openapi-utils.md) ^0.7.2
- [@backstage/plugin-catalog-common](https://npm.io/package/@backstage/plugin-catalog-common.md) ^1.2.0
- [@backstage/plugin-permission-node](https://npm.io/package/@backstage/plugin-permission-node.md) ^0.11.4
- [@backstage/plugin-permission-common](https://npm.io/package/@backstage/plugin-permission-common.md) ^0.9.11

## Recent versions

- 4.0.0 (latest) — 2026-09-15
- 0.0.0-nightly-20260918023200 (nightly) — 2026-09-18
- 4.0.0-next.1 (next) — 2026-09-08
- 0.0.0-nightly-20260917023108 — 2026-09-17
- 0.0.0-nightly-20260916022921 — 2026-09-16
- 0.0.0-nightly-20260909022715 — 2026-09-09
- 0.0.0-nightly-20260904022803 — 2026-09-04
- 0.0.0-nightly-20260902024315 — 2026-09-02
- 3.9.2-next.0 — 2026-09-01
- 3.5.1 — 2026-08-29
- 3.6.2 — 2026-08-29
- 3.7.2 — 2026-08-29
- 0.0.0-nightly-20260829022506 — 2026-08-29
- 3.8.2 — 2026-08-28
- 3.9.1 — 2026-08-28
- … 2082 more at https://npm.io/package/@backstage/plugin-catalog-backend/versions

## README

# Catalog Backend

This is the backend for the default Backstage [software catalog](http://backstage.io/docs/features/software-catalog/).
This provides an API for consumers such as the frontend [catalog plugin](https://github.com/backstage/backstage/tree/master/plugins/catalog).

It comes with a builtin database-backed implementation of the catalog that can
store and serve your catalog for you.

It can also act as a bridge to your existing catalog solutions, either ingesting
data to store in the database, or by effectively proxying calls to an
external catalog service.

## Installation

This `@backstage/plugin-catalog-backend` package comes installed by default in
any Backstage application created with `npx @backstage/create-app`, so
installation is not usually required.

To check if you already have the package, look under
`packages/backend/package.json`, in the `dependencies` block, for
`@backstage/plugin-catalog-backend`. The instructions below walk through
restoring the plugin, if you previously removed it.

### Install the package

```bash
# From your Backstage root directory
yarn --cwd packages/backend add @backstage/plugin-catalog-backend
```

Then add the plugin to your backend, typically in `packages/backend/src/index.ts`:

```ts
const backend = createBackend();
// ...
backend.add(import('@backstage/plugin-catalog-backend'));
```

#### Old backend system

In the old backend system there's a bit more wiring required. You'll need to
create a file called `packages/backend/src/plugins/catalog.ts` with contents
matching [catalog.ts in the create-app template](https://github.com/backstage/backstage/blob/ad9314d3a7e0405719ba93badf96e97adde8ef83/packages/create-app/templates/default-app/packages/backend/src/plugins/catalog.ts).

With the `catalog.ts` router setup in place, add the router to
`packages/backend/src/index.ts`:

```diff
+import catalog from './plugins/catalog';

async function main() {
  ...
  const createEnv = makeCreateEnv(config);

+  const catalogEnv = useHotMemoize(module, () => createEnv('catalog'));
  const scaffolderEnv = useHotMemoize(module, () => createEnv('scaffolder'));

  const apiRouter = Router();
+  apiRouter.use('/catalog', await catalog(catalogEnv));
  ...
  apiRouter.use(notFoundHandler());

```

### Adding catalog entities

At this point the `catalog-backend` is installed in your backend package, but
you will not have any catalog entities loaded. See [Catalog Configuration](https://backstage.io/docs/features/software-catalog/configuration)
for how to add locations, or copy the catalog locations from the [create-app template](https://github.com/backstage/backstage/blob/master/packages/create-app/templates/default-app/app-config.yaml.hbs)
to get up and running quickly.

## Migrating removed processors

`CodeOwnersProcessor` and `AnnotateScmSlugEntityProcessor` are no longer exported
by this package. Use the corresponding community modules to retain their behavior:

- `CodeOwnersProcessor`: [`@backstage-community/plugin-catalog-backend-module-codeowners`](https://github.com/backstage/community-plugins/tree/main/workspaces/catalog/plugins/catalog-backend-module-codeowners)
- `AnnotateScmSlugEntityProcessor`: [`@backstage-community/plugin-catalog-backend-module-annotate-scm-slug`](https://github.com/backstage/community-plugins/tree/main/workspaces/catalog/plugins/catalog-backend-module-annotate-scm-slug)

Install the module you need in your backend package and register it with
`backend.add(import('<module-package>'))`. Remove your custom registration of the
old processor to avoid registering it twice. If you need to configure a processor
explicitly, follow the replacement module's documentation.

## Development

This backend plugin can be started in a standalone mode from directly in this
package with `yarn start`. However, it will have limited functionality and that
process is most convenient when developing the catalog backend plugin itself.

To evaluate the catalog and have a greater amount of functionality available,
run the entire Backstage example application from the root folder:

```bash
# in one terminal window, run this from from the very root of the Backstage project
cd packages/backend
yarn start
```

This will launch both frontend and backend in the same window, populated with
some example entities.

## Links

- [catalog](https://github.com/backstage/backstage/tree/master/plugins/catalog)
  is the frontend interface for this plugin.

---
_Source: https://npm.io/package/@backstage/plugin-catalog-backend · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
