WriterAgent
About
A LibreOffice extension that adds agentic AI and NumPy features.
Details
- Author
- keithcu
- Categories
- Productivity
Jump to
Setup
Install WriterAgent in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/keithcu/writeragent
Follow the installation instructions in the repository README, then restart your MCP client.
A LibreOffice extension that brings agentic AI to Writer, Calc, and Draw — chat in the sidebar, edit documents, run Python in spreadsheets, research the web, and check grammar.
Unlike proprietary office suites that lock you into a single cloud provider and send all your data to their servers, WriterAgent is local-first. You can run fast, private models locally (via Ollama, LM Studio, etc.) ensuring your documents never leave your machine. If you choose to use cloud APIs, you can switch between providers (e.g., OpenRouter, Together.AI) in seconds, maintaining full control over your data.
Download .oxt·Feature index·Discussions
- Sidebar chat with deep tool-calling— 9 core tools for everyday editing plus dozens ofspecialized sub-agentsfor layout, visual elements, references, revisions, forms, and more. Try"Do web research and write a report on the space elevator, suitable for mathematicians (or English teachers)"— the AI will research, write, and format a complete document.
- Format-preserving edits— Rewrite or tighten a selection and existing bold, italics, highlights, and font sizes survive intact. HTML import handles tables and nested lists.
- Realtime grammar— Proofread as you write withHarper(fast, local, and auto-installing),LanguageTool(local server), or an LLM endpoint. Optional automatic language detection gives each sentence in mixed-language documents the right checker.Details
- Math & analytics— TeX/MathML delimiters become editable LibreOffice Math objects. SymPy helpers for symbolic math. Readability metrics, NER, and key phrases via spaCy.Math
- =PROMPT()and=PY()— AI prompts and NumPy/pandas code in spreadsheet cells with auto spill, shared kernel, init scripts, and document-attached scripts. Examples:
- =PY("np.mean(data)"; A1:A10)— Average a real Calc range with NumPy.
- =PY("data.to_pandas(date_cols=True)"; A1:C10)— Load a table into pandas with automatic date parsing.NumPy in LibreOffice·Data shapes
- Diagram and presentation editing— Build and revise diagrams and slide decks from chat, including shapes, connectors, charts, speaker notes, transitions, and slide masters.Details
- Private web research— Localsmolagentsloop with DuckDuckGo; synthesizes multiple pages and can update the open document with what it finds — e.g."find the current price of … and update this memo."Agent search
- Images, OCR, voice— Generate or edit images; offline OCR via Docling; cross-platform voice recording. In Writer, select one image or a range containing several, thenWriterAgent → Run Python Script → Vision Helpers → extract_text— recognized text is inserted after each selected image.Images·Vision·Audio
- LO-DOM— A recursive structural model so the agent understands headings, sections, and object relationships — not just a wall of text.Semantic tree
- Cross-document reads— Say"our budget spreadsheet"in the sidebar to read other files in the same folder; edits stay on the active doc. Optional hybrid folder search finds relevant passages across larger collections.Embeddings
- Memory— Persistent agent memory carries useful context across sessions.Details
- Localization— Use WriterAgent in 34 shipped locales, maintained through an AI-driven translation pipeline.Details
- MCP server— Connect Cursor, Claude Desktop, LM Studio, or custom agents to read and edit open LibreOffice documents through the local endpointhttp://localhost:18765/mcp.MCP protocol
- External agent backends— UnderSettings → MCP(Agent Communication Protocol), swap built-in chat forHermes,Claude Code,Mistral Vibe,Grok Build, orOpenCodevia ACP, with approve/reject dialogs for tool calls.Cursor plugin·LO skill
Full catalog with doc links:docs/features.md.
- DownloadWriterAgent.oxt(full AI suite) orLibrePy.oxt(Python/NumPy + analysis / OCR) fromRelease Assets, then double-click to install.
- OpenWriterAgent → Settingsand set an OpenAI-compatible endpoint and model (e.g.http://localhost:11434forOllama).
- Open the sidebar:View → Sidebar → WriterAgent, or useCtrl+Q/Ctrl+Efor extend / edit selection.
No GPU?TryOpenRouter free modelsorTogether.AI’s free tier.
An in-LibreOfficeLLM Evaluation Suitebenchmarks models on real Writer/Calc/Draw tasks and ranks them byValue (C²/$)— average correctness squared ÷ average dollars per run, using live OpenRouter pricing. Snapshot ranking (Apr 2026); seedocs/benchmarks.mdfor scoring methodology and insights.
The same eval traces are a natural next step forfine-tuninga smaller specialist model on this tool distribution — same correctness with fewer tokens and reasoning steps.
Under the hood, all AI interactions are governed by a formally verified state machine with type checking, and static analysis.Architecture·Formal verification·Test architecture
Help us improve.WriterAgent is a small team's project, and the problem space is enormous — LibreOffice's full UNO API surface, dozens of LLM backends and models, multiple operating systems, 34 locales, and a growing feature set across Writer, Calc, and Draw. A large team could work on this for years. If you hit a rough edge — file anissuewith steps to reproduce, or open a PR. Curious Python tinkerers are especially welcome. A star helps too.
A weekly chronicle of building a professional AI suite inside LibreOffice:
- Week 1:Initial fork, sidebar chat, multi-turn tools, and async streaming
- Week 2 & 3:MCP, research sub-agent, voice support, and evaluation dashboard
- Week 4–6:State machines, formal verification, and specialized toolsets
- Week 6 & 7:Async grammar checking and TeX import support
Prerequisites:Python 3.11–3.13 for dev (pinned to3.13in.python-version),uv. Runmake check-setupto verify. On macOS: installmake,gettext.
git clone https://github.com/KeithCu/writeragent.git cd writeragent uv python install 3.13 uv sync make deploy # or: make deploy writer make test make help
LibrePy (Python/NumPy only, no chat):make deploy-core/make build-core. File list:scripts/librepy_bundle_paths.py. Packaging:docs/libreoffice-core-python-extension-split.md.
GNU GPL v3 (or later)— seeLICENSE. Originally MPL 2.0; relicensed in 2026 for stronger reciprocity and library compatibility.
The 1Password MCP server creates a bridge that allows MCP clients such as Codex and Kiro to manage your 1Password Environments with secure authorization prompts.
This is the 1st, easiest, and cheapest PPT, slides, presentation AI generation MCP Server in the world.
Persistent memory for any AI assistant. Zero token cost until recall. Stores memories in local SQLite, ranks by 6-factor scoring, returns results 79% smaller than JSON. Works with Claude, ChatGPT, Grok, Cursor, Windsurf, and any MCP client.
A MCP server that enables AI assistants to interact with Anki, the spaced repetition flashcard application.
Enables LLM clients to interact with macOS applications through AppleScript. Built using the @beyondbetter/bb-mcp-server library, this server provides safe, controlled execution of predefined scripts with optional support for arbitrary script execution.
An MCP server for WordPress plugin audits
Turn your AI assistant into a digital marketing hub that creates, organizes, and analyzes links and QR Codes on demand.
Connect AI clients to Cal.com scheduling through the Model Context Protocol using the hosted server at mcp.cal.com or a local instance.
Sync Calendars, Scheduling Links, AI Executive Scheduling Assistant, Unified Calendar
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



