Not media storage
SyncTV aggregates and proxies external media; it does not replace object storage or media libraries.
Current design boundaries are not long-term roadmap commitments.
| Topic | Current boundary |
|---|---|
| Single-node | Supported and recommended for initial production |
| Multi-replica | Supported, but requires shared PostgreSQL, Redis, and consistent secrets |
| PostgreSQL | Required durable business data store |
| Redis | Optional for simple single-node, recommended in production, required for multi-replica |
| Automatic migrations | Embedded SQLx migrations run at service startup |
| management gRPC | Operations control plane, not for normal clients or public exposure |
| Topic | Current boundary |
|---|---|
| proxy slice cache | Caches only Range slices; no full-body cache |
| multi-replica slice cache | File backend has no cross-process shared index or distributed lock |
| header forwarding | Proxy only uses Provider-provided headers |
| direct playback | Requires the client to access the URL and set required headers |
| upstream availability | SyncTV cannot guarantee third-party Provider, CDN, or media stability |
| Bilibili | Upstream policy, cookies, Referer, User-Agent, and Range behavior can change |
| Topic | Current boundary |
|---|---|
| WebSocket observations | Not preserved across disconnect; reconnect must rebuild them |
| Observation count | Per-connection limit applies; merge or unobserve views |
| Transaction consistency | Database-backed changes fan out after commit; some runtime state is best-effort |
| Cluster catch-up | Covers short disconnect windows, not long offline sync |
| Rolling update | Long connections need drain time; not all connections move instantly |
| Topic | Current boundary |
|---|---|
| 2FA | Local 2FA uses password, passkey, verified email; OAuth2 is not a local factor |
| JWT revocation | Strong revocation depends on Redis token blacklist and token lifetime |
| OPAQUE secret | Long-term binding to password records; not for routine rotation |
| Provider encryption | Depends on credential encryption key; losing it affects decryption |
| OpenAPI UI | Only exposed when built with the openapi feature |
SyncTV is in a new-project phase. Its own protobuf, HTTP fields, and Realtime messages can still be cleaned up while draft contracts are being shaped. Third-party vendored proto is outside this policy and should be changed only through an intentional dependency update.
See API and Protobuf Evolution.
Not media storage
SyncTV aggregates and proxies external media; it does not replace object storage or media libraries.
Not a CDN
Proxy and slice cache do not replace CDN capacity planning.
Not a universal transcoder
Transcoding depends on the Provider or upstream media system.
Not a public management plane
management gRPC and metrics need controlled access.