Codex Pets
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
Community gallery for Codex-compatible animated pets with local accounts,
manual moderation, public generation requests, YDB-backed asset storage, and
public detail pages for approved and pending pets.
Public site: https://pets.ydb-qdrant.tech/.
My generations in this browser
/my-generations lists tasks accepted here and available private results explicitly
opened in the same browser, without signing in. Each entry stores only its private
capability ID and saved/expiry timestamps in browser storage. Descriptions and
images are not stored in this history. Keep browser data and private links safe;
anyone with access to either can open the corresponding result.
Statuses use the existing per-generation GET endpoint, with at most three reads
at once. Live tasks refresh; ready/failed tasks stop polling. This view never
creates, retries, cancels or publishes a task. Results still expire 24 hours after
acceptance. History retains the latest 50 entries for seven days after expiry;
expired entries cannot be opened. Clearing browser data removes this list, but
does not reset quotas or cancel tasks. Earlier unknown links cannot be recovered;
opening an existing available private link adds it to this browser's list.
The history, form and result pages exclude analytics and search indexing. History
has private/no-store and no-referrer headers. There is no IP-based ownership lookup,
account synchronization, server-side history enumeration or new database schema.
Generate a pet through remote MCP
generate_pet accepts a text prompt (1–2000 characters), optional displayName (up to 80 characters), and a fresh random UUID requestId. Reuse that requestId with identical content after a disconnected response: no duplicate task or extra quota. Changed content with the same ID is rejected. Keep request and generation IDs private.
Poll get_pet_generation(generationId) every 5 seconds. A completed job returns an unlisted preview and downloads: pet.json, lossless spritesheet.webp, and pet.zip. Format v2 is 1536×2288 with 9 animation states and 16 look directions. Results expire 24 hours after acceptance; idempotency hashes remain 7 days. Completed new tasks include editable name/description/tags. The private preview saves description changes atomically into pet.json and ZIP; tags are stored for the gallery submission. Saving is free of provider calls, keeps the sprite bytes unchanged, requires the current metadata revision and is disabled after submission. Existing completed tasks can be edited manually without a new model call. An unavailable or unknown metadata response leaves a usable image package and manual fields; it is never retried automatically, and unknown charges retain an accounting marker. The tool never publishes into the gallery. Before expiry, use **Submit for review** on the private result page to save a permanent gallery package and one pending submission, or upload the ZIP through /submit. Submission retries return the same receipt, including after a lost response. Anyone holding the private link can submit that result once; if signed in, the first submitter owns the submission. Contacts stay private. Submitting the saved package makes no generation-provider calls and does not change generation quotas. Later approval can prepare metadata and search embeddings through the existing admin workflow.
The operator funds twelve GPT Image 2.5 Sunburst/high stages per task through sprite-gen 2.44.0: one base and eleven rows. After the base, up to eleven rows run concurrently. Each failed image stage can receive one retry after five seconds for RemoteDisconnected, IncompleteRead, HTTP 500 or HTTP 520, so the maximum is 24 image attempts. Successful stages are never repeated. New tasks then make at most one gpt-6.1-sol text/vision request to draft an English name, description and tags; metadata is not retried automatically.
The website form at /generate and remote MCP share one queue. Limits are 200 accepted tasks/day globally, 10/IP by default, one active task and five waiting, counted by Moscow calendar day. Waiting expires after 30 minutes and failed tasks consume quota. Fully recorded terminal provider failures are isolated to their failed task; unconfirmed writes, lost leases and unclassified outcomes pause further paid work for operator review. A $50/day threshold checks recorded usage without monetary reservations. In-flight calls and unknown charges can exceed that amount; unknown-cost markers remain across task expiry and midnight. The prompt form and private previews exclude analytics/Webvisor. See row recovery and accounting for the operational contract.