Yulu (语录, yǔ lù) is a macOS meeting workspace built around local files and the Agents you already use. It records system audio and microphone input without a virtual audio device, shows movable realtime captions, turns meetings into searchable transcripts and summaries, and lets Agents work across that history.
There is no Yulu account. Recordings and task state stay on your Mac. Yulu uses the audio engine you explicitly select for realtime captions, final transcription, and dictation: local by default, or xAI cloud through OAuth reused from an installed Hermes/OpenClaw. Yulu never silently switches between them.
| Experience | What Yulu provides |
|---|---|
| Record a meeting | Native ScreenCaptureKit system audio plus AVFoundation microphone capture, started from the UI, menu bar, calendar/window detection, CLI, or MCP |
| Follow live captions | Movie-style captions on the active display, draggable from the bottom center, with source-only, bilingual, or translation-only display; an optional private sherpa-onnx Paraformer INT8 model provides low-latency source text |
| Review every meeting | Audio playback, transcript, summary, tags, speaker corrections, templates, glossary terms, and local search in one recording library |
| Run each action explicitly | Re-transcribe, regenerate the summary, and share the summary are independent actions that can be repeated separately |
| Ask across meeting history | Agent Console combines local recordings with the selected general Agent and that Agent's own connectors |
| Speak instead of type | Global shortcuts provide dictation, quick translation, and voice questions that continue in Agent Console |
| Inspect the system | Settings and Health expose permissions, capabilities, durable tasks, daemons, scheduler state, and logs |
Agent Console is the default workspace. Start or stop recording, see recent meeting work, ask questions across local history, and inspect the selected Agent's capabilities without leaving the page.
Open Manage Agents & Connectors in Agent Console to select the conversation Agent and inspect Notion, Zulip, calendar, and other connector status for that Agent. Yulu shows configuration state, copies the Agent's native management command, and stores non-secret destination preferences; credentials and OAuth remain in the Agent that owns the connector.
The recording reader keeps the original audio, transcript, summary, and manual actions together. Demo titles and transcript text in these screenshots are synthetic.
When recording starts, Yulu places pure movie-style subtitles near the bottom center of the currently active display.
- Source text is the default. Install the optional local model from Settings → Transcription for private captions and transcription, or explicitly select xAI for cloud speech-to-text. The selected engine handles the whole audio path without automatic switching.
- Choose a target language and switch between source-only, bilingual, and translation-only views while the meeting is live.
- Drag the six-dot handle to move the caption overlay anywhere on the display.
- The recording toolbar stays visible while you interact with it, then reduces to a centered red dot and “Recording” state after three seconds of inactivity.
- Hover the recording state to reveal “Click to stop”.
- Collapse the captions into the breathing Yulu quotation-mark logo; click the logo to restore them.
- When recording stops, the overlay disappears completely.
- macOS 13 or later.
- Apple Silicon (arm64) for official release installs.
- Python 3.10 or newer.
- A working Hermes CLI visible to Yulu's LaunchAgents when you want automatic summaries or authorized connector delivery.
- The local transcription model (default), or an existing xAI OAuth session in Hermes/OpenClaw when you explicitly select xAI.
- Optionally, Codex CLI, Claude Code, OpenClaw, Hermes, or a custom command for Agent Console conversation.
The installer provisions a compatible Node.js runtime and Yulu's audio tools when they are missing.
Latest stable release:
curl -fsSL https://raw.githubusercontent.com/Nowhitestar/Yulu/main/install.sh | bashThen make sure the CLI is on your shell path:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
exec zshYulu installs under ~/.yulu, opens the setup flow, and guides you through the
three macOS permissions it needs:
| Component | Permission | Why |
|---|---|---|
Yulu.app |
Microphone | Capture your microphone |
Yulu.app |
Screen & System Audio Recording | Capture meeting playback with ScreenCaptureKit |
window_scanner |
Accessibility | Detect supported meeting windows and titles |
Open the local workspace at
http://127.0.0.1:7777/agent-console,
or start your first recording from the menu bar or CLI:
yulu record start "Product weekly"
yulu record status
yulu record stop# One specific release
curl -fsSL https://raw.githubusercontent.com/Nowhitestar/Yulu/main/install.sh | bash -s -- --version v0.21.0
# Current main branch for development dogfood
curl -fsSL https://raw.githubusercontent.com/Nowhitestar/Yulu/main/install.sh | bash -s -- --devyulu update # latest stable
yulu update --version v0.21.0 # one specific release
yulu update --dev # current main branch
yulu uninstallUpdates preserve configuration, recordings, and macOS permissions. Stable updates verify the published checksum before replacing the installed runtime.
UI / menu bar / calendar / window detection / CLI / MCP
|
v
Yulu.app native system + microphone capture
|
+-----------+-----------+
| |
v v
live captions local WAV recording
+ translation |
v
authenticated local Host
| |
v v
selected Yulu audio engine durable task + lease
local (default) or xAI |
| v
+----> transcript commit -> summary Agent
|
optional authorized sharing
Agent Console -> selected general Agent -> that Agent's connectors
The split is intentional:
- Yulu owns native capture, permissions, local files, durable task state, artifact commits, recovery, and authorization boundaries.
- The selected Yulu audio engine owns realtime captions, final transcripts, and dictation. Selection is explicit and never falls back automatically.
- The recording Agent owns summary generation and explicitly authorized Notion delivery. Hermes/OpenClaw may supply xAI OAuth credentials but never receive audio on Yulu's xAI path.
- The selected general Agent owns Agent Console conversation and its own connectors.
If the Host is unavailable when capture ends, Yulu atomically spools the completion event and replays it after recovery without duplicating the automatic task. See Architecture for the full contract.
| Command | Purpose |
|---|---|
yulu status |
Show service, capture-socket, recording, and UI health |
yulu doctor [--json] |
Diagnose permissions, Host tasks, search, and Agent capabilities |
yulu record start "<title>" |
Start a native meeting recording |
yulu record stop / status |
Stop capture or inspect the live recording state |
yulu dictate start|stop|once|toggle|ask |
Dictate, translate, or send a voice question to Agent Console |
yulu status-agent hotkeys |
Print global dictation, translation, and voice-chat shortcuts |
yulu search "<query>" |
Search local transcripts and summaries |
yulu prompts ... / yulu vocab ... |
Manage reusable instructions and glossary context |
yulu mcp status|install|remove|rotate-token|test |
Manage authenticated local MCP registration |
yulu skill install --agent <name> |
Install or refresh the Yulu Agent skill |
yulu logs [audio_daemon|ui|scheduler|detector|calendar] |
Tail a runtime log |
yulu start / stop / restart |
Control installed background services |
yulu where / version |
Print installed paths or version metadata |
Run yulu help for the complete command list.
Yulu exposes loopback-only, bearer-authenticated MCP tools and resources for recording control, meeting metadata, durable task status, local search, prompts, glossary, health, and artifact workflows.
yulu skill install --agent codex
yulu skill install --agent claude-code
yulu mcp testAfter installation, an Agent can handle requests such as:
- “Start recording and call it Product weekly.”
- “What decisions did we make in meetings last week?”
- “Regenerate the summary for this meeting, then share it.”
Installing the skill alone does not install the native app or transcription pipeline. Install Yulu first, then add the skill to each Agent you want to use.
- WAV recordings are stored under
~/Movies/Yuluby default. - Transcript and summary sidecars live beside their recording.
- Runtime databases, task state, tokens, sockets, and logs stay under
~/.config/yulu. - The Host binds to loopback and protects completion, transcription, and MCP requests with a per-install bearer token.
- Yulu does not store Agent connector credentials.
- Selecting xAI authorizes Yulu to send audio directly to xAI for speech-to-text. Hermes/OpenClaw only supply an existing xAI OAuth credential in memory; they do not run Yulu's audio pipeline. Selecting local keeps speech recognition local.
- External delivery requires explicit authorization; uncertain side effects are not blindly replayed.
See Configuration, Operations, and Security for exact controls and troubleshooting.
Yulu is macOS-first. Native capture and the system overlay are Swift, the local Host and web UI are TypeScript, and Python handles capture orchestration, scheduling, and macOS workflow glue.
python3 -m pytest -q
cd yulu/scripts/yulu_ui
npm test
npm run typecheck
npm run buildInstall a checkout for local dogfood:
make dev-install
python3 yulu/scripts/doctor.py --json
curl -fsS http://127.0.0.1:7777/healthzContributor guides: Development, Web UI, Branding, Release, and ADRs.
MIT. See LICENSE. Third-party tools and macOS frameworks retain their own licenses.

