Skip to content

Limitations and Non-goals

Current design boundaries are not long-term roadmap commitments.

TopicCurrent boundary
Single-nodeSupported and recommended for initial production
Multi-replicaSupported, but requires shared PostgreSQL, Redis, and consistent secrets
PostgreSQLRequired durable business data store
RedisOptional for simple single-node, recommended in production, required for multi-replica
Automatic migrationsEmbedded SQLx migrations run at service startup
management gRPCOperations control plane, not for normal clients or public exposure
TopicCurrent boundary
proxy slice cacheCaches only Range slices; no full-body cache
multi-replica slice cacheFile backend has no cross-process shared index or distributed lock
header forwardingProxy only uses Provider-provided headers
direct playbackRequires the client to access the URL and set required headers
upstream availabilitySyncTV cannot guarantee third-party Provider, CDN, or media stability
BilibiliUpstream policy, cookies, Referer, User-Agent, and Range behavior can change
TopicCurrent boundary
WebSocket observationsNot preserved across disconnect; reconnect must rebuild them
Observation countPer-connection limit applies; merge or unobserve views
Transaction consistencyDatabase-backed changes fan out after commit; some runtime state is best-effort
Cluster catch-upCovers short disconnect windows, not long offline sync
Rolling updateLong connections need drain time; not all connections move instantly
TopicCurrent boundary
2FALocal 2FA uses password, passkey, verified email; OAuth2 is not a local factor
JWT revocationStrong revocation depends on Redis token blacklist and token lifetime
OPAQUE secretLong-term binding to password records; not for routine rotation
Provider encryptionDepends on credential encryption key; losing it affects decryption
OpenAPI UIOnly 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.