Agent harnesses and frameworks

clavia-labs/

tardigrade

TypeScript agent framework that folds an immutable event log into state using atoms, running on Cloudflare Workers or Celld.

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 quickstart

Or add the package to an existing project:

bun add tardie

The quickstart generates the services and deployment configs. Configure your model and credentials, then run locally against Cloudflare Workers:

bunx wrangler dev

Deploy to Cloudflare:

bunx wrangler deploy

Deploy to a Celld fleet:

celld deploy --config celld.jsonc --bucket s3://actors

How 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.