Card analysis for streamers. Fast & Accurate.
cardstream is a state machine wrapped around a card identification endpoint. Everything below either makes the identification better, or makes sure it only happens when it is actually worth paying for.
Real-Time Card Identification from Any Stream
Four identification endpoints behind one switch — trading card games, sports cards, graded slabs and comics.
The whole match, flattened
Name, full name, set, set code, card number, series, year and subcategory arrive as one object per identified card — ready to read out, log or push into your own tooling.
Confidence you can act on
Every match carries the raw distance and a High / Medium / Low tier (cutoffs at 0.18 and 0.30). Set a result threshold and cards below it never reach the overlay.
Alternative matches
Every result comes with up to four other cards it could have been. If the top match is wrong, the right one is usually in that short list.
Prefills that narrow the search
Tell it the game, the set code or the writing system and the endpoint stops guessing them. Values are validated locally — a typo fails on your machine instead of quietly returning the wrong print.
Category per show
One flag, or the settings dialog mid-stream: tcg, sport, slab or comics. Switching drops any prefill the new category does not know rather than sending it a value it cannot use.
Front, back and rotation
Known attributes go out with the crop so the endpoint skips classifiers it does not need — fewer things to get wrong, faster answers.
Fast live streaming analysis with AI
One state machine, shared by both deployment shapes. Everything here runs on your own CPU, before anything leaves the machine.
Motion gate
A mean frame-diff says whether the scene has settled. Nothing downstream fires while the card is still moving through the frame.
Identity gate
Each card in the frame is compared with the previous one by an AI model via embedding. It answers one question — same card, or new card?
Three-tier detection throttle
Detection runs often while something is moving, rarely on a static card, and barely at all on an empty mat. The tiers are per-side config, not code.
Cooldown, no-retry, forget-after
A card that failed to match is not retried on a loop; a card held in frame is not re-identified; a card gone long enough is analysed fresh when it comes back.
Call guard and watchdog
One identification in flight at a time, with a minimum interval and a timeout that unsticks the pipeline if the endpoint hangs. A slow call never stalls the stream.
Superfast results
The AI models behind cardstream run on your personal computer. The system is very fast and you do not need any GPU.
Supported video sources & types
Sources are pluggable; the analysis is identical whichever one you pick.
Cameras and files
A webcam index, a video file, a still image, or the browser webcam when you run the web UI. Good for testing a setup before the show.
Pull: RTSP, RTMP, SRT
Point it at an IP camera, an encoder or a restreamer and it pulls, with capped backoff reconnects when the feed drops.
Push: OBS straight in
Run it as a listener and let OBS push RTMP or SRT to it — one extra output next to the one feeding your marketplace.
WebSocket JPEG feeds
For homemade rigs: any process that can send JPEG frames over a socket is a valid source.
Three resolution knobs
What the camera captures, what gets sent, and what gets analysed are separate numbers. Analysis runs small and cheap; the crop that goes out for identification is re-cut from the full frame.
Frames stay yours
In client-side mode nothing leaves the machine except one JPEG crop per distinct card — not the stream, not the frames around it.
Our weights, or yours
Analyse live streams with our prepared model for CPU. Need higher accuracy or extreme speed? Train your own and deploy it on GPUs!
RF-DETR segmentation
The default locator: a finetuned instance-segmentation .onnx export through onnxruntime, no torch required. The mask gives the card’s four corners, so the paid crop is deskewed and cut tight at the card edge.
RF-DETR / RT-DETRv2 detection
Bounding boxes as the opt-in alternative — ONNX for speed, or a transformers directory / hub id when you are still iterating on a finetune.
Weights included
The RF-DETR locator and the embedding model are trained by Ximilar and published Apache-2.0 — the installer fetches them, so there is no training step between you and a working pipeline.
Embedder backends
Torch, ONNX or LiteRT/TFLite embedding models for the same-card gate — run whichever runtime you already have on the machine.
Heavy imports stay lazy
Torch is not a dependency of the core. Install only the extras your backends need and everything else still runs.
Any identification service
The identification call is one swappable step. Point it at Ximilar, at a proprietary recogniser, or at a model you host yourself.
One process, next to the camera
Detection and the gates run on your machine, from a single installable package, and the one identification call goes straight from it to the API.
Two entrypoints, one pipeline
A headless command for rigs and scripts, and a local browser UI when you want to watch it work. Both take the same flags and build the same pipeline.
One credential, held locally
Your Ximilar key, read from the environment on your own machine. No account to create here, no middle tier to trust, nothing to keep running but the process itself.
Nothing blocks the loop
JPEG decode, detection, HTTP and disk writes all run off the event loop. A slow frame is dropped, not queued into a growing lag.
Live settings dialog
Thresholds, category, game, set code and writing system are retunable from the browser mid-stream — and every control is generated from one descriptor list, so the UI and the validation cannot drift.
An overlay built for streams
State badge, bounding box, and a history of every card you showed with the time it stayed in frame. A debug panel when you want to see the gates thinking.
Offline test suite
The whole suite runs without a network or a model file — fakes for the ONNX sessions and the detectors. Fork it and you can still tell if you broke something.
Open source. Self-hosted. Your stream, your stack.
No platform in the middle, no seat licence: connect the Ximilar API or your own identification system, and cardstream calls it once per distinct card instead of once per frame. Whether you're breaking on Whatnot, running a Fanatics Live-style show, or streaming your own live commerce setup, run cardstream tonight on the hardware you already have.