Robust process management on PostgreSQL
Developed by Microsoft, pg_durable is a library designed to manage durable execution processes on PostgreSQL. Written in Rust, the tool enables complex workflows to run within the database in a fault-tolerant and persistent manner.
Updates
- October 7, 2026: Stars 2,811 → 2,831, latest release v0.2.9 (October 7, 2026).
- September 12, 2026: Stars 2,800 → 2,811, latest release v0.2.8 (September 11, 2026).
- September 2, 2026: Stars 2,781 → 2,800, latest release v0.2.7 (September 1, 2026).
- August 24, 2026: Stars 2,716 → 2,781, latest release v0.2.6 (August 24, 2026).
What you get
- It manages workflows within the database in a fault-tolerant and persistent manner.
- In case of crash or interruption, it continues operations from the last checkpoint.
- It runs directly on PostgreSQL without requiring additional infrastructure.
Installation
CREATE EXTENSION pg_durable;Running it
SELECT df.start(
'SELECT id FROM documents WHERE processed = false LIMIT 100' |=> 'batch'
~> 'UPDATE documents SET processed = true WHERE id = ANY($batch)'
);If you don't write code
I want to create a workflow using the pg_durable plugin on PostgreSQL. How should I configure the df.start() function to manage a fault-tolerant and persistent process within the database? How can I create a structure that processes data and can continue from where it left off in case of error, using the ~> and |=> operators that connect SQL steps? Please explain this process with examples using SQL commands.
Repository: https://github.com/microsoft/pg_durable. Follow the official instructions in the README of this repository for setup and execution.
Before starting, check which OS we are on and if the necessary tools (e.g., Python, Node.js, Git, Docker) are installed. Install any missing ones step-by-step according to this system.
Create a new, empty folder to work in. Do not touch any files outside this folder and do not delete anything. Tell me what you are going to do in one sentence before running each command.
Tell me what I should see on the screen at the end of each step. If an error occurs, I will paste the error message to you exactly as it is, and we will fix it together.
Related dictionary terms
Links
TreScout did not build this tool · we found it in GitHub trends and wrote it up. This page describes the repository as of 2026-06-08: The star count and our text belong to that day, the repository may have changed since. Check the repository link for the current state. The introductory text was prepared with AI from the repository's own documentation, and this page was machine-translated from the Turkish original · the Turkish version prevails.