LK

lostinpatterns/kassette

Developer tools

이 페이지는 AI로 자동 번역되었습니다. 기술적인 세부 사항은 원문을 확인하세요. 원문 보기

57 stars 품질 61 트렌드 17MIT

기존의 Infra로 구성할 수 있는 primitives를 사용하여 에이전트 워크플로우를 내구재로 만듭니다. 서버 없음, 전용 실행 시간 없음, 새로운 인프라 없음.

개요

기존의 Infra로 구성할 수 있는 primitives를 사용하여 에이전트 워크플로우를 내구재로 만듭니다. 서버 없음, 전용 실행 시간 없음, 새로운 인프라 없음. Agentic 워크플로는 좌절적으로 비싼 방법으로 실패합니다. 그들은 분 또는 시간 동안 실행되며 비용이 많이 드는 LLM 통화를 만들고 실제 부작용을 가진 도구를 실행하고, 종종 인간 입력 또는 외부 시스템에 대한 일시 중지합니다. 그런 다음 프로세스 충돌, 밖으로 시간, redeployed 얻을, 또는 단순히 사라. 국가가 기억에 이었기 때문에, 네이티브 리트리는 이미 모델에 대한 답변을 위해 다시 지불을 의미, 한 번 일어나고, 복구 복잡성을 다시 앱 코드로 밀어. kassette는 append-only 저널로 이것을 해결합니다. 그것은 완료된 작업을 기록 그래서 다음 invocation에 저널을 통해 빠르게 재생하고 첫 번째 unfinished 단계에서 라이브 이력서. 기존의 큐 또는 작업 런너는 일반적으로 재발 할 수 있습니다.

개요(AI 번역)

기존의 Infra로 구성할 수 있는 primitives를 사용하여 에이전트 워크플로우를 내구재로 만듭니다. 서버 없음, 전용 실행 시간 없음, 새로운 인프라 없음.

Agentic 워크플로는 좌절적으로 비싼 방법으로 실패합니다. 그들은 분 또는 시간 동안 실행되며 비용이 많이 드는 LLM 통화를 만들고 실제 부작용을 가진 도구를 실행하고, 종종 인간 입력 또는 외부 시스템에 대한 일시 중지합니다. 그런 다음 프로세스 충돌, 밖으로 시간, redeployed 얻을, 또는 단순히 사라. 국가가 기억에 이었기 때문에, 네이티브 리트리는 이미 모델에 대한 답변을 위해 다시 지불을 의미, 한 번 일어나고, 복구 복잡성을 다시 앱 코드로 밀어.

kassette는 append-only 저널로 이것을 해결합니다. 그것은 완료된 작업을 기록 그래서 다음 invocation에 저널을 통해 빠르게 재생하고 첫 번째 unfinished 단계에서 라이브 이력서. 기존의 큐 또는 작업 런너는 일반적으로 재발 할 수 있습니다. kassette는 그 재발견을 다시 실행하는 대신 완료 단계를 재생하여 안전합니다.

문제는 "이 다시 실행하는 방법?"하지만 “나는 두 번 같은 일을 피하는 방법?” Ie, 기존의 스택은 쉽게 retries하지만 안전하지 않습니다.

이 페이지는 AI로 자동 번역되었습니다. 기술적인 세부 사항은 원문을 확인하세요.

README

원문 README의 일부입니다. 원문 보기.

kassette

Make your agentic workflows durable with embeddable primitives that compose with your existing infra. No server, no dedicated runtime, no new infra.

Agentic workflows fail in a frustratingly expensive way: they run for minutes or hours, make costly LLM calls, execute tools with real-world side effects, and often pause for human input or external systems. Then the process crashes, times out, gets redeployed, or simply disappears. Since the state was in memory, naive retry means re-paying for answers the model already gave you, re-firing side effects that were supposed to happen once, and pushing recovery complexity back into app code.

kassette solves this with an append-only journal. It records completed work so that a replay fast-forwards through the journal on the next invocation and resumes live from the first unfinished step. Your existing queue or job runner can retry normally. kassette ensures those re-invocations are safe by replaying completed steps instead of running them again.

Use kassette when the problem is not “how do I run this again?” but “how do I avoid doing the same work twice?” Ie, your existing stack makes retries easy but not safe.

For the longer rationale, see Why kassette.

Properties

Embeddable, not a runtime. kassette is a library that runs inside your process, like SQLite. It’s not a separate server or sidecar or worker that runs or schedules your code.

No new infrastructure. Composes with your existing infra. No database to host, no server to deploy, no queue to provision. Re-invocation is wired up using the queue, webhook, or job runner you already have. Uses the filesystem or object storage.

Plain-text state. Each run is a JSONL journal. Dump it, pipe it to jq, save it as a test fixture, or query S3-backed journals with Athena. See operations.

No compute while waiting. Waiting on human approval, a CI pipeline, or a webhook? The process simply exits. When the signal arrives, replay to the point you suspended and continue.

Serverless-native. The journal is the state; the process is a disposable. Any later process with access to the journal can continue the run. Copy it, sync it, ship it across regions.

What kassette ships, what you bring

Durable execution decomposes into two halves: a journal that records completed work, and a dispatcher that invokes the same runId again after a crash or timeout. Temporal and Inngest ship both. kassette ships only the journal.

You wire up the dispatcher that’s already in your stack: a queue, job runner, or anything else that can run the same work again after failure. If a run doesn’t succeed, the dispatcher invokes it again, and replay skips the steps that already finished. You don’t need heartbeats, sweepers, or a run-status table.

GitHub에서 전체 README 보기

추천 도구

다른 키워드를 입력하거나 필터를 제거해 보세요.

설치

npx skillfish add lostinpatterns/kassette
MCP 초보자라면? mcpskill.org 가이드부터 시작하세요 →