Polign Recall · Comparison

Recall vs pod snapshotting

A container checkpoint freezes the process and writes its memory to disk; restore brings the same process back. Recall writes what the agent knows and where it is; a new process, on a new image if you like, starts from that. We ran both on the same crashed coding agent.

Recall and Container checkpoint (CRIU)

RecallContainer checkpoint (CRIU)
Storage ownershipYour own database: polign_db in your S3, GCS or Azure bucket, or PostgreSQL, MongoDB or Qdrant you already run. No vendor control plane.A tar archive of the container's memory pages and file state, written by the kubelet to /var/lib/kubelet/checkpoints on the node, or by Podman to a file you name.
Typed recordsYes. Each fact is a subject, a predicate from a registry (or coined on first use) and a typed value; text is extracted into those by a model you name.No. The checkpoint is bytes of process memory; nothing in it is addressable as a fact or a step.
Corrections and supersessionBy rule at read time: a single-valued predicate's newer statement replaces the older one; a text statement can name what it makes untrue. Reads carry what was replaced.No.
Resume after restartYes. Working state, turns, outputs, pointers and in-flight tool calls per agent id, fenced by a lease; a new process resumes from a briefing.Yes, if the same image, architecture and runtime are available, open TCP connections were checkpointed with --tcp-established, and nothing uncheckpointable was open (GPUs need a CRIU plugin). Restore brings back the old process exactly, old code and old model included.
Shared across agentsYes. One database, keys per namespace through recall serve, Kubernetes workload identity, packages for LangGraph, OpenAI Agents SDK, Pydantic AI, LiveKit, Vapi and MCP hosts.No. One checkpoint is one container.
Audit and historyAppend-only records with time and source; history, as_of reads, diff, and audit bundles replayable offline.No history of what the agent knew; a checkpoint is a point in time and contains every secret the process held, so it must be kept root-only.
Self-hosted pathpip install polign-recall runs a local database; recall serve or the Helm chart for a shared one. Apache-2.0.Kubernetes ContainerCheckpoint feature gate (beta since 1.30, still beta), a CRI runtime with CRIU (CRI-O, or containerd with its own support), kubelet checkpoint API; restore is outside the kubelet and done with crictl or by converting the archive to an image. Podman 4.x with CRIU 3.16 or later does both.
PricingFree to self-host, no limits. Paid: design partner seat (60 days free, then $12k for 12 months) or a Production Agreement at $24k a year, flat.Free. The cost is engineering: 3 setup changes in our run (runc instead of crun, --tcp-established, container-managed DNS), and 15 MB per checkpoint against 134 KB of records.

When to pick the other tool

Pick a container checkpoint when the process holds state that cannot be written down: a model loaded in GPU memory you want to migrate as is, a debugging session you need forensically intact, a binary you cannot change. That is what the Kubernetes feature exists for, and the KEP calls it forensic. For an agent that talks to a model over an API, the process state is the conversation and the plan, and those can be records. On the measured run a CRIU checkpoint restored the agent and it finished, but it came back as the old image on the old model, redid 8 model calls, and its 15 MB checkpoint held the API key; the Recall resume came back as the upgraded image on the newer model with 134 KB of records and redid nothing.

Where to go next

Sources, read on November 3, 2026: kubelet checkpoint API, feature gates, KEP-2008, CRIU limits, TCP connections, podman container checkpoint; CRIU 4.3.

Recall is typed, durable memory and state for AI agents. It stores corrections, decisions and task state as append-only records in your own object store (S3 or GCS), so an agent can be corrected without retraining and resumed after a crash, restart or pod replacement without snapshotting the process.

Try it

One pip install brings the client, the recall binary and the database. The snippet on this page runs as written.