Sarath Chandra62 downloadsPush-to-talk voice notes transcribed on-device with Gemma 4.
Push-to-talk voice notes for Obsidian, transcribed entirely on-device with Google's Gemma 4 (E2B / E4B) running in-process via transformers.js. No server, no API key — fully offline after a one-time model download.
🚀 Install here: https://community.obsidian.md/plugins/gemmanotes
Built with Love and Antigravity CLI, Gemini 3.5 Flash
▄▀▀▄ Antigravity CLI 1.0.2
▀▀▀▀▀▀ xxxxxxxxxxxxxxxxxxxxx
▀▀▀▀▀▀▀▀ Gemini 3.5 Flash (High)
▄▀▀ ▀▀▄ ~/gemmanotes
▄▀▀ ▀▀▄
Git clone:
gh clone https://github.com/sarath/gemmanotes
Development:
npm install
npm run build # production bundle -> main.js
npm run dev # watch mode
Install into a vault for local testing:
Mac
git clone https://github.com/sarath/gemmanotes
./install.sh /path/to/your/vault <feature-branch>
This fetches origin, checks out origin/<feature-branch> cleanly, runs
npm run build, and copies main.js, manifest.json, and styles.css
into <vault>/.obsidian/plugins/gemmanotes/. Then enable the plugin and use
Settings → GemmaNotes → Download to fetch the model (~3.2 GB for E2B,
~5 GB for E4B).
If you are developing inside Google Cloud Shell and want to deploy, test, and debug the plugin directly in a local Obsidian instance:
Start your local Obsidian instance with remote debugging enabled (e.g., obsidian --remote-debugging-port=9222). Then, run the following command to tunnel port 9222 from your local machine to your Cloud Shell workspace:
gcloud cloud-shell ssh --ssh-flag="-L 9222:localhost:9222"
This allows scripts running in the Cloud Shell environment to connect to the Chrome DevTools protocol on your local Obsidian instance.
npm run build
main.js, manifest.json, styles.css) to the connected Obsidian instance and automatically reload the plugin:npm run local:deploy
npm run local:test-load
src/transcriber.ts follows the documented image-text-to-text pattern; the
exact audio surface should be confirmed against the model card sample code.