Otto is a production-ready, visual chat UI wrapper for the native Gemini CLI. It brings secure, workspace-aware AI agent operations directly into your Obsidian vault layout, allowing you to run complex context-aware terminal and folder tasks securely from a polished chat interface.
Otto is designed to blend with the Project Mantle visual ecosystem. While functional on any theme, it is optimized to merge with the Zenith theme, adopting its typography, chat balloon borders, input boxes, glassmorphic headers, and terminal console styling.
- Visual Agent Chat Interface: Chat with your workspace agent using a polished, responsive conversation window.
- Vault Context Injection: Automatically injects current file contents, active selections, and vault folders into queries.
- Secure Integration: Bridges with the native Gemini CLI to run commands, modify files, and perform research securely.
- Command Auditing: Review and approve agent actions before they run, maintaining complete control.
- Go to Settings > Community plugins > Browse.
- Search for Otto.
- Click Install, then click Enable.
- Install the BRAT plugin from Obsidian's community store.
- In BRAT settings, click Add Beta plugin and enter:
https://github.com/carnalMATRIX/obsidian-mantle-otto - Click Add Plugin to download and auto-update.
- Download
main.js,manifest.json, andstyles.cssfrom the latest GitHub Release. - Inside your vault, navigate to
.obsidian/plugins/. - Create a folder named
mantle-ottoand paste the three downloaded files inside. - Restart Obsidian, go to Settings > Community plugins, and enable Otto.
- Gemini CLI on Path: Ensure the
geminiCLI tool is installed and is accessible via your system's globalPATH. You can verify this by opening a terminal and runninggemini --version. - Configuring CLI Path: Go to Settings > Otto inside Obsidian and verify that the custom CLI path matches the location on your disk (e.g.,
/usr/local/bin/geminior/opt/homebrew/bin/gemini).
- Focus States: Make sure a markdown note tab is active and focused when you send queries that request "current file" context.
If you wish to modify or customize this plugin locally:
- Clone this repository.
- Install dependencies:
npm install
- Run the compiler in watch mode:
npm run dev
- Build minified production code:
npm run build
Copyright (c) 2026 Ryan Bakker. Released under a Personal Use License. Non-commercial, personal use only. Redistribution or modification for distribution is strictly prohibited. See the LICENSE file for full terms.