DuoDuo Pocket is Ambient in your pocket. The DuoDuo app for iPhone is the Ambient channel's app: one conversation with the same DuoDuo that runs on your machine. Type, hold to talk, or send photos and files. Set the phone down in ambient mode and it listens to the room, answering what was said to it.
Accessories reach DuoDuo through the app. The first is the Passport, a card-sized device with a screen and three buttons: hold OK, say what you need, let go, and the phone can stay in your pocket.
Get the app#
The DuoDuo app needs iOS 17 or later and is in TestFlight beta:
Applications are reviewed, and the TestFlight invitation arrives by email once yours is approved.
The app is source-available, so you can also build it yourself, signed with your own Apple developer team: openduo/pocket-ios has the source and the build steps.
Without a DuoDuo yet, tap Try it first on the app's first screen. It runs on built-in demo content, so you can look around before you set anything up.
What it takes#
| Part | What it is |
|---|---|
| Ambient | The Ambient channel beside your DuoDuo, and the cerebellum that does its hearing. Everything you say through Pocket takes Ambient's path to DuoDuo. |
| DuoDuo app | Ambient's iPhone app, and the way accessories reach DuoDuo. |
| Accessories (optional) | Hardware that talks to DuoDuo through the app. The first is the Passport: a FoloToy AI Passport running the Pocket firmware, a card-sized device with a screen and three buttons. |
Get started#
-
Set up Ambient. Give your DuoDuo the
duoduo-ambientskill and ask it to set up Pocket:npx -y skills add https://github.com/openduo/duoduo --skill duoduo-ambientThe skill walks DuoDuo through installing the Ambient channel, connecting it to your cerebellum, creating a room, and publishing that room to your tailnet. You approve each change. The cerebellum, Ambient's backend, and its configurations are covered in Ambient.
-
Connect the app. On first launch, the app signs in to Tailscale, asks for the host and room of your Ambient channel, and checks the connection live.
-
Add a Passport (optional). The firmware is published in the AI Passport App Library as DuoDuo Pocket; flash it from the browser with FoloToy's web flasher. The Passport needs no Wi-Fi: it only talks to your phone, over Bluetooth. After flashing, it shows a pairing code. In the app, tap Add Passport, choose DuoDuo Pocket XXXX, tap Pair, and press OK on the Passport.
How it works#
- You talk, or the room does. In the app, type or hold to talk; in ambient mode the phone listens to the room. On a Passport, hold OK: it records while the button is down and streams the audio to the phone over an encrypted, bonded Bluetooth LE link.
- The phone relays. The app sends it to the Ambient channel on your DuoDuo host, over your own Tailscale network. Nothing is exposed to the public internet.
- Ambient decides who was addressed. In ambient mode, Ambient judges whether a sentence was said to DuoDuo, as it does in any room. Holding to talk, on the phone or on a Passport, settles the question: holding the button means you are talking to DuoDuo.
- DuoDuo works and answers. The app shows each stage as it happens: received, thinking, looking it up. The answer streams into the conversation, ambient mode speaks it, and a Passport shows the latest reply on its screen, where UP and DOWN page through it.
The phone is the only link between an accessory and your host. If the phone is out of reach, the Passport says so and records nothing instead of taking a note it cannot deliver.
The app carries its own Tailscale node, so no VPN profile is installed. Every connection dials out from the phone, and nothing listens on it. On the host, tailscale serve gives Ambient an HTTPS address on your tailnet and forwards to the channel on loopback. The same map shows the one part meant to be reached from the internet, Tether.
- 01Hold OK on the Passport. Your voice streams to the phone over Bluetooth LE.
- 02The phone dials your host over your tailnet: HTTPS to its ts.net address, then Ambient and DuoDuo.
- 03The answer comes back the same way, to the phone and the Passport screen.
- 04A room device opens the Ambient page at the same address, and listens.
- 05Grok, Dots or Muse knock on Tether. Only your passkey opens the door.
The app#
The app is one conversation with one DuoDuo, reading like a chat with a person plus a voice call. The room it talks to is a setting, not a list to browse. It speaks Chinese or English, following the iPhone's language.








- Hold to talk. Hold the bar; the sheet shows it is preparing, then recording. Release to send, or slide off the bar to cancel.
- See the work. While DuoDuo works, one compact card shows the current stage and step; after the answer, a single line records how many steps it took.
- Ambient mode. The phone listens to the room and speaks DuoDuo's answers, and you can cut in mid-word. It runs full screen like a call, or minimised to a bar above the conversation.
- Accessories in the same thread. A Passport pairs by numeric comparison: the same six digits on the phone and on the device, confirmed with OK. Its voice notes and their answers land in the same conversation, marked with the device.
The Passport#
The Passport is the first Pocket accessory. Every state it shows is one picture of DuoDuo and two lines of text, in Chinese or English to match the paired phone.






| Button | Action |
|---|---|
| Hold OK | Talk; release sends. Short taps are ignored. |
| UP / DOWN | Page through the reply on screen, then step to older or newer replies. |
| Hold UP | Settings: brightness, screen timeout, deep sleep, new-reply chime, re-pair. |
The screen goes dark when nothing is happening, and holding OK from a dark screen starts talking at once. After an hour idle the Passport goes into deep sleep; any button wakes it and reconnects it to the phone, and that waking press records nothing. The last replies stay on the device through a power-off.
Source#
| Part | Repository |
|---|---|
| Passport firmware | openduo/pocket-passport, a fork of FoloToy's folotoy/ai-passport; the published build is DuoDuo Pocket in the App Library |
| DuoDuo iPhone app | openduo/pocket-ios, source-available under FSL-1.1-Apache-2.0 |
| Ambient channel and cerebellum | openduo/ambient; see Ambient |
The Passport hardware and the original firmware are FoloToy's; see the AI Passport site for the device and its own apps.