Show HN: Restate – Low-latency durable workflows for JavaScript/Java, in Rust

Restate is a new Rust-based, self-contained workflow and durable execution engine aimed at giving JavaScript and Java developers low-latency, exactly-once RPC and stateful “virtual objects” without depending on external databases or task queues. Commenters compare it frequently to Temporal and AWS Step Functions, highlighting Restate’s architectural focus on an integrated log-based storage layer, FaaS-friendly push model, and simpler deployment via a single binary, while noting the lack of a mature Go/Python SDK and visual tooling as current gaps. There is also debate over long‑running workflow evolution, idempotency guarantees, licensing under BSL, and future plans such as managed cloud offerings, Python support, and better observability.

Overview & Core Value Proposition

  • Restate is presented as a low‑latency, durable execution/workflow engine with its own integrated data layer and SDKs (TS/Java, Go in progress).
  • Main promise: “handlers always run to completion” via journaling and replay, reducing the need for ad‑hoc idempotency and state‑machine boilerplate.
  • Designed to be self‑contained (single binary, no external DB required) but with pluggable storage and a Postgres‑compatible query interface for internal state.

Relation to Temporal, Step Functions, Airflow, etc.

  • Many questions compare it to Temporal. Claimed differences:
    • Lower latency via event‑log design and not spawning separate “activities” processes.
    • Push model that fits FaaS (e.g., Lambda) better than Temporal’s pull‑worker model.
    • Broader use beyond workflows: durable RPC, actor‑like “virtual objects,” Kafka ingestion.
  • Compared to Step Functions: worse today on visualization, better on type‑safe “workflows as code,” and potentially lower cost/latency for complex patterns.
  • Compared to Airflow/Prefect: positioned more for fine‑grained, low‑latency transactional flows than heavy data pipelines.

Language & Runtime Support

  • Official SDKs target TypeScript and Java; Go SDK exists as a community MVP and is expected to be adopted and stabilized.
  • Python is one of the top user requests; maintainers hint at a 6–12 month horizon but no firm date.
  • Interest in Deno/Cloudflare/Bun; a TS user reports a Cloudflare Workers PoC with minor SDK tweaks, and official runtime-agnostic support is planned.

Durability, Idempotency, and Long‑Running Workflows

  • System records intermediate steps, replays only from failure points, and expects individual side‑effects to be idempotent or compensatable.
  • Long‑running workflows are recommended to be decomposed into delayed calls rather than single “sleeping” handlers, to ease code evolution and safety.
  • Versioning and routing of in‑flight executions to old code versions is supported; concerns remain about running very old binaries (security, config drift).

Use Cases & Patterns

  • Discussed use cases: async tasks, cron‑like jobs, fan‑out/fan‑in, LLM/ML pipelines, human‑in‑the‑loop flows, transactional business processes.
  • Compensation/rollback patterns are supported via normal try/catch and guaranteed completion semantics.

Cloud Offering & Deployment Concerns

  • A managed “Restate Cloud” launched alongside; currently early access with a free tier, consumption pricing planned.
  • Some users want a fully serverless orchestrator and HA multi‑node self‑hosted mode; multi‑node support is “actively in progress.”
  • Cost and security of using vendor‑hosted orchestration vs self‑hosting are recurring concerns.

Licensing & Ecosystem

  • Core is under BSL with an extra grant intended to block cloud providers from offering it as a managed service while allowing most other uses.
  • At least one commenter finds calling it “open source” misleading and worries it restricts building workflow‑driven platforms on top.
  • Maintainers indicate willingness to adjust terms if they unintentionally block such applications.

Developer Experience & Critiques

  • Several users praise ease of cloud setup, docs, and the “virtual objects” abstraction, though the name is seen as underselling its power.
  • Requests for: pull‑based handlers for easier integration, richer visualizations, better Next.js/Node support, diagramming tools, and built‑in HTTP client wrappers that hide state handling.
  • Some skepticism about the marketing emphasis on “in Rust” and differing views on Rust’s suitability for highly concurrent backends.