What’s new here
Tardigrade appends events to an immutable log and derives state by reducing that log through atoms, inspired by how Elm derives a view from a model. A durable atom owns a slice of history, a plain atom derives values from other atoms, and an effect atom computes a view and proposes the next action. The event log itself is immutable; state comes from reducing it.
What it does
You define an agent as a set of atoms wired into an actor with defineActor. Durable atoms hold persisted state by reducing typed events from the log. Plain atoms derive values from other atoms. Effect atoms produce a { view, events, acts } triple that drives the agent’s next step.
Actors run inside a hosting layer. On Cloudflare Workers the framework provides an ActorDO (supervisor and directory) and a ThreadDO (per-thread SQLite journal). Each thread records its parent, so lineage is derivable from the directory tree. The same worker entry point also runs on a self-hosted Celld fleet using an S3-backed storage bucket.
The framework is built on Effect TS, so dependency injection, error handling and async effects follow Effect’s functional style.
Who it’s for
TypeScript developers who want agent state derived from an immutable event log and are comfortable with functional patterns (reducers, derived values, Effect). A good fit if you are already deploying to Cloudflare Workers or running a Celld fleet and want the hosting layer handled for you. Less suited to teams who want a quick imperative loop with minimal new concepts.
Try it
Scaffold a new project with the quickstart template:
bunx tardie init meeseeks --template quickstartOr add the package to an existing project:
bun add tardieThe quickstart generates the services and deployment configs. Configure your model and credentials, then run locally against Cloudflare Workers:
bunx wrangler devDeploy to Cloudflare:
bunx wrangler deployDeploy to a Celld fleet:
celld deploy --config celld.jsonc --bucket s3://actorsHow mature is it
392 stars, 25 forks, 7 contributors. Created August 2026, last push October 10 2026. 68 releases with the latest at v0.46.0, and at least 100 commits in the last 90 days. 86 open issues and pull requests. The README carries an active-development warning that APIs may change. Licensed MIT.