prefect-pds: a minimal prefect server whose database is an atproto repo
no postgres, no sqlite: orchestration writes become records in an MST,
sealed by signed v3 commits, persisted as one CAR file. the workspace is
a did:key minted on first boot. reads are served from a disposable
appview on embedded burner-redis (swappable behind a union).
verified end to end: a real prefect>=3.0 python client runs
basic_flow(3, 4) = 14 to Completed against it, and the resulting state
history is browsable as at:// records via com.atproto.repo.listRecords
and exportable as a signed CAR via com.atproto.sync.getRepo. restart
reloads the repo from disk with the same identity.
deps: zat v0.3.6 (MST/CBOR/CAR/signing/TIDs), httpz (zat-websocket-pin
branch so the websocket package is shared with zat), burner-redis 0.0.4.
v0 gaps documented in the README: no orchestration rules, no appview
hydration on boot, events websocket stubbed, full-CAR rewrite per commit.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
prefect-pds: a minimal prefect server whose database is an atproto repo
no postgres, no sqlite: orchestration writes become records in an MST,
sealed by signed v3 commits, persisted as one CAR file. the workspace is
a did:key minted on first boot. reads are served from a disposable
appview on embedded burner-redis (swappable behind a union).
verified end to end: a real prefect>=3.0 python client runs
basic_flow(3, 4) = 14 to Completed against it, and the resulting state
history is browsable as at:// records via com.atproto.repo.listRecords
and exportable as a signed CAR via com.atproto.sync.getRepo. restart
reloads the repo from disk with the same identity.
deps: zat v0.3.6 (MST/CBOR/CAR/signing/TIDs), httpz (zat-websocket-pin
branch so the websocket package is shared with zat), burner-redis 0.0.4.
v0 gaps documented in the README: no orchestration rules, no appview
hydration on boot, events websocket stubbed, full-CAR rewrite per commit.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>