βοΈ Wallflower vs. TAMS (Time-Addressable Media Store): The Gateway-Store Relationship
Wallflower is the TAMS Ingestion Gatewayβit handles
the real-time, client-facing problems that TAMS delegates to the client ecosystem.
| Feature |
TAMS Specification (The Store) |
Wallflower Specification (The Gateway) |
Relationship |
| Primary Goal |
Immutable storage, unique addressing, copy-on-write referencing. |
Authoritative Wall-Clock Timecode (WCT) stamping, low-latency sync, two-phase submission. |
Complementary: Wallflower creates the high-integrity data that TAMS stores. |
| Transport Protocol |
HTTP/S (REST API calls for metadata and segment URLs). |
WebSocket over TLS (Planned migration to WebTransport/QUIC). |
Translator: Wallflower handles the real-time WSS (or future QUIC) connection to the client and translates the session data into TAMS-compatible HTTP API calls. |
| Time Model |
Time-addressable Flow segments defined by a nanosecond-precision timeline (Flow timeline). |
Provides Authoritative Server WCT via a WebSocket heartbeat and estimates client clock Offset. |
WCT Anchor: Wallflower establishes the reliable WCT, which is the necessary anchor point for registering the Flow segments in TAMS. |
| Submission Model |
Assumes the client can post fully-formed, segmented media data (Flow Segments) via PUT to S3 URLs. |
Implements a Two-Phase Submission to lock the WCT at the moment of creation (POST /claim-submission) independent of the slow upload. |
Gap Filler: Wallflower solves unreliable internet uploads by decoupling WCT from upload duration, a capability TAMS leaves to clients. |
| Data Handling |
Uses Flows and Grains (frames) as atomic units. Segments are media chunks. |
Stores a SubmissionRecord with serverWCT and clientMonotonicTs. Uses R2 for video blob storage. |
Pre-Flow Metadata: Wallflower provides the metadata (WCT, offset, client IP) required before a Flow can be registered into TAMS. R2 acts as the underlying essence storage, mapping to TAMS's model of delegating storage to a cloud service. |
| Source Verification |
Focuses on immutability of the stored reference (UUID and timerange). |
Tracks the clientIp and locks the WCT at the point of claim. |
Provenance Enabler: Wallflower captures the required real-time telemetry (time, source IP) to hash submissions into the Wallflower Provenance Ledger (WPL), an internal SHA-256 hash chain for content provenance. |
π‘ Conclusion: Wallflower is the "TAMS Ingestion Engine"
Wallflower is not a competitor to TAMS; it is the missing front-end component
required to utilize TAMS effectively for mass-scale, unsynchronized consumer devices:
-
Bridging the Client Gap: Wallflower provides the necessary
WebSocket (and future WebTransport) client SDK and server orchestration
(Durable Object) to manage the session state and time sync complexity that TAMS intentionally ignores.
-
Enforcing Timing Integrity: The Two-Phase Submission
guarantees that the time stamp is accurate to the fan's experience, even when upload speeds
are poor. This enables synchronization of the reaction with the "Game Book" data.
-
TAMS Formatting Pipeline: The Wallflower Worker and Durable Object will
house the logic to take the raw client submission and its accurate WCT metadata, segment
the video from R2, and execute the final POST /flows/<flow_id>/segments
calls against a TAMS API instance.
π Provenance and Content Credentials
Wallflower provides provenance tracking through three complementary systems:
TAMS Source/Flow Integration
Every client session creates a TAMS Source as the immutable anchor for all submissions.
Both text and video contributions are tracked with Flows:
| Flow Type |
Full Name |
Purpose |
| PPP Metadata |
Participant Profile/Provenance |
Created for all submissions. Records who submitted, when, and from where. |
| FRP Media |
Fan Reaction Production |
Created for video submissions only. Contains the actual video essence stored in R2. |
| Game Book Reference |
Broadcast Event Sync Tuple |
Created when a submission is within 30 seconds of a Game Book marker. Links the fan's reaction to the official broadcast moment. |
The Game Book Reference answers the question: "What official broadcast event was this fan reacting to?"
It stores the marker ID, the broadcast event timestamp, the reaction timestamp, and the offset between them.
WPL (Wallflower Provenance Ledger)
Every completed submission generates a SHA-256 transaction hash that includes:
- Source and Flow identifiers
- Client IP and server WCT
- Content hash of the media essence
- Game Book reference tuple (if available)
- Link to previous transaction (hash chain)
This creates an internal provenance chain for rights management within the Wallflower ecosystem.
C2PA Content Credentials
Wallflower prepares C2PA manifest data for each submission, enabling industry-standard
content authenticity when media is exported. The C2PA manifest includes:
- Creation timestamp and software agent
- Action assertions (
c2pa.created)
- Ingredient chain for composite content
- Integration with WPL transaction hash
C2PA signing requires a valid certificate and occurs at export time via an external signing service.
π How They Work Together
- WPL provides internal provenance for the Wallflower ecosystem
- C2PA provides external provenance that travels with exported media
- TAMS Source/Flow provides the architectural framework linking both systems
See the Technical Specification for implementation details.
π Named Source Collections
Wallflower supports Named Source Collections, allowing users to organize
their contributions into named groups instead of automatic session-based assignment.
What is a Source Collection?
A Source (in TAMS terminology) is a container for related Flows. Each submission creates Flows
(metadata, media, references) that belong to a Source. Users can:
- Create named collections like "Super Bowl Reactions" or "Conference Q&A"
- Add contributions to existing collections across multiple sessions
- Use automatic assignment when organization isn't needed
How to Use Source Collections
On the Submit page, you'll see a "Contribution Source" section with three options:
- Automatic: Contributions grouped by your session (default)
- Create New Collection: Enter a name for a new group
- Add to Existing: Select from your previously created collections
Benefits
- Organize contributions by event, topic, or project
- Continue adding to a collection across multiple browser sessions
- Filter the Contribution Log by collection
- Clear provenance chain for grouped content
π Viewing Collection Data
Named collections appear in several places:
- Contribution Log: Filter by collection, see source in expandable details
- Provenance Page: View all Sources with their associated Flows
- Submit Page: Dropdown shows your available collections
π Universal Time Access
Wallflower provides Universal Time Access (UTA) - the ability to query any frame
in any submitted video by its absolute wall-clock timestamp, enabling multi-source media correlation.
What is Universal Time Access?
Every frame in every submitted video has a unique address on the universal timeline:
universal_timestamp = submission_WCT + media_offset
For example, if a video was submitted at exactly 2:30:00 PM, the frame at 10.5 seconds
into that video has a universal timestamp of 2:30:10.500 PM. This works across all
sources, all contributors, all devices.
What can I do with it?
| Use Case |
How It Works |
| Multi-angle reconstruction |
Query a specific moment and get all videos from different fans showing that exact instant |
| Broadcast correlation |
Link fan reactions to official Game Book markers - "what were fans doing when the goal was scored?" |
| Cross-source sync |
Synchronize videos from multiple contributors even if they started recording at different times |
| Temporal search |
Find all content created during a specific time window across all sources |
How does duration extraction work?
When you submit a video, the client SDK automatically extracts the video duration using
the browser's HTMLVideoElement. This duration is sent to the server during
the claim phase, before upload begins. The server then calculates:
- universalTimeStartNs: Server WCT in nanoseconds
- universalTimeEndNs: Server WCT + duration in nanoseconds
Nanosecond precision is used for TAMS compliance, ensuring compatibility with
professional broadcast systems.
API Endpoints
| Endpoint |
Purpose |
| GET /api/universal-time?time=X |
Find all videos containing moment X (with tolerance window) |
| GET /api/flows/{id}/segments |
Get TAMS-compliant segments for a specific flow |
π¬ Example: Stadium Multi-Cam
Imagine 50 fans in a stadium, each recording with their phones. When the winning
touchdown happens at exactly 4:32:15.000 PM:
- Call
GET /api/universal-time?time=1709634735000&tolerance=2000
- Get back all 50 videos with exact seek positions
- Create a synchronized multi-angle view of that moment
Each response includes seekTimeSeconds - exactly where to jump in
each video to see that precise moment.
π€ User Identity for Provenance
Wallflower includes a user identity system that adds contributor attribution
to the provenance chain. This allows you to see who submitted content, not just when and what.
How does it work?
- First Visit: You'll be asked to enter your display name
- Cookie Storage: Your name is saved in a browser cookie
- Every Submission: Your name is sent with text and video contributions
- Provenance: Your name is recorded in the WPL hash chain
- Switch User: Click "Switch User" in the header to change identity
What does the username prove?
Important: This is a self-declared identity with no verification.
It proves that someone claimed to be that name when submitting, but not that
they actually are that person. Think of it like signing a guest book.
| Provenance Claim |
Strength |
| Who submitted (username) |
Weak (self-declared, no verification) |
| When submitted (timestamp) |
Strong (server-authoritative) |
| What was submitted (content hash) |
Strong (SHA-256 integrity) |
| Submission order |
Strong (WPL hash chain) |
Can I change my username?
Yes! Click the "Switch User" button in the header. This clears your saved username
and prompts you to enter a new one. Your previous submissions will still show the
old name in the provenance records.
π Sample Application
What is the Sample Application?
The Sample Application is a Super Bowl LX simulation that demonstrates
Wallflower's real-time capabilities. It plays through a complete football game with play-by-play
data, allowing users to submit reactions that get timestamped and correlated with game events.
How does the simulation work?
The simulation loads a Game Book JSON file containing 72 plays with timestamps starting from
kickoff (February 8, 2026 at 6:30 PM ET). You can run it in real-time or accelerated (5x, 25x, 100x).
As plays occur, you can submit text reactions that capture the current game context (quarter, clock, score).
What does this demonstrate?
- Authoritative timestamps: Your clientWCT is captured at the moment you click Submit
- Game Book correlation: Submissions are linked to game events by timestamp
- Real-time sync: RTT and offset displayed as you interact
- TAMS Sources: All submissions go to a "superbowl-lx-simulation" source