What is Wallflower?
Wallflower is a TAMS Ingestion Gateway that captures user-generated content
(text and video) with precise wall-clock timestamps. It solves the problem of knowing exactly
when content was created, regardless of network conditions or upload delays.
When a user clicks "Submit," Wallflower captures their client wall-clock time (clientWCT)
as the authoritative timestamp. This represents the user's moment of intent, not when the server received it.
Key Capabilities
🕐
Authoritative Timestamps
Client-side wall-clock time (clientWCT) captured at the moment of submit, independent of network latency.
📹
Two-Phase Submission
Timestamp locked instantly (Phase 1), video uploaded separately (Phase 2). A 30-second upload doesn't shift your timestamp.
🔗
TAMS Integration
Source/Flow architecture for media provenance. Every submission creates TAMS-compatible metadata structures.
🔐
Content Provenance
WPL hash chain and C2PA manifest preparation for verifiable content authenticity.
🌐
Universal Time Access
Query any frame in any video by absolute wall-clock timestamp. Correlate content across sources.
📊
Game Book Sync
Correlate user submissions with broadcast events. Fan reactions linked to specific game moments.
How It Works
Time Synchronization
Clients connect via WebSocket and send heartbeats every 500ms. The server responds with its wall-clock time,
allowing clients to calculate round-trip time (RTT) and clock offset. This data is displayed for transparency
but the clientWCT (client's Date.now() at submit) is the authoritative timestamp.
Two-Phase Video Submission
User clicks Submit at T=0
│
▼
┌─────────────────────────┐
│ Phase 1: CLAIM (instant)│
│ POST /api/claim-submission
│ - clientWCT = T=0 │
│ - Returns submissionId │
└─────────────────────────┘
│
▼ (30 seconds upload)
┌─────────────────────────┐
│ Phase 2: UPLOAD (slow) │
│ PUT /api/upload/{id} │
│ - Video blob uploaded │
│ - Timestamp preserved! │
└─────────────────────────┘
│
▼
Stored timestamp = T=0 (not T=30)
Stored Timestamps
- clientWCT - Client's Date.now() at submit (authoritative)
- serverWCT - Server's Date.now() at receipt (verification)
- Delta - Difference reveals network latency
Use Cases
Live Event Fan Reactions
Capture fan video reactions during live sports events. Each reaction is timestamped to the exact moment
it was recorded, enabling correlation with game events (touchdowns, goals, etc.) via Game Book markers.
Time-Shifted Viewing
Users watching delayed streams can still have their reactions correctly timestamped. The clock offset
mechanism accounts for viewing delays while preserving the user's perceived "live" moment.
Content Verification
WPL hash chains and C2PA manifest preparation enable verification that content was captured at the
claimed time, by the claimed source, without modification.
Try It Out
Experience Wallflower with our Super Bowl LX simulation demo.
Architecture
Wallflower runs on Cloudflare Workers with Durable Objects for state management
and R2 for video storage. The edge-first architecture ensures low latency globally.
- Workers - Request routing, API endpoints
- Durable Objects - WebSocket handling, submission storage, TAMS state
- R2 - Video blob storage with CDN delivery
Pages
- Submit - Submit text or video contributions
- Log - View all contributions with timestamps
- Provenance - TAMS Sources, WPL transactions, Game Book data
- Samples (clean | tech) - Super Bowl LX simulation demo
- FAQ - Frequently asked questions
- Spec - Technical specification