Skip to content

feat: add durable SQLite-backed job queue for desktop mode #257

Description

@Abhash-Chakraborty

Problem

The desktop runtime plan removes Redis as a required desktop dependency, but Find currently uses Redis/RQ for background indexing and clustering jobs.

Goal

Add a durable SQLite-backed job queue path for desktop mode while preserving Redis/RQ for Docker and server-style deployments.

Scope

  • Define a SQLite job table for queued/running/completed/failed jobs.
  • Add enqueue/dequeue helpers compatible with the existing worker flow.
  • Preserve retry/reprocess semantics.
  • Keep Redis/RQ as the default for Docker mode.
  • Do not rewrite ML processing logic in this issue.

Acceptance criteria

  • Desktop queue mode can enqueue analysis and clustering jobs.
  • Jobs survive process restart.
  • Failed jobs keep inspectable error state.
  • Existing Docker/RQ mode still works unchanged.
  • Tests cover enqueue, dequeue, completion, failure, and restart persistence.

Suggested files

  • backend/src/find_api/core/queue.py
  • backend/src/find_api/workers/jobs.py
  • backend/src/find_api/workers/processors.py
  • backend/tests/
  • docs/plans/not-started/desktop-runtime-adr.md

Related

Metadata

Metadata

Labels

architectureHigh-level design decisions and technical directionbackendFastAPI, database, storage, and API workdesktop-appWindows, macOS, and Linux installed app workenhancementNew feature, improvement, or enhancement request.gssoc26Related to GirlScript Summer of Code 2026.infraDocker, compose, deployment, and runtime setuplevel:advancedGSSoC difficulty level: advanced. Base contributor points: 55.local-firstPrivacy-preserving local runtime and offline behaviorpriority: mediumUseful issue with moderate urgencystatus: availableOpen for contributors to pick up

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions