← Back
diveshpatil9104

diveshpatil9104/mikey

Turn your Android phone into a high-quality PC webcam & studio microphone! Stream 1080p video & low-latency Opus audio over USB (ADB), Wi-Fi & Bluetooth. Features RNNoise AI noise reduction, AEC & DirectShow virtual camera. Fast, privacy-first, zero cloud, no accounts, 100% open source. Faster alternative of DroidCam, Iriun & WO Mic.

View on GitHub ↗
androidaudio-streamingbluetoothdroidcam-alternativeecho-cancellationkotlinlow-latencymicrophonenoise-cancellationopen-sourcephone-as-webcamrustusbvideo-streamingvirtual-cameravirtual-microphonevirtual-webcamwebcamwifiwomic-alternative
Stars
38
Forks
4
Watchers
38
Open issues
7
Contributors
5
Language
Rust
License
MIT License
Default branch
main
Created Sep 25, 2026Updated Oct 1, 2026

Star growth

Today—
This week—
This month—

Star history will appear here once this repo has been tracked for a couple of days.

README

Mikey: your Android phone as a webcam and mic for your PC, over USB, Wi-Fi or Bluetooth

Download CI License: MIT Discussions Stars

Plug in. Tap once. Forget it exists.

The camera and microphone in your phone are far better than the ones built into most laptops. Mikey turns them into a webcam and mic that every app on your PC can use: Google Meet, Zoom, Teams, Discord and OBS. No accounts, no cloud, no setup ritual.

Note

v0.1.0 is an early preview for Windows 10 / 11 and Android 8.0+. If something doesn't work, please open an issue.


Features

  • Mic and webcam in one app. Your phone shows up on the PC as a microphone and as Mikey Cam, in any app.
  • Connects by itself. Mikey picks the best link (USB, Wi-Fi or Bluetooth) and moves to a better one when it appears, without dropping your call.
  • Clear voice. Raw 48 kHz audio from the phone, lossless over USB, with noise suppression on the PC.
  • Low delay. A 20 ms audio buffer over USB and 40 ms over Wi-Fi, growing only when the link is unsteady.
  • Private by design. No accounts and no cloud: everything stays on your own cable or network. Mic and camera start off, and a new phone needs your OK on the PC.
  • Light. A small native tray app written in Rust. No Electron, no web view.

Works on

  • PC: Windows 10 and 11. Linux is in progress: the PC app builds there, but has no virtual mic, camera, tray or Bluetooth yet.
  • Phone: Android 8.0 or newer.

Get started

1. Download Mikey

From the latest release:

File Where it goes
Mikey-v0.1.0-windows-x64.exe Your PC. Run it and Mikey appears in the system tray.
Mikey-v0.1.0-android.apk Your phone. Android asks to allow installs from your browser or files app the first time.

Mikey isn't code-signed yet, so Windows SmartScreen may warn you: click More info, then Run anyway.

2. Connect

  • USB: turn on USB debugging on the phone, plug it in, and tap Allow on the phone. The PC needs Android platform-tools (adb) on its PATH.
  • Wi-Fi: put the phone and PC on the same network, and let Mikey through the firewall (how).

Open Mikey on the phone and tap the mic or the camera. The first time, click Allow on the PC to trust your phone.

3. Pick Mikey in your app

In Meet, Zoom or Teams, choose Mikey Mic as the microphone and Mikey Cam as the camera.

Something not working? See Troubleshooting.

Build from source instead

You need Rust and Android Studio (Quail 4 or newer).

git clone --recursive https://github.com/diveshpatil9104/mikey.git
cd mikey/pc
cargo run --release

Then open the android folder in Android Studio and press Run to install the phone app (more ways).

Running from the source folder also enables the panel's Setup Mic button: click it once and approve the administrator prompt to automatically configure Mikey Mic.


Connection levels

Mikey tries these in order and switches up as soon as a better one is available.

Level Link Audio Video
1 USB debugging Lossless PCM, 48 kHz Up to 1080p30
2 USB tethering Lossless PCM, 48 kHz Up to 1080p30
3 Wi-Fi (same network or the phone's hotspot) Opus 96 kbps, or lossless 720p30 by default, up to 1080p30
4 Bluetooth Opus 48 kbps Audio only

How it works

 Phone (Android app)                               PC (Mikey tray app)

 Mic: raw 48 kHz, 10 ms frames ──┐           ┌── Opus decode ▸ noise suppression (RNNoise)
                                 ├── link ───┤     ▸ jitter buffer ▸ drift correction ▸ virtual mic
 Camera: CameraX ▸ JPEG ─────────┘           └── JPEG decode ▸ scale to 1920×1080 ▸ Mikey Cam

            link = USB debugging · USB tethering · Wi-Fi · Bluetooth

The phone is always the client and the PC is always the server: TCP port 7653 for the stream and UDP port 7654 for finding the PC on your network. The full design lives in docs/, starting with the System Architecture and the Wire Protocol.

Side Built with
Android Kotlin, Jetpack Compose, AAudio, CameraX, libopus
PC Rust, cpal, nnnoiseless (RNNoise), opus-decoder, zune-jpeg, softcam

Roadmap

Phase Goal Status
1 Mic over USB Done
2 Four connection levels, trust, phone UI Done
3 Phone camera as a virtual webcam Done
4 Audio quality: noise suppression, jitter buffer, drift correction Done
5 Release: v0.1.0 preview is out; next are the Windows installer, Linux packages and v1.0 In progress

Details and the device test matrix are in the Roadmap & Test Matrix. Every release is listed in the Changelog.


Documentation

Document What's in it
Install on PC Building, running and the firewall
Install on Android Building and installing the phone app
Troubleshooting Fixes for connection, audio and camera problems
Architecture A short tour of how Mikey fits together
All docs Protocol, audio and video pipelines, design language, budgets

Contributing

Contributions are welcome, from typo fixes to new features. Read CONTRIBUTING.md first, and look for issues labeled good first issue.

  1. Fork the repo and create a branch, like feat/your-idea.
  2. Read the docs/ for the part you're changing.
  3. Make your change and run the checks below.
  4. Open a pull request using the template, with proof that it works (a screenshot, recording or test output).
Build and check

Android

git submodule update --init    # libopus
cd android
./gradlew assembleDebug        # APK in android/app/build/outputs/apk/debug/
./gradlew testDebugUnitTest lintDebug

PC

cd pc
cargo build --release
cargo fmt --check && cargo clippy -- -D warnings && cargo test

Commit messages follow Conventional Commits, for example fix(pc): skip unknown frame types.

Questions and ideas go in Discussions. Please report security problems privately, as described in the security policy.


License

MIT. Copyright © 2026 Divesh Patil.