Native AI assistant with local LLM integration, multi-provider BYOK, document context grounding, and interactive chat.
Copilot is an intelligent assistant embedded directly inside your workspace. It connects to local offline inference runtimes (such as Ollama or LM Studio) or cloud AI providers (OpenAI, Anthropic, Google Gemini) to assist with drafting, summarizing, brainstorming, and querying your vault knowledge.
- Right Sidebar Tab: Click the sparkle icon in the right sidebar to open the conversational Copilot drawer.
- Editor Inline Menu: Highlight any text in your active note and press
/aito open the quick transformation popover. - Status Bar Indicator: Shows active model status and token latency metrics.
- Click the Copilot icon in the right sidebar.
- Ask any question about your notes or request writing assistance.
- Click the Pin Active Note button in the chat input to automatically attach your currently open document as context for the prompt.
Open Settings (Ctrl+,) → Copilot to choose your provider:
- Local (Ollama / LM Studio): Zero data leaves your machine. Set host to
http://localhost:11434and choose models likellama3.2,mistral, orqwen2.5-coder. - Cloud Providers (Bring Your Own Key):
- Anthropic: Enter your Claude API key to use Claude 3.5 Sonnet.
- OpenAI: Paste your OpenAI API key to use GPT-4o.
- Google Gemini: Paste your Gemini API key.
The Copilot extension demonstrates how to build streaming AI chat interfaces, inject active document context, and manage multi-turn conversational memory via the Noether SDK.
this.registerSidebarTab(): Mounts the conversational chat interface in the right sidebar.this.registerSlashCommand(): Adds the/aiprompt command to the editor popover.this.registerTool(): Registers MCP tools enabling AI agents to query vault documents.
import { Extension, NoetherApp } from 'noether';
export default class CustomAssistantExtension extends Extension {
async onload(): Promise<void> {
this.addCommand({
id: 'ai:summarize-active',
title: 'Copilot: Summarize Active Note',
section: 'AI Assistant',
action: async (app: NoetherApp) => {
const activeDoc = app.vault.activeDocument;
if (!activeDoc) return;
app.workspace.showToast('Generating summary...', 'info');
// Stream inference from local or cloud endpoint
},
});
}
}- Description: Dispatches a grounded prompt to the configured LLM with optional document context.
- Parameters:
prompt(string, required): User question or instruction.documentId(string, optional): Context document identifier.
To build and test this community extension locally:
git clone https://github.com/yvliet/noether-copilot.git
cd noether-copilot
npm install
npm run buildCopy the compiled bundle dist/main.js and manifest.json into your vault's .noether/extensions/noether-copilot/ directory and reload Noether.
MIT © Yuliet Li