trackmcp
Back to directory
KeithCu

writeragent

View on GitHub

A LibreOffice extension that adds agentic AI and NumPy features.

111 stars PythonOthers Updated Sep 4, 2026

Documentation

WriterAgent, LibrePy & LibreHarper

WriterAgent logo
License: GPL v3+
Python 3.11+
LibreOffice 7.0+
Release
CI status

CI status page

Python, NumPy, and Agentic AI for LibreOffice (Writer, Calc, and Draw)

Run Python and scientific compute directly in spreadsheet formulas, edit documents with private local-first AI, conduct autonomous web research, generate diagrams, and automate office workflows β€” without cloud lock-in.

The project is distributed as three standalone extension packages (*install only one at a time*):

PackageWhat's IncludedBest For
πŸ€– **WriterAgent** (`WriterAgent.oxt`) *(Full stack)*Everything in LibrePy and LibreHarper + AI sidebar, `=PROMPT()`, web research, Calc β†’ Python converter, MCP serverUsers wanting the complete AI assistant, spreadsheet converter, and scientific compute suite
🐍 **LibrePy** (`LibrePy.oxt`)Python runtime, `=PY()`, NumPy, pandas, SymPy, Monaco, Jupyter File β†’ Open `.ipynb`, domain helpers, OCRUsers who want Python and Data Science in Calc/Writer without AI or API keys
✍️ LibreHarper (`LibreHarper.oxt`)Standalone offline Harper grammar engine for WriterUsers who only want fast, local grammar checking without AI or Python stacks

**Download .oxt Releases** Β· Feature Index Β· NumPy in LibreOffice Guide Β· Discussions


Key Capabilities

🐍 Python & Scientific Computing (Calc & Writer)

  • Native `=PY()` Spreadsheet Formulas β€” Execute Python, NumPy, and pandas expressions directly inside Calc cells with automatic array spill, shared workbook kernels, and persistent scripts.
    • `=PY("np.mean(data)"; A1:A10)` β€” Calculate array statistics directly on Calc ranges.
    • `=PY("data.to_pandas(date_cols=True)"; A1:C10)` β€” Load sheet data into pandas with automatic type and date parsing.
    • NumPy in LibreOffice Guide Β· Data Shapes & Type Mapping
  • Embedded Monaco Code Editor β€” Write, test, and debug multi-line Python scripts directly inside cells or through the Tools β†’ Run Python Script environment with syntax highlighting, autocomplete, and diagnostics.
  • Built-in Scientific & Analytics Domains β€” Ready-to-use helpers for EDA, outlier detection, OLS regression, KMeans clustering, Monte Carlo simulations, symbolic algebra (SymPy), plotting, and physical unit conversions (`convert_quantity(60, "mph", "m/s")` β†’ `26.8224 m/s`). Domain Reference Β· Analysis Helpers
  • **Spreadsheet β†’ Python Converter *(WriterAgent)*** β€” Translate 235+ classic Calc/Excel formulas into clean Python expressions using the built-in `calc.*` parity library while preserving constants, dates, and cell formats. Details
  • Local Vision & OCR β€” Extract text from embedded images or scanned documents directly into Writer and Calc via offline Docling OCR. Vision Guide
  • Jupyter Notebook Support β€” File β†’ Open… a `.ipynb` (or double-click / `soffice notebook.ipynb`) creates a Writer document with markdown, editable code fields, and β–Ά run buttons against a shared Python kernel. Jupyter in Writer

πŸ€– Local-First Agentic AI & Writing (Writer)

  • Sidebar Chat with Multi-turn Tool Calling β€” Edit, restructure, or expand documents using natural language. 9 core tools plus dozens of specialized sub-agents for page layout, footnotes, bookmarks, revisions, and forms.
  • Format-Preserving Edits β€” Surgical redlines and section rewrites maintain your existing formatting (bold, italics, highlights, font sizes, tables, and nested lists) without clobbering styles.
  • Autonomous Web Research β€” Integrated private smolagents loop with DuckDuckGo. Synthesizes multiple web sources and updates open documents with real-time facts and citations. Agent Search
  • Real-Time Grammar & Proofreading β€” Local, privacy-preserving grammar checking via Harper (fast, auto-installing), LanguageTool, or LLM endpoints with mixed-language sentence detection. Details
  • Math & LaTeX Import β€” Converts LaTeX and MathML into native, editable LibreOffice Math objects. Math Guide

πŸ“Š Diagrams, Slides & Multi-Modal (Draw & Impress)

  • Diagram & Presentation Generation β€” Generate, adjust, and style flowcharts, shapes, connectors, speaker notes, and slide transitions through chat commands or Python scripts. Details
  • LO-DOM Semantic Tree β€” Structural understanding of headings, sections, tables, and relationships across entire documents. Semantic Tree
  • Cross-Document Search & Memory β€” Query other documents in the same folder via local embeddings / hybrid search, with persistent cross-session agent memory. Embeddings Β· Memory

πŸ”Œ Integrations & Extensibility

Full catalog of capabilities: **docs/features.md**.


Installation & Setup

1. Download your chosen `.oxt` package from **Latest Releases and double-click to install (or open LibreOffice and go to Tools β†’ Extension Manager β†’ Add**). *Remember to install only one extension package.*

2. Restart LibreOffice.

3. Quick Configuration:

    > UI Modes: In classic toolbar mode, access tools through the top menubar. In tabbed/ribbon interfaces, use the WriterAgent chat sidebar and/or the Python sidebar (Writer + Calc): Settings `βš™`, Python `🐍`, LaTeX math or Edit cell, search `πŸ”` (WriterAgent chat only), and full menus via `☰`.

    For detailed setup instructions, see the **Install and Troubleshooting Guide**.


    Showcase

    Python in LibreOffice Writer

    Python in LibreOffice

    Spreadsheet Analytics & Dashboard

    Chat Sidebar with Dashboard

    Hermes + Opus 4.6 (Autonomous Web Research)

    Hermes-Agent / Opus-4.6 Akihabara

    Math Expressions & LaTeX

    Math Expressions

    Arch Linux Resume

    Opus 4.6 Resume

    Diagrams in Draw

    Sonnet 4.6 Visual

    Benchmarks & Evaluation

    WriterAgent's LLM Evaluation Suite benchmarks models on Writer, Calc, and Draw tasks. The 2026-09-01 snapshot uses the 17-task string harness β€” it emulates document and tool behavior without running LibreOffice (OpenRouter, live token pricing). Full methodology: docs/eval/benchmarks.md.

    Cost–quality Pareto fronts

    Distance-to-frontier view: docs/eval/pareto-distance.svg.

    ModelCorrectnessavg task score (0–1)ValueCorrectnessΒ² Γ· $/task
    openai/gpt-oss-120b0.9711755
    openai/gpt-oss-20b0.687725
    upstage/solar-pro40.682719
    google/gemma-4-31b-it0.918519
    meta/muse-spark-1.3-contributor0.920335
    poolside/laguna-xs-2.10.767272
    google/gemma-4-26b-a4b-it0.621255
    poolside/laguna-s-2.10.700227
    deepseek/deepseek-v4-flash-07310.928221
    z-ai/glm-5.3-flash0.913202
    openai/gpt-5.6-luna0.922166
    mistralai/mistral-small-26030.571152
    bytedance-seed/seed-2.0-mini0.800107
    google/gemini-3.5-flash-lite0.68896
    ibm-granite/granite-4.2-8b0.80288
    meta/muse-glimmer-30b0.92880
    inception/mercury-2.5-preview0.81174
    qwen/qwen3.8-27b0.92235
    minimax/minimax-m30.76128
    nvidia/nemotron-3.5-lightning0.31523
    x-ai/grok-4.60.98221
    z-ai/glm-5.30.7027
    qwen/qwen3.8-flash0.0000

    Documentation & Architecture

    TopicDocumentation Link
    Feature Indexdocs/features.md
    NumPy & Python in Calcdocs/enabling_numpy_in_libreoffice.md Β· docs/calc/py-data-shapes.md
    LibrePy Core Architecturedocs/scripting/librepy-split.md
    Domain Helper Functionsdocs/scripting/numpy-domains.md Β· docs/calc/analysis-tools.md
    Full Architecturedocs/writeragent-architecture.md Β· docs/framework/formal-verification.md
    Model Context Protocol (MCP)docs/mcp-protocol.md
    Embeddings & Searchdocs/embeddings.md
    Benchmarksdocs/eval/benchmarks.md
    Localization (34 Locales)docs/localization.md
    Code ExplorerDeepWiki
    Cursor / Agent Skillscursor-libreoffice Β· libreoffice-skill

    Under the hood, all agentic interactions are governed by a formally verified finite state machine with strict type checking and static analysis.

    State machine architecture

    Project Evolution

    A chronicle of building a Python runtime and AI suite inside LibreOffice:


    Contributing & Development

    Ask DeepWiki

    Discussions

    Prerequisites: Python 3.11–3.13 for development (pinned to 3.13 via `.python-version`), uv. Run `make check-setup` to verify. On macOS: install `make`, `gettext`.

    bash
    git clone https://github.com/KeithCu/writeragent.git
    cd writeragent
    uv python install 3.13
    uv sync
    make deploy          # Builds & installs WriterAgent.oxt (or: make deploy writer)
    make test
    make help

    To build and test the standalone extension variants:

    bash
    # Standalone Python / NumPy compute suite (LibrePy)
    make build-core      # Produces build/LibrePy.oxt
    make deploy-core     # Installs LibrePy.oxt (removes WriterAgent)
    
    # Standalone Harper grammar checker (LibreHarper)
    make build-harper    # Produces build/LibreHarper.oxt
    make deploy-harper   # Installs LibreHarper.oxt

    See AGENTS.md (invariants), docs/repo-map.md (entry points), and docs/scripting/librepy-split.md for architecture details.


    Credits

    ProjectContribution
    localwriterOriginal Writer LLM extension (John Balis)
    LibreCalc AI AssistantCalc AI foundation and inspiration
    LibreOffice MCP ExtensionMCP server patterns, Makefile, tool registry
    Hermes AgentTool-call parsers, JSON repair, memory patterns
    latex2mathmlLaTeX β†’ MathML
    mathml-to-latexMathML β†’ LaTeX (Writer formula export)
    isodateISO 8601 duration parse/format (Calc wire)

    License

    GNU GPL v3 (or later) β€” see `LICENSE`. Originally MPL 2.0; relicensed in 2026 for stronger reciprocity and library compatibility.

    YearContributionContributor
    2024Original releaseJohn Balis
    2025–2026Config, registries, build systemquazardous
    2026Calc integration (originally MIT)LibreCalc AI Assistant
    2026Modifications and relicensingKeithCu

    Frequently asked questions

    What is writeragent?

    writeragent is A LibreOffice extension that adds agentic AI and NumPy features.

    How do I install writeragent?

    Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

    Is writeragent open source?

    Yes β€” it is hosted on GitHub at https://github.com/KeithCu/writeragent and has 111 stars.

    Related MCP tools

    Run your own MCP server? See who uses it and what to fix.

    Measure it with TrackMCP