package icon

Duetto

A tiny Discord for two, on your own server: a permanent voice and video channel.
New in version 0.9.21
- Hold a button down and the other hears you, even with their sound off.
- The other’s voice levelled: faint or loud, it arrives nearly the same.
- When a new version is out, Duetto says so and leads to it.
- Two versions: the full one, which sounds other apps’ notifications in the channel; the light one, without, which Google does not block from a file.
- Duetto stays upright.
- And various other minor improvements.
Duetto is a tiny "Discord" made to measure for two people only. It is not an app for calling: it is a permanent channel. Open the app and you are in; if the other person is there too you connect by yourselves, and otherwise you stay reachable and are told the moment they arrive.

Audio and video travel end-to-end encrypted straight between the two phones. The server - yours, or one somebody let you in to - is only there to let you find each other, and cannot read anything. No account, no phone number, no service of anybody's.

- One tap and you are in the channel, and you stay: the app survives the night, the pocket, the change of network.
- Video when you want it, with the quality chosen for both phones.
- The other person can call you back with a sound that gets through even with the ringer down.
- Pairing with an eight-digit code or a QR code held up to the other phone; invitations for whoever is to open connections of their own on your server.
- Silent during a phone call, back when it ends.
- Free software, GPL-3, and a server you run yourself: a small Node.js process and coturn.

You need Android 7 or later, and a server: the README says how to put one up in a quarter of an hour.

Versions

Although APK downloads are available below to give you the choice, you should be aware that by installing that way you will not receive update notifications and it's a less secure way to download. We recommend that you install the F-Droid client and use that.

Download F-Droid
  • Version 0.9.21 (524) suggested Added on Oct 29, 2026

    arm64-v8a armeabi-v7a

    This version requires Android 7.0 or newer.

    It is built and signed by the original developer, and guaranteed to correspond to this source tarball.

    Permissions
    • view network connections
      Allows the app to view information about network connections such as which networks exist and are connected.
    • connect to paired Bluetooth devices
      Allows the app to connect to paired Bluetooth devices
    • take pictures and videos
      This app can take pictures and record videos using the camera while the app is in use.
    • change network connectivity
      Allows the app to change the state of network connectivity.
    • run foreground service
      Allows the app to make use of foreground services.
    • run foreground service with the type "camera"
      Allows the app to make use of foreground services with the type "camera"
    • run foreground service with the type "microphone"
      Allows the app to make use of foreground services with the type "microphone"
    • run foreground service with the type "specialUse"
      Allows the app to make use of foreground services with the type "specialUse"
    • have full network access
      Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
    • route calls through the system
      Allows the app to route its calls through the system in order to improve the calling experience.
    • change your audio settings
      Allows the app to modify global audio settings such as volume and which speaker is used for output.
    • show notifications
      Allows the app to show notifications
    • read phone status and identity
      Allows the app to access the phone features of the device. This permission allows the app to determine the phone number and device IDs, whether a call is active, and the remote number connected by a call.
    • run at startup
      Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running.
    • record audio
      This app can record audio using the microphone while the app is in use.
    • ask to ignore battery optimizations
      Allows an app to ask for permission to ignore battery optimizations for that app.
    • control vibration
      Allows the app to control the vibrator.
    • prevent phone from sleeping
      Allows the app to prevent the phone from going to sleep.
    • com.duetto.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 42 MiB PGP Signature | Build Log

  • New in version 0.9.20
    - The standing notification shows each connection on its own, with where the other stands and the Call and Enter buttons.
    - Each phone can ask the other to turn its diagnostics on.
    - When the server restarts, Duetto says so and comes back by itself within seconds; a conversation under way goes on.
    - The 32-bit version is back, for older phones.
    - A long press on the volume figure opens Android's volumes.
    - And various other minor improvements.
  • Version 0.9.20 (497) - Added on Oct 25, 2026

    arm64-v8a armeabi-v7a

    This version requires Android 7.0 or newer.

    It is built and signed by the original developer, and guaranteed to correspond to this source tarball.

    Permissions
    • view network connections
      Allows the app to view information about network connections such as which networks exist and are connected.
    • connect to paired Bluetooth devices
      Allows the app to connect to paired Bluetooth devices
    • take pictures and videos
      This app can take pictures and record videos using the camera while the app is in use.
    • change network connectivity
      Allows the app to change the state of network connectivity.
    • run foreground service
      Allows the app to make use of foreground services.
    • run foreground service with the type "camera"
      Allows the app to make use of foreground services with the type "camera"
    • run foreground service with the type "microphone"
      Allows the app to make use of foreground services with the type "microphone"
    • run foreground service with the type "specialUse"
      Allows the app to make use of foreground services with the type "specialUse"
    • have full network access
      Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
    • route calls through the system
      Allows the app to route its calls through the system in order to improve the calling experience.
    • change your audio settings
      Allows the app to modify global audio settings such as volume and which speaker is used for output.
    • show notifications
      Allows the app to show notifications
    • read phone status and identity
      Allows the app to access the phone features of the device. This permission allows the app to determine the phone number and device IDs, whether a call is active, and the remote number connected by a call.
    • run at startup
      Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running.
    • record audio
      This app can record audio using the microphone while the app is in use.
    • ask to ignore battery optimizations
      Allows an app to ask for permission to ignore battery optimizations for that app.
    • control vibration
      Allows the app to control the vibrator.
    • prevent phone from sleeping
      Allows the app to prevent the phone from going to sleep.
    • com.duetto.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 42 MiB PGP Signature | Build Log

  • New in version 0.9.19
    - Duetto now works as a call, like WhatsApp; before it was a different kind of app.
    - Two separate buttons, microphone and listening.
    - Bluetooth headsets: each device remembers whether it takes the sound by itself; its battery level is in the button.
    - The other connections stay reachable even when not in use.
    - The screen without video shows with icons the microphone and output, yours and the other person's.
    - And various other minor improvements.
  • Version 0.9.19 (443) - Added on Oct 08, 2026

    arm64-v8a

    This version requires Android 7.0 or newer.

    It is built and signed by the original developer, and guaranteed to correspond to this source tarball.

    Permissions
    • view network connections
      Allows the app to view information about network connections such as which networks exist and are connected.
    • connect to paired Bluetooth devices
      Allows the app to connect to paired Bluetooth devices
    • take pictures and videos
      This app can take pictures and record videos using the camera while the app is in use.
    • change network connectivity
      Allows the app to change the state of network connectivity.
    • run foreground service
      Allows the app to make use of foreground services.
    • run foreground service with the type "camera"
      Allows the app to make use of foreground services with the type "camera"
    • run foreground service with the type "microphone"
      Allows the app to make use of foreground services with the type "microphone"
    • run foreground service with the type "specialUse"
      Allows the app to make use of foreground services with the type "specialUse"
    • have full network access
      Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
    • route calls through the system
      Allows the app to route its calls through the system in order to improve the calling experience.
    • change your audio settings
      Allows the app to modify global audio settings such as volume and which speaker is used for output.
    • show notifications
      Allows the app to show notifications
    • read phone status and identity
      Allows the app to access the phone features of the device. This permission allows the app to determine the phone number and device IDs, whether a call is active, and the remote number connected by a call.
    • run at startup
      Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running.
    • record audio
      This app can record audio using the microphone while the app is in use.
    • ask to ignore battery optimizations
      Allows an app to ask for permission to ignore battery optimizations for that app.
    • control vibration
      Allows the app to control the vibrator.
    • prevent phone from sleeping
      Allows the app to prevent the phone from going to sleep.
    • com.duetto.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 28 MiB PGP Signature | Build Log