Repository navigation
[Submission] Faldony — self-hosted document archive with durable processing #129
Description
Project link
https://github.com/SixthPhilosopher/Faldony
Language
Java
Short description (max 256 chars)
Faldony is a self-hosted, local-first document archive. Every upload becomes a durable Temporal workflow: extract (OCR), embed, finalize — a crash mid-import never loses your file. Search fuses full-text, fuzzy, and vector ranking over a single PostgreSQL dataset.
Long Description
What this is
Faldony is a self-hosted, single-node document archive for personal and
professional files. You upload PDFs, scans, or photos; the system OCRs them,
embeds the text, and makes the whole library searchable — all on hardware
you own, with no cloud vendor in the path.
The problem it solves
Document archives tend to live in one of two extremes: cloud services that
hold your data hostage, or local folders you can never find anything in.
Faldony combines local-first storage with real retrieval — ingest is
automatic and durable, and search understands semantics, typos, and
structure. It is a private, searchable binder that survives crashes and
power cuts.
How it uses Temporal
Temporal is the backbone of the ingest pipeline. Every upload starts a
DocumentProcessingWorkflow — a single durable execution identified by the
document's content hash:
- OCR + chunking runs as Activities against a self-hosted Docling
server, polled on durable timers (a restart or crash costs nothing). - Embedding runs as another Activity with batch-resumable heartbeats.
- A Saga compensation registered first guarantees cleanup on any
permanent failure; cancellation is cooperative, never a terminate. - Failures are classified into a durable processing ledger, and a
Reconciliation Workflow (a Temporal Schedule) self-heals the stack
every few minutes — resuming transient failures, garbage-collecting
orphans, and keeping the ledger honest. - Live UI progress streams straight from workflow state via the Java SDK's
Workflow Streams, bridged to Server-Sent Events.
The workflows and activities are visible under
backend/src/main/kotlin/com/kiss/backend/temporal/.
DocumentProcessingWorkflow.kt/DocumentActivities.kt— the ingest
pipeline (extract → embed → single-write finalize)ReconciliationWorkflow.kt/ReconcileActivities.kt— the self-healing
scheduleEmbeddingBackfillWorkflow.kt— the dormant backfill passTitleUpdateWorkflow.kt— per-document metadata updates
For setup instructions, see the README.
Author(s)
Alessandro Saccinto (SixthPhilosopher)
Activity
github-actions commentedon Sep 6, 2026
ZiggyBot — automated pre-evaluation
Overall: Needs review⚠️
Notes:
.../kotlin/.... Minor labeling inconsistency, not a defect..ktsource files; worth confirming for catalog accuracy.requestCancel, heartbeat-based batch resumption, a reconciliation Schedule, and Workflow Streams bridged to SSE.processing_ledger, is a reasonable design decision and is documented.DocumentProcessingWorkflow.ktis truncated at the review boundary; the compensation and cancellation logic described in the docstring could not be fully inspected in the workflow body.Suggested questions for submitter:
docker-composequickstart, and have they been validated on a clean environment?finalizeDocumentandembedMissingChunksactivities idempotent under retry, and is the single-write finalize transactional across the document row and all chunk rows?Notable Temporal pattern:
Automated AI pre-screen by ZiggyBot. Final decisions are made by the community team.
Reviewer: Check the box below to generate a Contentful-ready long description for this submission.
github-actions commentedon Sep 6, 2026
ZiggyBot — automated pre-evaluation
An error occurred during automated evaluation; the community team will need to review this submission manually.
Automated AI pre-screen by ZiggyBot. Final decisions are made by the community team.
SixthPhilosopher commentedon Sep 8, 2026
Hi! Just following up on this submission to check whether it’s in the review queue.
It looks like the automated pre-evaluation has failed twice with an authentication error (
401 API key is invalid). I’m not sure if that means the submission is waiting for manual review, or if it may have been missed by the process pipeline.Could someone confirm whether the submission is still queued for review?
Thanks!
Shy commentedon Sep 17, 2026
Thanks for catching. I'm working with our IT team to get our key fixed.