Under the hood
How Daeva Looks is built
A tour for curious players and developers: a small, mostly serverless setup run on free and low-cost tiers.
The pieces
Daily indexer
A GitHub Actions job runs every day. It reads the public Style Shop, makes SigLIP 2 image embeddings for each preset, adds style tags and thumbnails, and uploads the index to Cloudflare R2.
The website
A static SvelteKit app served by Cloudflare. It has no server of its own; everything dynamic goes through the Worker.
Cloudflare Worker
Our small API at the edge. It serves the index from R2 with edge caching, keeps accounts, favourites, collections and roadmap votes in a D1 database, and renders the /looks pages for search engines.
Search server
A small Oracle Cloud VM in the US runs the text half of the same open SigLIP 2 model (8-bit). It also runs our uptime monitor and database backups.
Sign-in
Optional, with Discord only. The Worker handles the sign-in and keeps a session cookie.
Roadmap moderation
Suggestions are checked and sorted by Meta’s open Llama model on Cloudflare Workers AI, never an outside AI company.
What happens when you search
- Chinese and Korean words are mapped to English in your browser.
- Your browser sends the text to the Worker’s /api/embed.
- The Worker checks Cloudflare’s cache (vectors kept 30 days, keyed by a hash of the text).
- On a miss it asks our search server, which turns the text into a vector of numbers.
- Your browser ranks all ~11,800 presets against that vector and shows the closest.
- If the server can’t be reached, or you chose to run AI on this device only, the browser downloads the model (about 320 MB once) and does it all locally.
- Character-name searches fetch a reference picture from AniList or Wikipedia and run the image model in your browser (about 190 MB once).
We don’t log your search text with your account or IP, and it never goes to an AI company. More on the About AI page and in our Privacy Policy.