All examples set the flag via the dashboard PATCH endpoint:
curl -X PATCH https://api.vilow.dev/v1/me/feature-flags \
-H "Cookie: vilow_session=…" \
-H "Content-Type: application/json" \
-d '{"flags": {"relationship_progression_speed": "fast"}}'
Relationship dynamics
How fast trust and friendship grow, and where the arc starts/ends.
relationship_progression_speed
default: normal
Multiplier on positive trust/friendship deltas the model emits each turn. Negative deltas always apply at full speed.
slow ×0.3 — companion / therapy apps where bonds form over weeksnormal ×1.0 — generic companion appfast ×3.0 — game NPCs that need the arc in an hour
relationship_starting_stage
default: strangers
Where new characters begin. Use acquaintance for therapy bots — they shouldn't feel like total strangers from message one.
strangers · acquaintance · friends · close_friends · romanticrelationship_max_stage
default: null (no cap)
Hard ceiling on how deep the relationship can go. Useful for professional bots where romance is inappropriate.
null · strangers · acquaintance · friends · close_friends · romanticBackground life
Server-side life simulation — events that happen to the bot between chats.
life_intensity
default: normal
How often events spawn during background ticks. Calm bots feel steady; dynamic bots feel "alive" with constant micro-drama.
calm 20%/tick, every 4h · normal 45%/tick, every 2h · dynamic 70%/tick, every 1hevent_tone
default: balanced
Reweights the event pool toward upbeat / mixed / realistic outcomes.
positive heavy positive bias (companion/dating)balanced mild positive bias (default)realistic 50/50 positive/negative
allowed_themes
default: null (all)
Whitelist of event themes. null = all themes allowed.
["work", "family", "hobby", "social", "health", "travel"]blocked_themes
default: []
Subtractive blocklist. Takes precedence over allowed_themes.
allowed_themesProactivity
Should the bot reach out unprompted? You poll POST /proactive/check; flags below shape the answer.
proactive_enabled
default: false
Master switch. Off by default — opt in.
true · falseproactive_frequency
default: medium
Controls cooldown between proactive messages.
low 24h cooldown, max 1/daymedium 8h cooldown, max 3/dayhigh 3h cooldown, max 5/day
proactive_max_per_day
default: derived from frequency
Override the per-day cap.
proactive_quiet_hours
default: []
UTC time ranges when proactive checks return block: "quiet_hours".
"HH:MM-HH:MM" strings, e.g. ["22:00-08:00"]. Wraps midnight ok.Intimate mode
Three-layer adult-content gating: tenant flag, per-character consent, post-filter.
intimate_mode
default: off
Tenant-wide gate. Even per-character consent does nothing when this is off.
off — no intimate content, post-filter blocks itconsent_required — explicit per-character opt-inalways_on — no per-character consent needed (age gate still applies)
age_gate_required
default: true
Whether character.age_confirmed must be true to grant consent.
true · falsemax_intimacy_level
default: 1.0
Cap on the model's reply_intimacy_level output. Above this → post-filter replaces with a soft fallback.
Reply style
Surface-level formatting of bot replies.
reply_style
default: actions
Whether the bot weaves *physical actions* into ~60-70% of replies.
actions — companion / RP feel (e.g. *smiles softly*)plain — therapy bots, business NPCs, voice-only flows
AI disclosure
How the bot reacts when the user directly asks "are you an AI?".
ai_disclosure
default: soft_admit
Three handling modes for the AI-identity question.
soft_admit — admit lightly, redirect to the conversationin_character — stay in role, deflect playfully (game NPCs, fiction)honest — proactively transparent (clinical / regulated contexts)