# Taskora > Taskora — TypeScript-first distributed task queue for Node.js. Redis-backed, batteries-included. TypeScript-first, batteries-included distributed task queue for Node.js. ## Table of Contents ### API Reference - [index](https://kravetsone.github.io/taskora/taskora/api/taskora.md) - [memory](https://kravetsone.github.io/taskora/taskora/api/memory.md) - [redis](https://kravetsone.github.io/taskora/taskora/api/redis.md) - [test](https://kravetsone.github.io/taskora/taskora/api/test.md) #### index ##### Namespaces - [Taskora](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora.md) ###### Taskora ####### Interfaces - [Interface: AckAndDequeueResult](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/AckAndDequeueResult.md) - [Interface: ActiveEvent](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/ActiveEvent.md) - [Interface: Adapter](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/Adapter.md) - [Interface: AppEventMap](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/AppEventMap.md) - [Interface: AwaitJobResult](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/AwaitJobResult.md) - [Interface: CancelledEvent](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/CancelledEvent.md) - [Interface: CollectBufferInfo](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/CollectBufferInfo.md) - [Interface: CollectConfig\](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/CollectConfig.md) - [Interface: CompletedEvent\](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/CompletedEvent.md) - [Interface: Context](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/Context.md) - [Interface: ContextLog](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/ContextLog.md) - [Interface: DebounceConfig](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/DebounceConfig.md) - [Interface: DeduplicateConfig](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/DeduplicateConfig.md) - [Interface: DequeueOptions](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/DequeueOptions.md) - [Interface: DequeueResult](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/DequeueResult.md) - [Interface: DispatchOptions](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/DispatchOptions.md) - [Interface: FailedEvent](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/FailedEvent.md) - [Interface: InspectorListOptions](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/InspectorListOptions.md) - [Interface: JobInfo\](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/JobInfo.md) - [Interface: LogEntry](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/LogEntry.md) - [Interface: MiddlewareContext](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/MiddlewareContext.md) - [Interface: MigrationStatus](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/MigrationStatus.md) - [Interface: ProgressEvent](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/ProgressEvent.md) - [Interface: QueueStats](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/QueueStats.md) - [Interface: RawJob](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/RawJob.md) - [Interface: RawJobDetails](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/RawJobDetails.md) - [Interface: RetentionConfig](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/RetentionConfig.md) - [Interface: RetentionOptions](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/RetentionOptions.md) - [Interface: RetryConfig](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/RetryConfig.md) - [Interface: RetryingEvent](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/RetryingEvent.md) - [Interface: ScheduleConfig](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/ScheduleConfig.md) - [Interface: ScheduleInfo](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/ScheduleInfo.md) - [Interface: SchedulerConfig](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/SchedulerConfig.md) - [Interface: ScheduleRecord](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/ScheduleRecord.md) - [Interface: SchemaMeta](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/SchemaMeta.md) - [Interface: Serializer](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/Serializer.md) - [Interface: StallConfig](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/StallConfig.md) - [Interface: StalledEvent](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/StalledEvent.md) - [Interface: StreamEvent](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/StreamEvent.md) - [Interface: TaskEventMap\](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/TaskEventMap.md) - [Interface: ThrottleConfig](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/ThrottleConfig.md) - [Interface: TtlConfig](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/TtlConfig.md) - [Interface: WorkflowAdvanceResult](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/WorkflowAdvanceResult.md) - [Interface: WorkflowCancelResult](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/WorkflowCancelResult.md) - [Interface: WorkflowDetail](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/WorkflowDetail.md) - [Interface: WorkflowFailResult](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/interfaces/WorkflowFailResult.md) ####### Type Aliases - [Type Alias: BackoffStrategy](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/type-aliases/BackoffStrategy.md) - [Type Alias: Duration](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/type-aliases/Duration.md) - [Type Alias: InferInput\](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/type-aliases/InferInput.md) - [Type Alias: InferOutput\](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/type-aliases/InferOutput.md) - [~~Type Alias: JobOptions~~](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/type-aliases/JobOptions.md) - [Type Alias: JobState](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/type-aliases/JobState.md) - [Type Alias: Middleware](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/type-aliases/Middleware.md) - [Type Alias: MissedPolicy](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/type-aliases/MissedPolicy.md) - [Type Alias: TaskContract\](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/type-aliases/TaskContract.md) - [Type Alias: WorkflowState](https://kravetsone.github.io/taskora/taskora/api/taskora/namespaces/Taskora/type-aliases/WorkflowState.md) ##### Classes - [Class: App](https://kravetsone.github.io/taskora/taskora/api/taskora/classes/App.md) - [Class: BoundTask\](https://kravetsone.github.io/taskora/taskora/api/taskora/classes/BoundTask.md) - [Class: CancelledError](https://kravetsone.github.io/taskora/taskora/api/taskora/classes/CancelledError.md) - [Class: ChainSignature\](https://kravetsone.github.io/taskora/taskora/api/taskora/classes/ChainSignature.md) - [Class: ChordSignature\](https://kravetsone.github.io/taskora/taskora/api/taskora/classes/ChordSignature.md) - [Class: DeadLetterManager](https://kravetsone.github.io/taskora/taskora/api/taskora/classes/DeadLetterManager.md) - [Class: DuplicateJobError](https://kravetsone.github.io/taskora/taskora/api/taskora/classes/DuplicateJobError.md) - [Class: ExpiredError](https://kravetsone.github.io/taskora/taskora/api/taskora/classes/ExpiredError.md) - [Class: GroupSignature\](https://kravetsone.github.io/taskora/taskora/api/taskora/classes/GroupSignature.md) - [Class: Inspector](https://kravetsone.github.io/taskora/taskora/api/taskora/classes/Inspector.md) - [Class: JobFailedError](https://kravetsone.github.io/taskora/taskora/api/taskora/classes/JobFailedError.md) - [Class: ResultHandle\](https://kravetsone.github.io/taskora/taskora/api/taskora/classes/ResultHandle.md) - [Class: RetryError](https://kravetsone.github.io/taskora/taskora/api/taskora/classes/RetryError.md) - [Class: SchemaVersionMismatchError](https://kravetsone.github.io/taskora/taskora/api/taskora/classes/SchemaVersionMismatchError.md) - [Class: Signature\](https://kravetsone.github.io/taskora/taskora/api/taskora/classes/Signature.md) - [Class: StalledError](https://kravetsone.github.io/taskora/taskora/api/taskora/classes/StalledError.md) - [Class: Task\](https://kravetsone.github.io/taskora/taskora/api/taskora/classes/Task.md) - [Class: TaskoraError](https://kravetsone.github.io/taskora/taskora/api/taskora/classes/TaskoraError.md) - [Class: ThrottledError](https://kravetsone.github.io/taskora/taskora/api/taskora/classes/ThrottledError.md) - [Class: TimeoutError](https://kravetsone.github.io/taskora/taskora/api/taskora/classes/TimeoutError.md) - [Class: ValidationError](https://kravetsone.github.io/taskora/taskora/api/taskora/classes/ValidationError.md) - [Class: WorkflowHandle\](https://kravetsone.github.io/taskora/taskora/api/taskora/classes/WorkflowHandle.md) ##### Interfaces - [Interface: DefineTaskConfig\](https://kravetsone.github.io/taskora/taskora/api/taskora/interfaces/DefineTaskConfig.md) - [Interface: SchemaMeta](https://kravetsone.github.io/taskora/taskora/api/taskora/interfaces/SchemaMeta.md) - [Interface: StaticContractConfig](https://kravetsone.github.io/taskora/taskora/api/taskora/interfaces/StaticContractConfig.md) - [Interface: TaskContract\](https://kravetsone.github.io/taskora/taskora/api/taskora/interfaces/TaskContract.md) - [Interface: TaskoraOptions](https://kravetsone.github.io/taskora/taskora/api/taskora/interfaces/TaskoraOptions.md) - [Interface: WorkflowDispatchOptions](https://kravetsone.github.io/taskora/taskora/api/taskora/interfaces/WorkflowDispatchOptions.md) - [Interface: WorkflowGraph](https://kravetsone.github.io/taskora/taskora/api/taskora/interfaces/WorkflowGraph.md) - [Interface: WorkflowNode](https://kravetsone.github.io/taskora/taskora/api/taskora/interfaces/WorkflowNode.md) ##### Type Aliases - [Type Alias: CompatResult](https://kravetsone.github.io/taskora/taskora/api/taskora/type-aliases/CompatResult.md) - [Type Alias: Duration](https://kravetsone.github.io/taskora/taskora/api/taskora/type-aliases/Duration.md) - [Type Alias: InferInput\](https://kravetsone.github.io/taskora/taskora/api/taskora/type-aliases/InferInput.md) - [Type Alias: InferOutput\](https://kravetsone.github.io/taskora/taskora/api/taskora/type-aliases/InferOutput.md) #### memory ##### Classes - [Class: MemoryBackend](https://kravetsone.github.io/taskora/taskora/api/memory/classes/MemoryBackend.md) #### test ##### Classes - [Class: TestRunner](https://kravetsone.github.io/taskora/taskora/api/test/classes/TestRunner.md) ##### Interfaces - [Interface: ExecutionResult\](https://kravetsone.github.io/taskora/taskora/api/test/interfaces/ExecutionResult.md) - [Interface: TestRunnerOptions](https://kravetsone.github.io/taskora/taskora/api/test/interfaces/TestRunnerOptions.md) ### Introduction - [Why Taskora](https://kravetsone.github.io/taskora/taskora/guide.md) - [Getting Started](https://kravetsone.github.io/taskora/taskora/guide/getting-started.md) - [Core Concepts](https://kravetsone.github.io/taskora/taskora/guide/core-concepts.md) ### Essentials - [Tasks](https://kravetsone.github.io/taskora/taskora/guide/tasks.md) - [Contracts](https://kravetsone.github.io/taskora/taskora/guide/contracts.md) - [Splitting Producer & Worker](https://kravetsone.github.io/taskora/taskora/guide/splitting-services.md) - [Dispatching Jobs](https://kravetsone.github.io/taskora/taskora/guide/dispatching.md) - [Job Context](https://kravetsone.github.io/taskora/taskora/guide/job-context.md) - [Adapters](https://kravetsone.github.io/taskora/taskora/guide/adapters.md) - [Serializers](https://kravetsone.github.io/taskora/taskora/guide/serializers.md) - [Error Handling](https://kravetsone.github.io/taskora/taskora/guide/error-handling.md) - [Conventions](https://kravetsone.github.io/taskora/taskora/guide/conventions.md) - [AI Skills](https://kravetsone.github.io/taskora/taskora/guide/ai-skills.md) ### Reliability - [Retry & Backoff](https://kravetsone.github.io/taskora/taskora/features/retry-backoff.md) - [TTL & Expiration](https://kravetsone.github.io/taskora/taskora/features/ttl-expiration.md) - [Cancellation](https://kravetsone.github.io/taskora/taskora/features/cancellation.md) ### Composition - [Workflows](https://kravetsone.github.io/taskora/taskora/features/workflows.md) - [Middleware](https://kravetsone.github.io/taskora/taskora/features/middleware.md) - [Events](https://kravetsone.github.io/taskora/taskora/features/events.md) ### Flow Management - [Scheduling](https://kravetsone.github.io/taskora/taskora/features/scheduling.md) - [Flow Control](https://kravetsone.github.io/taskora/taskora/features/flow-control.md) - [Batch Processing](https://kravetsone.github.io/taskora/taskora/features/batch-processing.md) ### Evolution - [Versioning & Migrations](https://kravetsone.github.io/taskora/taskora/features/versioning.md) ### Operations - [Inspector](https://kravetsone.github.io/taskora/taskora/operations/inspector.md) - [Dead Letter Queue & Retention](https://kravetsone.github.io/taskora/taskora/operations/dead-letter-queue.md) - [Stall Detection](https://kravetsone.github.io/taskora/taskora/operations/stall-detection.md) - [Monitoring](https://kravetsone.github.io/taskora/taskora/operations/monitoring.md) - [Performance](https://kravetsone.github.io/taskora/taskora/operations/performance.md) - [Board — Admin Dashboard](https://kravetsone.github.io/taskora/taskora/operations/board.md): @taskora/board — batteries-included admin UI for inspecting tasks, jobs, workflows, schedules, and DLQ in real time. Hono-based, framework-agnostic, with SSE live updates. Shipped as a separate package so it never bloats the core bundle. - [Upgrading Taskora](https://kravetsone.github.io/taskora/taskora/operations/upgrading.md) ### Testing - [Testing](https://kravetsone.github.io/taskora/taskora/testing.md) - [run() vs execute()](https://kravetsone.github.io/taskora/taskora/testing/run-vs-execute.md) - [Virtual Time](https://kravetsone.github.io/taskora/taskora/testing/virtual-time.md) - [Test Patterns](https://kravetsone.github.io/taskora/taskora/testing/patterns.md) - [Cross-Runtime CI](https://kravetsone.github.io/taskora/taskora/testing/cross-runtime.md) ### NestJS - [NestJS Integration](https://kravetsone.github.io/taskora/taskora/integrations/nestjs.md) - [File Layout](https://kravetsone.github.io/taskora/taskora/integrations/nestjs/file-layout.md) - [Dispatching](https://kravetsone.github.io/taskora/taskora/integrations/nestjs/dispatching.md) - [Consumers](https://kravetsone.github.io/taskora/taskora/integrations/nestjs/consumers.md) - [Middleware](https://kravetsone.github.io/taskora/taskora/integrations/nestjs/middleware.md) - [Observability](https://kravetsone.github.io/taskora/taskora/integrations/nestjs/observability.md) - [Admin Dashboard](https://kravetsone.github.io/taskora/taskora/integrations/nestjs/board.md) - [Testing](https://kravetsone.github.io/taskora/taskora/integrations/nestjs/testing.md) - [Deployment](https://kravetsone.github.io/taskora/taskora/integrations/nestjs/deployment.md) ### Recipes - [Email Queue](https://kravetsone.github.io/taskora/taskora/recipes/email-queue.md) - [Image Processing](https://kravetsone.github.io/taskora/taskora/recipes/image-processing.md) - [Webhook Delivery](https://kravetsone.github.io/taskora/taskora/recipes/webhook-delivery.md) - [Rate-Limited API Calls](https://kravetsone.github.io/taskora/taskora/recipes/rate-limited-api.md) - [Scheduled Cleanup with DLQ](https://kravetsone.github.io/taskora/taskora/recipes/cron-cleanup.md) ### Other - [@taskora/nestjs — NestJS Integration for taskora](https://kravetsone.github.io/taskora/taskora/skills/taskora-nestjs/SKILL.md): @taskora/nestjs — first-class NestJS integration for taskora. Use when building task queues in a Nest backend: TaskoraModule.forRoot, @TaskConsumer classes with constructor DI, @OnTaskEvent method bindings, TaskoraRef.for() zero-decorator dispatching, class middleware via @TaskMiddleware, @InjectInspector / @InjectDeadLetters / @InjectSchedules observability accessors, TaskoraBoardModule for the admin UI mount, producer/worker split deployment, multi-app routing, and the TaskoraTestHarness end-to-end test helper. Not for @nestjs/bull, @bull-board/nestjs, or bullmq-nestjs — those are different libraries with different APIs. - [Comparison](https://kravetsone.github.io/taskora/taskora/comparison.md): How Taskora compares to BullMQ, Agenda, and pg-boss — feature-by-feature breakdown for Node.js task queues. - [taskora — Task Queue for Node.js](https://kravetsone.github.io/taskora/taskora/skills/using-taskora/SKILL.md): taskora — TypeScript-first distributed task queue for Node.js with Redis backend. Use when building background job systems, scheduling recurring tasks, composing type-safe workflows (chain/group/chord), handling retries with backoff, rate limiting, debouncing/throttling/deduplicating dispatches, cancelling running jobs, validating job schemas, versioning job payloads, inspecting queue state, managing dead-letter queues, or running the admin dashboard. Not for BullMQ, Agenda, Bee-Queue, or other task queue libraries.