---
title: Docker providers
description: Run local job providers with persisted state.
pagination: false
sidebar:
  icon: container
---

Local job providers can use Docker, but the generator currently accepts only certified creation combinations. The explicit `--jobs` flags below are rejected before staging or installation:

```sh
relkit create my-app --jobs inngest-docker
relkit create my-app --jobs effect-mq-docker
relkit create my-app --jobs trigger-docker
```

For an existing project, install the provider packages and bind the selected provider in
`relkit.config.ts`; do not interpret performance evidence as native-provider certification.
The local CLI also needs `@relkit/local` in the application. Follow the provider-specific setup:
[Inngest](/docs/modules/jobs/providers/inngest), [Effect MQ](/docs/modules/jobs/providers/effect-mq), or
[Trigger.dev](/docs/modules/jobs/providers/trigger).

```sh
relkit local up --detach
relkit local status
relkit local stop
relkit local reset --dry-run
```

`--detach` lets you start the backend in the same terminal afterward. Without it, `local up`
stays attached until interrupted. `local stop` stops services without deleting state.
`local reset` is destructive to local job state; use the dry run first. Run `relkit jobs capabilities`
after the backend starts to inspect the selected provider's limits.

{/* Generated by apps/docs/scripts/generate.ts. Do not edit. */}

**Reference and source**

- [`@relkit/app` API](/docs/api/app)
- [`@relkit/jobs` API](/docs/api/jobs)
- [`@relkit/docker` API](/docs/api/integrations/docker)
- [`@relkit/inngest` API](/docs/api/integrations/inngest)
- [`@relkit/trigger` API](/docs/api/integrations/trigger)
- [`@relkit/effect-mq` API](/docs/api/integrations/effect-mq)

- [`templates/default/v1/tasks/relkit.config.ts`](https://github.com/rel-kit/relkit/blob/main/templates/default/v1/tasks/relkit.config.ts)
