{"_id":"@dvrosalesm/pi-notetaker","name":"@dvrosalesm/pi-notetaker","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@dvrosalesm/pi-notetaker","version":"1.0.0","description":"pi extension for meeting notes — record, transcribe locally with Whisper, and summarize with LLM","type":"module","license":"MIT","repository":{"type":"git","url":"git+https://github.com/dvrosalesm/pi-notetaker.git"},"keywords":["pi","pi-extension","meeting","notetaker","whisper","transcription"],"pi":{"extensions":["./src/index.ts"]},"scripts":{"clean":"echo 'nothing to clean'","build":"echo 'nothing to build'","check":"echo 'nothing to check'"},"dependencies":{},"peerDependencies":{"@mariozechner/pi-coding-agent":"*","@mariozechner/pi-ai":"*","@sinclair/typebox":"*"},"gitHead":"9a67c9887f1a435d3a4de5e85faefa5306f07977","_id":"@dvrosalesm/pi-notetaker@1.0.0","bugs":{"url":"https://github.com/dvrosalesm/pi-notetaker/issues"},"homepage":"https://github.com/dvrosalesm/pi-notetaker#readme","_nodeVersion":"25.8.1","_npmVersion":"11.11.1","dist":{"integrity":"sha512-cvId7diVDAeB7sytpfvvITM6DuATNxbiGvYMqY4z/lmv3BxGIoRLljkATgzmGvvrOHoOB9s88VraOk+6pgrDSA==","shasum":"d198df70a0a342120befa27242100d1ed4604eaf","tarball":"https://registry.npmjs.org/@dvrosalesm/pi-notetaker/-/pi-notetaker-1.0.0.tgz","fileCount":6,"unpackedSize":47379,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHBzrdZ4qgVrezy2g/LQYl20+h9aa87+mzRVHKgHVczEAiEAg1NoQEk29x7dwjaQHwoXOLgFuBNJFU+/79nFTof1U2A="}]},"_npmUser":{"name":"dvrosalesm","email":"rdiegovladimir@gmail.com"},"directories":{},"maintainers":[{"name":"dvrosalesm","email":"rdiegovladimir@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-notetaker_1.0.0_1775071553756_0.4080657868063833"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-01T19:25:53.644Z","1.0.0":"2026-04-01T19:25:53.907Z","modified":"2026-04-01T19:25:54.118Z"},"maintainers":[{"name":"dvrosalesm","email":"rdiegovladimir@gmail.com"}],"description":"pi extension for meeting notes — record, transcribe locally with Whisper, and summarize with LLM","homepage":"https://github.com/dvrosalesm/pi-notetaker#readme","keywords":["pi","pi-extension","meeting","notetaker","whisper","transcription"],"repository":{"type":"git","url":"git+https://github.com/dvrosalesm/pi-notetaker.git"},"bugs":{"url":"https://github.com/dvrosalesm/pi-notetaker/issues"},"license":"MIT","readme":"# pi-notetaker\n\nBuilt for [cmd0](https://github.com/dvrosalesm/cmd0) — a desktop AI agent that lives in your system tray.\n\nA [pi](https://github.com/mario-zechner/pi-coding-agent) extension for meeting notes. Record audio, transcribe it locally with Whisper, and generate structured summaries using the active pi LLM — all offline, all local.\n\nWorks with **any pi agent** (standalone pi, [cmd0](https://github.com/dvrosalesm/cmd0), or custom SDK apps).\n\n## Quick Install\n\n```bash\n# Install from npm\npi install npm:@dvrosalesm/pi-notetaker\n\n# Then inside a pi session, run:\n/meeting setup\n```\n\n### Install from source\n\n```bash\n# Copy or symlink this directory into pi's extensions\ncp -r pi-notetaker ~/.pi/agent/extensions/pi-notetaker\n\n# Then inside a pi session, run:\n/meeting setup\n```\n\nThe `/meeting setup` command (or the `meeting_setup` tool) will:\n- Install **sox** via Homebrew (for audio recording)\n- Install **whisper-cpp** via Homebrew (for local transcription)\n- Download the **whisper base.en model** (~142MB) to `~/.pi/models/`\n\n### Manual Install (if Homebrew is unavailable)\n\n```bash\n# Recording — install one of:\nbrew install sox          # provides the `rec` command\nbrew install ffmpeg       # alternative recorder\n\n# Transcription — install one of:\nbrew install whisper-cpp  # provides `whisper-cli`\n# OR run a local OpenAI-compatible whisper API server\n\n# Whisper model — download to ~/.pi/models/\nmkdir -p ~/.pi/models\ncurl -L -o ~/.pi/models/ggml-base.en.bin \\\n  https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-base.en.bin\n```\n\n## Prerequisites\n\n| Dependency | Purpose | Install |\n|---|---|---|\n| **sox** or **ffmpeg** | Audio recording | `brew install sox` |\n| **whisper-cpp** | Local speech-to-text | `brew install whisper-cpp` |\n| **Whisper model** (.bin) | Whisper weights | Auto-downloaded by `/meeting setup` |\n| **Homebrew** (optional) | Auto-install above | [brew.sh](https://brew.sh) |\n\n**Platforms:** macOS and Linux. Windows is not supported.\n\nFor **system audio capture** (not just mic), install [BlackHole](https://github.com/ExistentialAudio/BlackHole) and configure a Multi-Output Device in Audio MIDI Setup, then set the device:\n\n```\n/meeting config device \"BlackHole 2ch\"\n```\n\n## Usage\n\n### Commands\n\n| Command | Description |\n|---|---|\n| `/meeting start [name]` | Start recording audio |\n| `/meeting stop` | Stop recording, transcribe & summarize |\n| `/meeting list` | List past meetings |\n| `/meeting view <id>` | View meeting summary |\n| `/meeting transcript <id>` | View raw transcript |\n| `/meeting status` | Check if currently recording |\n| `/meeting setup` | Check & install dependencies |\n| `/meeting config [key val]` | Show or set configuration |\n\n### LLM-Callable Tools\n\nThese tools are registered so the LLM can manage meetings conversationally:\n\n| Tool | Description |\n|---|---|\n| `meeting_setup` | Check & auto-install all dependencies |\n| `meeting_start` | Start recording (accepts optional name) |\n| `meeting_stop` | Stop, transcribe, and summarize |\n| `meeting_status` | Check recording state |\n| `meeting_list` | List past meetings |\n| `meeting_view` | View a meeting's summary or transcript |\n\n### Agent Integration\n\nTo have an AI agent install this extension and set it up programmatically:\n\n1. Copy this directory into `~/.pi/agent/extensions/pi-notetaker/`\n2. Call the `meeting_setup` tool with `{ \"install\": true }` — it will install all system dependencies and download the whisper model\n3. Use `meeting_start` / `meeting_stop` to record and process meetings\n\n## Configuration\n\nConfig is stored at `~/.pi/meetings-config.json` (or `~/.cmd0/meetings-config.json` if running inside cmd0). Set values with `/meeting config <key> <value>`.\n\n| Key | Description | Default |\n|---|---|---|\n| `device` | Audio input device name | System default mic |\n| `recordingBackend` | `\"sox\"` or `\"ffmpeg\"` | Auto-detect |\n| `whisperBackend` | `\"cli\"` or `\"api\"` | Auto-detect |\n| `whisperBin` | Path to whisper binary | Auto-detect |\n| `whisperModel` | Path to .bin model file | Auto-detect in `~/.pi/models/` |\n| `whisperApiUrl` | Local whisper API URL | `http://localhost:8080` |\n| `language` | Transcription language | `\"en\"` |\n| `sampleRate` | Recording sample rate (Hz) | `16000` |\n\nEnvironment variables `WHISPER_BIN`, `WHISPER_MODEL`, and `WHISPER_API_URL` are also respected.\n\n## How It Works\n\n```\n/meeting start \"Weekly Standup\"\n  |\n  v\n[sox/ffmpeg records audio -> ~/.pi/meetings/<id>/audio.wav]\n  |\n/meeting stop\n  |\n  v\n[whisper-cpp transcribes audio -> transcript.txt]\n  |\n  v\n[pi's active LLM summarizes transcript -> summary.md]\n  |\n  v\nSummary injected into conversation context\n```\n\n1. **Record** — Spawns `rec` (sox) or `ffmpeg` to capture audio at 16kHz mono WAV\n2. **Transcribe** — Runs `whisper-cli` locally against the audio file, or POSTs to a local OpenAI-compatible API\n3. **Summarize** — Sends the transcript to pi's currently active LLM (same model you're chatting with) with a structured prompt\n4. **Store** — Everything saved to `~/.pi/meetings/<timestamp>/` with metadata\n\n## Data Storage\n\nThe extension auto-detects the data root:\n- **cmd0 users** → `~/.cmd0/` (if it exists)\n- **All other pi agents** → `~/.pi/`\n\n```\n~/.pi/                         # or ~/.cmd0/\n  meetings/\n    2026-03-30_14-30-00_a1b2c3/\n      audio.wav                # Raw recording\n      transcript.txt           # Whisper output\n      summary.md               # LLM-generated summary\n      metadata.json            # Name, timestamps, flags\n  meetings-config.json         # Extension settings\n  models/\n    ggml-base.en.bin           # Whisper model weights\n```\n\n## Extension Structure\n\n```\npi-notetaker/\n  package.json           # pi extension manifest\n  README.md              # This file\n  src/\n    index.ts             # Extension entry — commands, tools, events\n    recorder.ts          # Audio capture (sox / ffmpeg)\n    transcriber.ts       # Local Whisper (CLI / API)\n    summarizer.ts        # LLM summarization via pi's active model\n```\n","readmeFilename":"README.md","_rev":"1-cde6fdbee62d80092d652feceb553e3f"}