Liberate your Pocket AI recorder from the cloud.
Pocket Libre replaces the vendor app for your Pocket AI voice recorder. It pulls recordings off the device over Bluetooth, transcribes them locally with Whisper, works out who was speaking, and summarizes with your own API key.
Your conversations never touch anyone else's servers.
pip install -e . && pocket-libre setup && pocket-libre webThe Pocket is good hardware wrapped in a subscription. The vendor app uploads your audio, transcribes it on their servers, and charges $79–179 a year for the privilege.
The device itself does none of that. It stores MP3 files and hands them over when asked. So this asks it directly.
| Pocket Pro | Pocket Libre | |
|---|---|---|
| Transcription | Their servers | Local Whisper, your CPU |
| Summarization | Cloud, mandatory | Claude Haiku, ~$0.02/recording |
| Where your audio lives | Their infrastructure | Your disk |
| Annual cost | $79–179 | ~$5 in API credits |
| Works offline | No | Yes (except summaries) |
Transcription and speaker identification run entirely on your machine. Summarization is the only step that touches the network, and you can skip it. You still get timestamped, speaker-labeled transcripts.
- Python 3.10 or newer
- A Pocket recorder (tested on
PKT01, firmware 1.3.3) - Bluetooth LE support
- The device's 16-character session key (see below)
git clone https://github.com/shahcolate/pocket-libre.git
cd pocket-libre
pip install -e .Speaker identification is optional and pulls in PyTorch:
pip install -e ".[diarize]"pocket-libre setupThe wizard scans for your device, asks for your session key and API keys, and
writes everything to ~/.pocket-libre/config.toml with mode 600. After that
you never pass --address or keys on the command line again.
The 16-character session key authenticates the BLE connection. The vendor app receives it during pairing, so you need to capture it once from an HCI trace.
macOS/iOS. Use PacketLogger, which
ships with Additional Tools for Xcode. Start a capture, open the vendor app, let
it connect, then search the trace for APP&SK&.
Android. Enable Bluetooth HCI snoop log in Developer Options, connect with
the vendor app, then pull btsnoop_hci.log and open it in Wireshark.
pocket-libre sniff won't find it for you. It only sees notifications on its own
connection, and the key is something the app writes.
Full protocol details are in PROTOCOL.md.
pocket-libre webOpens http://127.0.0.1:8265. You get device status, one-click download and
processing, an audio player, transcripts, summaries, mind maps, and a chat box
for asking questions about any recording.
The web interface has no authentication. It binds to localhost by default. Keep it there. Passing
--host 0.0.0.0hands your transcripts and your device to everyone on the network.
pocket-libre status # Battery, firmware, storage
pocket-libre list # What's on the device
pocket-libre sync # Download + transcribe + summarize everything new
pocket-libre watch # Same, but automatically whenever the device appears
pocket-libre process --input x.mp3 # Process an audio file you already haveLeave watch running and recordings sync themselves whenever the Pocket comes
in range. It backs off to five-minute checks while the device is away, so it
isn't scanning flat out all day.
| Command | Description |
|---|---|
setup |
Interactive setup wizard |
web |
Launch the web interface |
watch |
Auto-sync whenever the device is in range |
config |
View or edit configuration |
scan |
Find nearby BLE devices |
status |
Device battery, firmware, storage |
list |
List recordings on device |
download |
Download one recording |
download-all |
Download every recording |
sync |
Download, transcribe, and summarize what's new |
process |
Process an existing audio file |
transcribe |
Transcribe locally with Whisper |
convert |
Convert raw audio to WAV |
wifi-transfer |
Download over WiFi instead of BLE (see caveat) |
wifi-discover |
Probe for the device's HTTP endpoint |
explore |
Dump GATT services and characteristics |
sniff |
Subscribe to all BLE notifications |
probe |
Probe write characteristics |
Every command takes --help.
~/.pocket-libre/config.toml:
[device]
address = "YOUR-DEVICE-ADDRESS"
session_key = "YOUR-SESSION-KEY"
[api]
anthropic_key = "sk-ant-..."
hf_token = "hf_..."
[output]
directory = "~/Pocket Libre"
[defaults]
whisper_model = "base.en"
summary_style = "meeting"
[analysis]
enabled = "summary,entities"Set values directly with pocket-libre config --set device.address=....
Resolution order is CLI flag → environment variable → config file → default,
so ANTHROPIC_API_KEY in your shell overrides the file.
| Key | What it does | Cost | Where |
|---|---|---|---|
| Anthropic | Summaries, entity extraction, mind maps, chat | ~$0.02/recording | console.anthropic.com |
| HuggingFace | Speaker identification via pyannote | Free | huggingface.co |
Both are optional. Without an Anthropic key you still get local transcription. Without a HuggingFace token, speaker labeling falls back to Claude, and then to a single unnamed speaker.
That cost estimate assumes Claude Haiku 4.5 at $1 and $5 per million input and output tokens, on a half-hour recording with summary, entities, and mind map all enabled. Every command prints what it actually spent.
The Pocket speaks a plain ASCII command protocol over BLE GATT, and the audio is ordinary MP3 at 16 kHz mono, around 32 kbps. No encryption, no DRM, no proprietary codec. PROTOCOL.md has the full command reference.
BLE transfers run at 3–4 KB/s, so a long recording can take hours. The device can raise a WiFi access point and serve files over HTTP instead, and the BLE side of that handshake is fully decoded.
The HTTP endpoint it serves files from is still unconfirmed. wifi-transfer
drives the whole flow and probes for the endpoint, but it may come up empty until
someone with a device pins it down. If you own a Pocket, this is the most useful
thing you can contribute:
# Join the device's WiFi network first, then:
pocket-libre wifi-discover --date 2026-03-28 --timestamp 20260328001919Paste the output into an issue. Once it's known, everyone gets fast transfers.
- BLE scanning and device discovery
- Full command protocol (
APP&/MCU&) - Device status, file listing, downloads
- MP3 capture and playback
- Local Whisper transcription
- Speaker diarization (pyannote, with Claude and heuristic fallbacks)
- Claude summarization, entity extraction, mind maps, chat
- Web interface
- Config file and setup wizard
- Auto-connect and background sync (
watch) - WiFi transfer client and endpoint discovery
- WiFi HTTP endpoint confirmed against hardware
Pull requests welcome. The things that would help most right now:
- Find the WiFi HTTP endpoint. Run
wifi-discoveron the device AP. - Test on other firmware. Run
pocket-libre exploreand share the output. - Report protocol differences. Capture with PacketLogger and open an issue.
CONTRIBUTING.md covers development setup and how to run the tests.
This project reverse-engineers a Bluetooth protocol for personal interoperability, protected under DMCA Section 1201 exemptions. Nothing here circumvents DRM, because there is none; the audio is unencrypted MP3. You own your device. You own your recordings.
MIT. See LICENSE.