ANCHOR
Agent-Native Canvas to Help Organize Resources
Source-Grounded Knowledge Canvas for Traceable Engineering Document Extraction

ANCHOR is a tool that lets you and your agent work with engineering documents.
Drop a PDF onto a canvas. The agent reads it and pulls the values you need into a spec table. Every value links back to the page and bounding box it came from, so you can click and see the source.
Drop FMU simulation models onto the same canvas and wire the extracted values into their parameters.
It runs on your laptop. Data lives under ~/anchor-data. Agents talk to it over MCP, so it works with Claude Code, Cursor, or any MCP client. There's an HTTP API and a CLI too.
First five minutes: docs/getting-started/tutorial.md.
Install
Two paths, depending on whether you want to use ANCHOR or hack on it.
Use it (from PyPI)
uv tool install anchor-kb
anchor and anchor-mcp are now on your PATH globally. The wheel
includes the prebuilt frontend, so no Node toolchain is required to
just run it.
If you want LLM-backed gold region extraction on your first PDF upload,
create a .env file before starting ANCHOR; see
Enable gold region extraction. Installation
itself does not require an API key.
anchor serve # -> http://127.0.0.1:8002
Requires Python >= 3.12. CI tests Linux and runs CLI smoke checks on
macOS and Windows; verify browser and PDF workflows on your target platform.
If you prefer plain pip:
pipx install anchor-kb
# or, in a virtualenv:
pip install anchor-kb
Optional extras:
| Extra | Install | Adds |
|---|
fmus | uv tool install 'anchor-kb[fmus]' | FMU simulation runtime (fmpy). Without it, FMU tools fail closed unless you opt into the synthetic demo with ANCHOR_FMU_DEMO=1. |
Hack on it (from source)
git clone https://github.com/Novia-RDI-Seafaring/anchor
cd anchor
uv sync --extra dev # adds pytest, ruff, import-linter
pnpm --dir web install
Start the backend in one terminal:
uv run anchor serve
Start the frontend development server in a second terminal:
pnpm --dir web dev
Open http://localhost:5173 for the development UI. The backend remains on
http://127.0.0.1:8002.
Source development requires Node.js 20+ and pnpm 10. If pnpm is not installed
globally, use the Corepack form instead: corepack pnpm@10 --dir web install
and corepack pnpm@10 --dir web dev.
For normal use, run anchor init in a project folder and leave
ANCHOR_DATA_DIR unset. Commands then share the project's anchor.toml.
Configuration precedence is: explicit flags, ANCHOR_* environment variables,
.env, project anchor.toml, then built-in defaults.
Releases are tag-driven: pushing a v* tag triggers the
release workflow, which publishes
to PyPI via OIDC trusted publishing (no token sits in the repo). See
PUBLISHING.md for the full release process.
Quick start
To produce gold regions, configure a .env file before running anchor demo
or anchor ingest; see Enable gold region extraction.
Without it, ANCHOR still produces the silver document extraction.
# 0. One-shot: seed a `demo` workspace with six placeholder spec slots
# and start the server. If you already have the optional local demo PDF,
# ANCHOR ingests it too; otherwise ingest your own PDF in step 3.
anchor demo
# Or step by step:
# 1. Configure a project folder and create your first canvas
mkdir my-anchor-project
cd my-anchor-project
anchor init
anchor canvas create my-first-canvas
# 2. Start the server (serves the canvas UI, HTTP API, and browser SSE updates)
anchor serve
# 3. (in another terminal) Ingest a PDF
anchor ingest /path/to/datasheet.pdf
# 4. Open http://localhost:8002/c/my-first-canvas in your browser
See docs/getting-started/tutorial.md for a walked-through anchor demo -> "agent fills the placeholders" tour.
That's the whole loop. Every PDF you ingest becomes a structured set of regions on disk; every canvas you create is a folder you can zip and email.
Using ANCHOR with an AI agent
ANCHOR exposes its tools over MCP (Model Context Protocol). For Claude
Code, the quickest path is the plugin marketplace. It needs no prior
install of the anchor CLI, only uv:
/plugin marketplace add Novia-RDI-Seafaring/anchor
/plugin install anchor@anchor