Kiby is a Discord virtual pet system where users adopt a Kiby, maintain core needs, and progress through competitive/social long-term loops.
v2.2.0 introduces social system redesign (/playdate, /park), adventure danger-level UX updates, and expanded tutorial flow for social care.
- Guided onboarding tutorial:
- auto-start on first adoption
- replay/skip/status controls via
/tutorial - funnel telemetry in
PlayerProgress.onboarding
- Timezone-based sleep scheduling with autocomplete timezone input
- Automatic care decay and health simulation loops
- Mixed leaderboard with real players and baseline competitors
- Deterministic NPC simulation tiers (casual, active, competitive)
- Health endpoint, graceful shutdown, and container-first deployment
- Domain/service oriented architecture to support future Discord + web surfaces
- Expanded care kit:
/feed,/pet,/play,/cuddle,/train,/bathe - New
socialstat + mood-driven conversation and ambient Kiby behaviors - Player-local daily reset, streak shield, 3-slot quest board + bonus quest + reroll
- Expanded item economy with consumables, toys, and adventure support items
- Coin/item gifting with anti-abuse caps and fees
- Async adventures with baseline duration options, checkpoint damage, and wounded-return failure flow
- Adventure route expansion and risk loop updates:
- no BP route start gates
- Battle Power-dominant readiness
- recommended route tiers:
0 / 90 / 180 / 300 - new route: Obsidian Citadel
- ETA variance windows and completion notifications
- location visibility command (
/adventure locations)
- Dual event layer:
- personal random world events
- global campaign events with contribution rewards
- Global event enhancements:
- active-player goal scaling (24h activity window)
- developer manual event trigger (
/globalevent start) - scheduler-driven sporadic starts (eligibility + chance)
- random event durations (
24-72h) and random idle gaps (24-48h) - active-user start notifications (best-effort DM fanout)
- Redesigned social loop:
/playdate sendsupports direct 1-on-1 playdates with any Kiby (players + NPCs)- player-owned targets keep opt-in + inbound anti-spam cooldown
- non-NPC targets receive best-effort owner notification
/park send|status|leaveadds asynchronous social care with duration scaling
- Kiby language progression (v1):
- tokenized Kiby flavor text
- per-player translation unlock by exposure
/languagecommand
- Direct in-product feedback command (
/feedback) - Leaderboard modes:
- total
- season (weekly/bi-weekly cadence)
- players-only (developer-restricted)
- Title unlock/equip system shown in leaderboard entries
/adopt name:<name>: Adopt a Kiby/revive: Revive your most recent fallen Kiby/tutorial start|status|skip|replay/sleep schedule set timezone:<IANA> start:<12 AM...11 PM> duration_hours:<1-9>/sleep schedule view/sleep schedule clear/ambient view|set
/feed: Increase hunger + XP/pet: Increase affection + XP (allowed while asleep)/play: Increase affection + XP/cuddle: Increase affection + XP (allowed while asleep)/train: Primary Battle Power growth action/bathe
/shop list|buy: Purchase consumables/inventory: View item inventory and Star Coin balance/use: Consume an item to boost Kiby stats/gift coins|item(recipient DM notification on successful transfer)
/playdate send|settings/park send|status|leave/daily/quests view|claim|reroll/titles view|equip/events view|claim/adventure start|status|claim|locations/language/feedback category:<bug|balance|feature|ux|other> message:<text>
/info: View your Kiby profile and rank/cooldowns: View action cooldowns + current sleep state/leaderboard: View mixed top leaderboard/help: Command reference/ping: Latency check
/system mode:<active_72h|all_installed> subject:<text> body:<text>/globalevent start event:<event_key>
Behavior notes:
/events viewnow shows an idle state when no global event is active./events claimcan return no-active-event when no campaign is currently running./playdate sendcan return receiver cooldown with remaining wait time./system mode:all_installedtries multiple candidate channels per server until one broadcast send succeeds.
- Node.js 20+
- MongoDB 7+
- Discord bot token and application
npm install
cp .env.production.example .envSet required values in .env:
TOKENMONGO_CONNECTION
npm startnpm run dev
npm run lint
npm run test
npm run seed:npcs:resetdocker build -t kiby:2.2.0 .
docker run --env-file .env -p 8080:8080 kiby:2.2.0docker compose up --buildHealth check endpoint:
GET /healthonHEALTH_PORT
Legal policy files:
docs/legal/README.md(index/current links)docs/legal/terms/(versioned Terms of Service)docs/legal/privacy/(versioned Privacy Policy)
Use .env.production.example for all supported variables, including:
- Runtime/logging
- Care simulation intervals
- Default sleep schedule
- NPC population and tick cadence
- Battle Power and adventure tuning
- Global event scaling constants
- Kiby language progression tuning
docs/architecture.mddocs/gameplay.mddocs/deployment.mddocs/policy.mddocs/commands.mddocs/testing.mddocs/roadmap-completion.md
src/mediais intentionally gitignored and required at runtime for embed assets.- This release is treated as a fresh production launch; no live migration path is assumed.
- Global campaign events are intentionally sporadic (non-daily deterministic cadence).
