Trust & Safety at Fablyos
Fablyos is an AI interactive-fiction platform. Every story, picture and player action is screened before it is shown, through a layered safety pipeline described below. This page documents that pipeline, the specific systems behind it, and exactly what is allowed and blocked at Fablyos's content ceiling, Mature. It is a technical companion to our Terms of Service and Privacy Policy, which remain the governing legal documents; if this page ever conflicts with them, they control.
Fablyos's codebase has no Explicit content level: Mature (18+) is the highest level that exists in the software, not merely the highest one enabled. Strong language and graphic violence are permitted, but sexual content is limited to non-explicit intimacy that fades to black, and no explicit nudity is ever generated. Age for the site itself is self-declared at signup (Section 2 of the Terms); Fablyos does not run a third-party identity or age-verification service, since no content level on this site requires one.
1. The Moderation Pipeline
Every piece of player input, every AI-written passage, and every generated picture passes through the same layered pipeline before it reaches a player. Each layer exists to catch what the layer before it might miss, and the system is designed to fail closed: if a check can't be reached, the content is blocked or the level is capped rather than let through.
- Local pattern screen — an instant, deterministic regex layer that runs on every line before anything is sent to a model. It flags sexual terms appearing near minor/child wording or near the name of a protected (under-18 or childlike) character in the active story, and flags the restricted themes (incest, bestiality, non-consent, mind control, sexual violence, trafficking) when they sit close to sexual content. This layer runs independently of any model, so it isn't subject to prompt-based manipulation (role-play framing, instructions to the AI, and the like); like any fixed pattern list it is in principle susceptible to sufficiently indirect phrasing, which is why the layers below exist to catch what it misses.
- Protected-character tracking — every character card in a story is evaluated for age. A character under 18, of unknown/unstated age, or described in childlike terms is marked protected and is blocked from sexual or intimate content at every level, regardless of any age the player later claims for them. Ordinary animals and non-sapient creatures are tracked separately and are never treated as "minors," but bestiality itself is a blocked theme independently (see Section 2).
- OpenAI Moderation API (
omni-moderation-latest) — every passage of text is scored for sexual content, sexual content involving minors, and graphic violence. Every generated image (and, for video clips, every sampled frame) is scored for sexual content and graphic violence only: OpenAI's sexual/minors category applies to text, not to images. A text sexual/minors flag, or a high sexual score paired with any local hard-screen hit, is a hard block and a strike on the account, at every content level, with no exception. A picture's protection against depicting a protected character sexually rests primarily on the layer above: the scene description an image is generated from has already passed the text checks, and an image is never requested for a scene those checks would have blocked. The next layer adds an independent second look at the picture itself. - Picture guard — a second, independent model call (via Hive) looks at every generated picture and video frame and is asked whether anyone shown appears to be under 18, and if so, whether they are shown in revealing or suggestive clothing or pose. This is a visual-plausibility signal on the finished image, not an identity or age-verification service, and it supplements rather than replaces the checks above. It currently runs in logging mode on Fablyos while its sensitivity is tuned against real output before enforcement is switched on; see Section 2 for its current status.
- Content-level limits — General, Teen and Mature each carry their own numeric ceiling on the moderation model's sexual and violence scores (see Section 3). A story running at Mature is held to the Mature ceiling on every passage and every picture it generates.
- Multilingual AI theme classifier — the pattern screen is English-only and can be paraphrased around. Any passage that scores above a sexual-content threshold is additionally judged by a dedicated classifier call (routed through our OpenRouter integration) that reads the restricted-theme list in whatever language the text is written in and returns a structured yes/no per theme. This call is itself fenced: the text under review is always treated as data to classify, never as instructions to follow.
- Prompt-injection / misuse guard — the story input box is only for playing the story. Separate pattern checks catch attempts to use it as a general-purpose AI (asking it to write code, extract its own system prompt, ignore its instructions, or break character). These are refused without affecting content safety, and repeated attempts trigger a temporary account cooldown rather than a safety strike.
- Fail-closed enforcement — if the OpenAI moderation service is unreachable, new stories are capped at Teen and new pictures are refused outright until it recovers. The pipeline is designed so that nothing reaches a player without passing through it first.
Blocked content is discarded immediately and is never stored, logged or retained — only metadata about the block itself is kept (timestamp, account, story, pipeline stage, block category, and the numeric moderation scores behind it), for abuse-pattern detection and the strike system below.
OpenAI's Moderation API is a general-purpose content classifier; OpenAI's own documentation states that it is not designed for, and should not be relied on for, CSAM detection or CSAM handling, and Fablyos does not use it as such. Fablyos does not operate a separate CSAM hash-matching or dedicated child-safety detection service of any kind. The protection against this category of content is preventive, not detective: the pattern screen and protected-character tracking above both run before any model is called at all, and are what keeps this content from being requested or generated in the first place. The legal reporting obligation below covers anything that nonetheless surfaces.
Strikes & enforcement
A confirmed hard-rule hit (sexual content involving a minor or protected character) adds a strike to the account. Three strikes within any 30-day period automatically and immediately suspends the account (Terms §6.4). Non-hard blocks (a passage that merely exceeds the story's content-level ceiling, or a misuse/prompt-injection attempt) are logged but do not count as strikes; repeated misuse instead triggers a temporary cooldown on new story turns. Fablyos complies with all applicable legal reporting obligations, including reporting apparent child sexual abuse material to the National Center for Missing & Exploited Children under 18 U.S.C. § 2258A, and cooperates with lawful law-enforcement requests.
2. Technologies Employed
| Layer | Technology | Role | Status on Fablyos |
|---|---|---|---|
| Text & image moderation | OpenAI Moderation API (omni-moderation-latest) |
Scores every passage of text for sexual content, sexual content involving minors, and graphic violence (the primary classifier behind every level ceiling and the text minors hard-block); scores every generated image and, for video clips, every sampled frame for sexual content and graphic violence only — the minors category is text-only and is not applied to images. Not designed for, and not used as, CSAM detection (see Section 1). | Active, every request |
| Theme classification | Dedicated LLM classifier call via OpenRouter (model configurable server-side, temperature 0, structured JSON output) | Multilingual judgment of the restricted-theme list (Section 3) on any passage the moderation model scores as sexual; results are cached per passage hash to avoid re-checking identical text. | Active |
| Story & passage generation | OpenRouter (model-routing layer) | Writes story text under the active content level's rules; Fablyos runs this traffic on a dedicated API key with a prompt-injection guardrail enabled, separate from other Fablyos properties. | Active |
| Image & video generation | Wiro | Generates story pictures and clips from prompts that are themselves built under the active content level's limits. Fablyos uses only the standard, content-moderated image and video models offered through Wiro, never models sold as "uncensored" (the server refuses to start a picture or clip on a model whose name says so). The provider's own filtering is an extra layer that Fablyos does not control and that can change; it does not replace Fablyos's own checks, and it is not a guarantee (Section 5). Generated media is not retained by Fablyos or by Wiro after delivery (Privacy Policy §6). | Active |
| Deterministic pattern screen | In-house regex engine (safety.py) |
Instant, non-model first layer: minors/sexual proximity detection, protected-character name matching, and restricted-theme pattern matching; not subject to prompt-based manipulation since no model is involved, though a fixed pattern list can in principle be evaded by sufficiently indirect phrasing (see Section 5). | Active |
| Rate limiting & abuse control | In-house, per-account | Caps turns and image requests per minute per account, independent of content moderation. | Active |
| Picture guard | Hive vision-language model | A second look at every generated picture and video frame: asks whether anyone shown appears to be under 18 and, if so, whether they are shown revealingly or suggestively. A visual-plausibility signal on the finished image, not an identity or age-verification service. | Active, logging only — results are recorded and reviewed, but a flagged picture is not yet withheld, while its sensitivity is tuned against real output |
This layer does not verify anyone's actual age or identity; it estimates how a character in a finished image appears, the same way a human reviewer would look at a picture. Fablyos's codebase has no identity or document-based age-verification service, and no real-person/likeness-matching service, because no Explicit content level exists in the software for either to gate. Fablyos verifies account age by self-declaration only (Terms §2).
3. Content Levels
Every story runs at one of three content levels, chosen by the player and enforced on every passage and picture the pipeline produces. Mature is both Fablyos's ceiling and the highest level that exists in the codebase; there is no Explicit level for the site to offer or withhold.
| Level | Audience | What it allows |
|---|---|---|
| General | All ages | Bloodless action, no swearing, innocent romance (hand-holding, a brief kiss). No sexual content, nudity or innuendo. The only level where graphic violence is filtered outright. |
| Teen | 13+ | Action violence with some blood, injuries and deaths, without lingering gore. Flirting, kissing, light innuendo at most. No nudity or sexual content. |
| Mature Fablyos ceiling | 18+ | Strong language. Graphic violence and gore when the scene earns it. Adult romance and sexual tension; intimate scenes fade to black before explicit detail; brief non-explicit nudity is acceptable. No explicit nudity in pictures (no exposed genitals or nipples). |
4. Allowed & Blocked Categories at Mature
The following applies to every story on Fablyos, which runs at Mature or below.
Allowed at Mature
- Strong language
- Graphic violence and gore the scene earns
- Combat injuries, blood, detailed wounds and deaths
- Adult romance and sexual tension between clearly adult characters
- Intimate scenes that fade to black before explicit detail
- Brief, non-explicit nudity (no exposed genitals or nipples, in text or pictures)
- Consensual dominance, restraint and roughness between adults that injures no one
- Villains, slavery, historical or fictional wrongdoing, and dark themes as plot elements (non-sexual)
- Sapient humanoid characters (beastkin, elves, demons, shapeshifters in human/hybrid form) as persons, not animals
Blocked at every level, including Mature — no exception
- CSAM / CSEM, in any form
- Sexual content involving minors or age-ambiguous/childlike characters
- Sexual or intimate content depicting real, identifiable people
- Bestiality / zoophilia (animals, non-sapient creatures, or a full animal-form shapeshifter)
- Non-consensual sexual content, incl. rape imagery
- Incest (blood, adoptive or step relations)
- Sexual violence (choking, striking, drawing blood, weapons or torture during sex)
- Sex trafficking / forced or coerced sex work
- Sexual content under mind control, hypnosis or compulsion (magical or otherwise)
- Explicit sexual content or explicit nudity — no content level on this site permits it
- Any content unlawful in the United States or the user's jurisdiction
"Minors or age-ambiguous/childlike" is defined broadly and deliberately: any character who is, appears to be, or is described as under 18, whose age is ambiguous, or who is described or drawn with childlike features — regardless of any stated in-fiction age, species or other claimed attribute. Age-ambiguous characters are treated as protected by default until a story establishes otherwise (fail closed).
5. Scope & Limits
Everything in Section 1 describes Fablyos's intended controls and fail-closed design, not a guarantee of perfect prevention. A fixed pattern list can in principle be evaded by sufficiently indirect phrasing; a classifier can misjudge; and software, this codebase included, can contain implementation defects. Automated moderation is imperfect in the other direction too: it may occasionally block content that would be acceptable, and no automated system is guaranteed to catch everything it's aimed at. Fablyos has no obligation to permit any particular content, and reviews or removes content, suspends or terminates accounts, at its discretion. See the Terms of Service for the full legal terms and the Privacy Policy for data handling, retention and third-party processors.
6. How to Report a Safety Concern
Players can report any passage or picture directly within the story using the Report button that appears on every passage and picture. You may also contact us through Send feedback in the Library, or by email at support@fablyos.com.
When you submit a report:
- What to include. Select the reason that best describes the concern; add a note if it helps. The passage text is included by default so we can act on it; you may untick that option. No story text is included with a report about minors.
- What happens next. Reports go to a monitored queue. The Operator reviews credible reports and may restrict or remove content or suspend an account while the review is under way. We do not promise a specific response time; we do take every report seriously.
- Suspected illegal material. If a report involves apparent child sexual abuse material or other content that may be unlawful, it is handled under a separate restricted-access procedure and is not routed through general review channels. Fablyos reports apparent CSAM to the National Center for Missing & Exploited Children as required by 18 U.S.C. § 2258A and cooperates with lawful law-enforcement requests.