Metadata-Version: 2.4
Name: epochly-relay-sidecar
Version: 0.1.14
Summary: Relay local sidecar (W2.1 lockfile + spawn skeleton).
Author-email: "Epochly, Inc." <engineering@epochly.com>
License: Apache-2.0
Requires-Python: >=3.12
Requires-Dist: aiosqlite<0.22,>=0.20
Requires-Dist: epochly-relay
Requires-Dist: epochly-relay-schemas
Requires-Dist: fastapi<0.117,>=0.115
Requires-Dist: httpx<0.29,>=0.27
Requires-Dist: portalocker<3,>=2.10
Requires-Dist: uvicorn<0.34,>=0.32
Requires-Dist: zstandard<0.24,>=0.22
Provides-Extra: test
Requires-Dist: httpx<0.29,>=0.27; extra == 'test'
Requires-Dist: pytest-asyncio<0.26,>=0.24; extra == 'test'
Requires-Dist: pytest-timeout>=2.3; extra == 'test'
Requires-Dist: pytest>=8.0; extra == 'test'
Description-Content-Type: text/markdown

# Relay local-sidecar

Local-only FastAPI + aiosqlite process that the Relay SDK and CLI attach
to. Single instance per host, serialized via the four-state lockfile
classifier (spec H.5).

This is the W2 milestone package. W2.1 (this commit) lands the lockfile +
spawn semantics, the `local_atomic_file_write` atomic-persistence
primitive, and the `/health` nonce challenge. Later sub-features
(W2.2-W2.7) layer on the asyncio runtime, aiosqlite WAL, state engine,
event log, quiesce protocol, and crash recovery.

## Status

W2.1 scaffold. Not yet runnable as a daemon - the CLI entrypoint lands in
W5 (`rly sidecar start`). The library surface (`relay_sidecar.spawn`,
`relay_sidecar.primitives.local_atomic_file_write`) is exercised by tests
under `tests/`.

## Anchors

- Spec: `planning/epochly-replay-spec.md` section H.5 (lockfile four-state
  classifier), section H (four atomic-persistence primitives).
- CLAUDE.md keystone invariant #3 (manifest source of truth) + #8 (atomic
  persistence via four primitives).
- Contract: `relay-v0.1-oss-wedge/contract.md` VAL-W2-001 .. VAL-W2-011.

## ASCII-only

Per CLAUDE.md `ASCII-Safe Source`, all files under `apps/` are ASCII-only.
