{"repo":"b-erdem/belay","free":true,"listed":false,"github":"https://github.com/b-erdem/belay","clone":"git clone https://github.com/b-erdem/belay.git","description":"A durable job engine for Elixir, on Postgres. Jobs are built from memoized steps — retries resume work instead of redoing it. Budgets, workflows, human-in-the-loop, embedded dashboard.","language":"Elixir","stars":16,"topics":["ai-agents","background-jobs","durable-execution","elixir","job-queue","llm","oban","postgres","workflow-engine","belay"],"license":"Apache-2.0","category":"ai-agents","readme_excerpt":"⚓ Belay Durable execution for Elixir — without a workflow server. Resume at the first unfinished step. Add budgets, signals, DAGs, replay, and an embedded dashboard. Keep it all on Postgres. Background jobs get awkward when one run contains twelve paid API calls, a human approval, and a fan-out across the cluster. Classic queues retry the whole job . Belay makes the step the unit of recovery: once a step's result commits to the journal, later attempts replay it in microseconds and continue from the first unfinished step. The same journal powers spend accounting and replay debugging. Dependencies: Postgrex, Jason, telemetry — no Ecto requirement, no Redis, no separate service. PostgreSQL 14–18 are supported and exercised across the CI compatibility matrix. Apache-2.0. Quick start Prefer everything inline in the supervision tree? That works too — pass the same keys to {Belay, name: ..., storage: ..., queues: ...} and skip otp app . Testing is deterministic — drain synchronously, travel through time: Steps, waits, fan-out — one worker Where Belay pulls ahead of a classic queue is jobs with expensive parts, long waits, and moving pieces: Step bodies have at-least-once execution until their result is committed . If a process dies after an external side effect but before the journal write, that body can run again. Use provider idempotency keys or make external writes idempotent. Once the journal row exists, normal retries do not re-execute it. The same engine runs the unglamorous f","default_branch":null,"files":null,"tree":[],"storefront":"/r/b-erdem","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/b-erdem/belay/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}