Skip to main content

millet-record

Lightweight capture-only subset of millet (formerly meetscribe-record).

Records dual-channel meeting audio — your microphone on the left channel, system/remote audio on the right — into a single stereo WAV via PipeWire or PulseAudio + ffmpeg. Ships none of millet's transcription, diarization, summarization, or PDF dependencies; install footprint is ~30 MB instead of ~3 GB.

Full release history in CHANGELOG.md. Named after the Ottoman millet system. Part of the vezir ecosystem.

When to use which

Need Install
Just record audio (e.g., for vezir thin clients, or local archival) pip install millet-record
Record + transcribe + diarize + summarize + PDF pip install millet-pipeline (depends on millet-record)

Install

pip install millet-record

System deps (apt example):

sudo apt install ffmpeg pulseaudio-utils

CLI

millet check                   # verify prerequisites
millet devices                 # list audio sources
millet record                  # record dual-channel WAV; Ctrl+C to stop
millet archive                 # compress past WAV recordings to OGG/Opus
millet request-permissions     # macOS Sequoia 15+: trigger Microphone /
                               # System Audio Recording TCC prompts
                               # (Apple removed the manual '+' button in
                               # System Settings, so apps must request)

millet record writes to ~/millet-recordings/meeting-YYYYMMDD-HHMMSS/...wav unless -o is passed. See millet record --help for options.

When millet-pipeline is also installed, additional subcommands (transcribe, run, label, sync, gui, ...) become available under the same millet command via Click entry-points.

Legacy meet command

The pre-rename meet console script keeps working for two minor versions (until millet-record 0.6.0). It prints a deprecation warning on each invocation and forwards to the millet group. Set MILLET_SUPPRESS_DEPRECATION=1 to silence the warning during transition.

Architecture

millet-record exposes a stable package millet_record containing:

  • millet_record.capture — ffmpeg-backed dual-channel capture (RecordingSession, watchdog, drain buffer)
  • millet_record.audio — stereo channel reading + ffmpeg-based audio compression
  • millet_record.utils — formatting helpers (HH:MM:SS, file sizes)
  • millet_record.languages — language constants used by capture flow
  • millet_record.cli — millet console-script entry point

The legacy meet_record package name is still importable via a sys.modules alias + a meta-path finder, so existing from meet_record.X import … keeps working unchanged. Removed in millet-record 0.6.0.

millet-pipeline depends on this package and re-uses these modules, plus its own heavy modules (transcribe, label, voiceprint, summarize, sync, pdf, gui).

macOS (Apple Silicon)

pip install millet-record on macOS 14.4+ Apple Silicon ships a bundled meet-record-mac Swift sidecar that captures via Core Audio Process Tap + AVAudioEngine — no PulseAudio, no BlackHole, no extra install. millet record uses it by default.

Note: the Swift binary itself is still named meet-record-mac for now — renaming would require macOS code-signing bundle-path changes that aren't worth doing as part of the package rename. Tracked as a follow-up; doesn't affect end users.

First run prompts for Microphone and System Audio Recording permissions via the standard macOS TCC dialogs; both are required for full dual- channel capture (mic on left, system on right). See mac/README.md for the sidecar's CLI surface, level analysis recipes, and environment variables.

On macOS Sequoia 15+, Apple removed the manual + button from System Settings → Privacy → Microphone, so users can no longer add permissions before running the app. The millet request-permissions subcommand explicitly calls AVCaptureDevice.requestAccess(for: .audio) to trigger the TCC dialog. millet check will tell you which permission is missing and suggest running request-permissions.

Set MEET_RECORD_MAC=0 to force the legacy ffmpeg+PulseAudio path (diagnostic kill switch only — that path will fail on a stock macOS install because there is no PulseAudio device). Intel Macs and macOS < 14.4 are unsupported.

License

GPL-3.0-or-later, same as parent millet.

Metadata

Release files for millet-record 0.5.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for millet-record 0.5.1
File Size Uploaded
millet_record-0.5.1.tar.gz 50.1 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for millet-record 0.5.1
File Interpreter ABI Platform
millet_record-0.5.1-py3-none-macosx_14_0_arm64.whl Python 3 none macOS 14.0+ ARM64 Details
millet_record-0.5.1-py3-none-any.whl Python 3 none any Details

Total release size: 313.1 kB

Release files / millet_record-0.5.1.tar.gz

Download URL millet_record-0.5.1.tar.gz
Size 50.1 kB
Tags Source
SHA-256 checksum
How to use checksums
983df79d8abeeb83ccbb0a434ef94b2465e4346caca4e8d6662a110527c9107f
BLAKE2b-256 checksum
How to use checksums
5f08f04137fbf7e7e6f69cafcbc18f4dd80d575a49c60b41bd8b02ba8a1cf019
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 25, 2026.

Transparency log

Release files / millet_record-0.5.1-py3-none-macosx_14_0_arm64.whl

Download URL millet_record-0.5.1-py3-none-macosx_14_0_arm64.whl
Size 131.5 kB
Tags Python 3 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
8a40ff25d54e976d0085159a8eda13b601dd159054092cecc4bb605f34631cc7
BLAKE2b-256 checksum
How to use checksums
60ba523b526530e24a13ec4e1e91109278cf4f979089ee5606956d4182da4072
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 25, 2026.

Transparency log

Release files / millet_record-0.5.1-py3-none-any.whl

Download URL millet_record-0.5.1-py3-none-any.whl
Size 131.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3ea46c199d4531be92d5ea7c7cdc627491d919c89b96ce160682a25146b44ca3
BLAKE2b-256 checksum
How to use checksums
f28f93a97320a677b68bcbe34cfab2a7682dcd61eb48f415539163fa6a2208eb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 25, 2026.

Transparency log

Release history Release notifications | RSS feed

0.6.0

3 release files

This release

0.5.1 This release

3 release files

0.5.0

3 release files

0.4.4

3 release files

0.4.3

3 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page