{"id":52167605,"url":"https://github.com/coldbricks/Chloe-Vibes","last_synced_at":"2026-08-29T15:01:14.010Z","repository":{"id":344088816,"uuid":"1180382309","full_name":"coldbricks/Chloe-Vibes","owner":"coldbricks","description":"Converts sound into calibrated haptic force in real time. Deterministic, dual-client, parity-locked.","archived":false,"fork":false,"pushed_at":"2026-08-08T23:36:04.000Z","size":92709,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2026-08-09T07:41:47.744Z","etag":null,"topics":["android","ble","bluetooth-low-energy","haptic-feedback","haptics","kotlin","lovense","nsfw","open-source","remote-control","sex-tech","teledildonics","vibrator"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/coldbricks.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"claude":"CLAUDE.md","gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null}},"created_at":"2026-03-13T01:37:55.000Z","updated_at":"2026-08-08T23:36:00.000Z","dependencies_parsed_at":"2026-08-09T01:25:43.301Z","dependency_job_id":null,"html_url":"https://github.com/coldbricks/Chloe-Vibes","commit_stats":null,"previous_names":["coldbricks/chloe-vibes"],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/coldbricks/Chloe-Vibes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coldbricks%2FChloe-Vibes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coldbricks%2FChloe-Vibes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coldbricks%2FChloe-Vibes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coldbricks%2FChloe-Vibes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coldbricks","download_url":"https://codeload.github.com/coldbricks/Chloe-Vibes/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coldbricks%2FChloe-Vibes/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36971620,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-22T15:14:58.755Z","status":"online","status_checked_at":"2026-08-29T02:00:05.978Z","response_time":51,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","ble","bluetooth-low-energy","haptic-feedback","haptics","kotlin","lovense","nsfw","open-source","remote-control","sex-tech","teledildonics","vibrator"],"created_at":"2026-08-10T01:00:48.201Z","updated_at":"2026-08-29T15:01:14.004Z","avatar_url":"https://github.com/coldbricks.png","language":"Rust","funding_links":[],"categories":["Applications"],"sub_categories":["Audio Sync"],"readme":"# ChloeVibes\n\n### Audio-reactive haptics for **Windows** and **Android**\n\n**System audio → calibrated force** in real time. One signal engine, two clients, parity-locked in CI — not a slider toy bolted onto a BLE chat.\n\n| | |\n|--|--|\n| **Version** | [**v1.5.1**](https://github.com/coldbricks/Chloe-Vibes/releases/latest) |\n| **Clients** | Windows (Rust · egui) · Android (Kotlin · Compose) |\n| **Devices** | Lovense BLE · Buttplug / Intiface (desktop) |\n| **Sister app** | [**ChloeVR**](https://github.com/coldbricks/ChloeVR) — XR cinema + stage (shares this engine’s beat DNA) |\n| **Author** | [Ash Airfoil](https://github.com/coldbricks) |\n\n[![Release](https://img.shields.io/github/v/release/coldbricks/Chloe-Vibes?style=flat-square)](https://github.com/coldbricks/Chloe-Vibes/releases)\n[![License](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](LICENSE)\n[![Platform](https://img.shields.io/badge/Windows%20%7C%20Android-haptics-informational?style=flat-square)](https://github.com/coldbricks/Chloe-Vibes/releases)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/logo.png\" alt=\"ChloeVibes wordmark\" width=\"720\" /\u003e\n\u003c/p\u003e\n\n---\n\n## What it does\n\n```\n┌──────────────────────┐     ┌──────────────────────┐\n│     WINDOWS          │     │       ANDROID        │\n│  WASAPI loopback     │     │  Visualizer / mic     │\n│  Buttplug · Intiface │     │  Direct Lovense BLE   │\n│  FIND BOOM tuner     │     │  Same engine (port)   │\n└──────────┬───────────┘     └──────────┬───────────┘\n           │                            │\n           └──────────┬─────────────────┘\n                      v\n              fixed signal chain\n         FFT → gate → beat → ADSR → out\n                      v\n                 device 0…20\n```\n\nPlay music. ChloeVibes listens to the system mix, finds the punch (kick, hat, pad…), and drives a haptic device with a **musical envelope** — not a raw loudness follower unless you ask for one.\n\n**Default path = Bass Drum boom:** instant peak, long musical decay, near-zero floor. Press **FIND BOOM** once to auto-tune band / gate / trigger / envelope to whatever is playing.\n\n\u003e **Safety.** This commands a physical device on a body. Desktop has a dead-man watchdog, panic-stop, and verified stop-all. Android does not yet have a watchdog. You own the ceiling. Red **Stop all devices** is always the right move.\n\n---\n\n## Screenshots (app UI only)\n\nDocs show the **console UI** only — no device photography, no adult media. The product is adult haptic software; the surfaces below are pro-audio style controls.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/demo.gif\" alt=\"Desktop console meters tracking live audio\" width=\"820\" /\u003e\u003cbr\u003e\n  \u003cem\u003eDesktop console — output level and envelope tracking live system audio (Advanced FFT + ADSR).\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/screenshot-windows.png\" alt=\"Windows desktop console\" width=\"820\" /\u003e\u003cbr\u003e\n  \u003cem\u003eWindows — transport, gate, spectrum, envelope, presets, device panel.\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/screenshot-android.jpg\" alt=\"Android signal chain\" width=\"280\" /\u003e\n  \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003cimg src=\"assets/screenshot-android-climax.jpg\" alt=\"Android Climax controls\" width=\"280\" /\u003e\u003cbr\u003e\n  \u003cem\u003eAndroid — signal chain (left) and optional Climax engine (right).\u003c/em\u003e\n\u003c/p\u003e\n\n---\n\n## Install (prebuilt)\n\n1. Open the [**latest release**](https://github.com/coldbricks/Chloe-Vibes/releases/latest)\n2. Download:\n   - **Windows:** `ChloeVibes-windows-x64.exe`\n   - **Android:** `ChloeVibes-android.apk` (debug, sideload)\n3. **Windows:** run the exe. Prefer [Intiface Central](https://intiface.com/central/) on `ws://127.0.0.1:12345`; if nothing is listening, the app starts an embedded Buttplug server.\n4. **Android:** sideload the APK, grant mic / nearby devices as prompted (Visualizer needs `RECORD_AUDIO` even for system audio).\n\nStable rolling links (same binaries as the versioned Latest when kept in sync):\n\n| Platform | URL |\n|----------|-----|\n| Windows | `https://github.com/coldbricks/Chloe-Vibes/releases/latest/download/ChloeVibes-windows-x64.exe` |\n| Android | `https://github.com/coldbricks/Chloe-Vibes/releases/latest/download/ChloeVibes-android.apk` |\n\n---\n\n## Quick start\n\n| Step | What to do |\n|------|------------|\n| 1 | Connect the device (scan → enable) |\n| 2 | Play a track with a clear kick |\n| 3 | Press **FIND BOOM** (desktop) or pick **Bass Drum** / a BOOM tempo macro |\n| 4 | Raise volume / multiplier only as far as you mean to |\n| 5 | **Stop all devices** when done |\n\nExpert knobs (trigger shape, slew, curves) live under **OVERRIDE** — the main surface is presets + FIND BOOM.\n\n---\n\n## What’s new in v1.5.1\n\n| Area | Change |\n|------|--------|\n| **Prefire that lands** | Strength floor + one-shot latch; Gate→Beat order; 50 ms lead |\n| **Motor-honest rests** | Silence-class hard-snap; micro-pauses 90–120 ms; BLE peak-hold bypass |\n| **Edge \u0026 Deny live** | Climax ON; deep deny true-rest; post-deny punch; dual-motor climax wired |\n| **Android dead-man** | 2 s pipeline watchdog + sticky Stop all |\n| **Boom catalog** | Deep 90 / Club 125 / Hard 140 honesty + velocity upgrade |\n\nv1.5.0: FIND BOOM · Domi hang · UI declutter · crash hardening.\n\n---\n\n## Signal chain (invariant)\n\nOrder never changes on either client:\n\n```\nSYSTEM AUDIO\n    → Spectral (2048-pt FFT, 8 bands)\n    → Gate (hysteresis · optional auto)\n    → Beat (onset · tempo · 50 ms pre-fire + confidence decay)\n    → ADSR (A/D/S/R · curves · overshoot)\n    → Climax (optional · off by default)\n    → Output map (0…20 · asymmetric slew)\n    → BLE / Buttplug\n```\n\nDesktop can switch to **Original Chloe Vibes (RMS)** loudness mode. Android always runs the advanced chain.\n\nDeep dive (parity, protocols, limitations, build): [`docs/TECHNICAL_REFERENCE.md`](docs/TECHNICAL_REFERENCE.md)  \nDesign notes: [`docs/AUTO_LOCK_DESIGN.md`](docs/AUTO_LOCK_DESIGN.md) · [`docs/TEMPORAL_ARCHITECTURE.md`](docs/TEMPORAL_ARCHITECTURE.md)\n\n---\n\n## Device support\n\n| | Windows | Android |\n|--|---------|---------|\n| Transport | Buttplug 9 → Intiface (or embedded) | Direct Lovense BLE (NUS) |\n| Reach | Anything the server exposes | Lovense over BLE |\n| Dual-motor | Per actuator index | **Edge / Edge 2 only** (fixture-verified) |\n\n---\n\n## Build from source\n\n```bash\n# Desktop\ncargo build --release\ncargo test\ncargo test --test parity\n\n# Android\ncd android \u0026\u0026 ./gradlew assembleDebug testDebugUnitTest\n```\n\n| | |\n|--|--|\n| **Desktop package** | `chloe-vibes` (Cargo) |\n| **Android applicationId** | `com.ashairfoil.chloevibes` |\n| **Android SDK** | min 26 · target / compile 35 |\n| **Version** | 1.5.1 · versionCode 6 |\n\nCI: `fmt` · `clippy -D warnings` · release build · Rust + Kotlin parity golden.\n\n---\n\n## Architecture\n\n```\nWindows                         Android\n───────                         ───────\neframe / egui console           Jetpack Compose UI\nWASAPI capture thread           Visualizer / mic\nsrc/audio.rs  ──────── parity ─→ Kotlin engine port\nsrc/auto_lock.rs (FIND BOOM)    (presets mirrored)\nButtplug client                 BleDeviceManager\n```\n\n---\n\n## Releases\n\n| Version | Notes |\n|---------|--------|\n| **v1.5.1** (local / tryout) | Peak-feel WAVE-002 · prefire · Edge \u0026 Deny · Android watchdog |\n| **[v1.5.0](https://github.com/coldbricks/Chloe-Vibes/releases/tag/v1.5.0)** | FIND BOOM · Domi hang · UI declutter · crash hardening |\n| [v1.4.0](https://github.com/coldbricks/Chloe-Vibes/releases/tag/v1.4.0) | AUTO-LOCK beat lock + punch |\n| [v1.3.0](https://github.com/coldbricks/Chloe-Vibes/releases/tag/v1.3.0) | Reliability · safety · first AUTO-LOCK |\n\nAlways prefer the [**latest release**](https://github.com/coldbricks/Chloe-Vibes/releases/latest).\n\n---\n\n## Status\n\nActively developed on real hardware (Domi / Edge). Desktop is the FIND BOOM + safety reference; Android tracks the same engine via parity CI.\n\n---\n\n## Credits\n\n**Ash Airfoil** — product, signal taste, hardware QA  \nStack: **Rust** · **egui** · **Buttplug** · **Kotlin Compose** · **Lovense BLE**\n\n---\n\n## Privacy \u0026 content\n\nChloeVibes is a **local control surface**. It does not host media or device catalogs.  \nYou provide the audio and the hardware. Adult-oriented product; repository screenshots are UI-only.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoldbricks%2FChloe-Vibes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoldbricks%2FChloe-Vibes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoldbricks%2FChloe-Vibes/lists"}