Skip to main content

ANCHOR

Agent-Native Canvas to Help Organize Resources.

PyPI version Python versions License: MIT

ANCHOR is a local canvas for working with engineering documents alongside an external AI agent. Add a PDF, ask the agent for one specification table, and click each row's source anchor to inspect the cited page or region. Requests, clarifications, and proposed edits can remain attached to the work on the canvas.

The browser, CLI, and MCP tools use the same project data. A project is a folder containing an anchor.toml marker and a hidden .anchor_data/ directory. An environment selects the provider and data-handling policy for its projects. ANCHOR runs on your computer; a connected agent or configured model endpoint may receive document content.

First project

You need Python 3.12+, uv, and an MCP-capable agent client. The published wheel includes the browser UI, so normal use does not require Node.js.

This example uses the harness provider: your agent interprets PDF pages with its own model, with no ANCHOR API key. Use a PDF approved for that agent's data policy. Choose --provider local instead for local Docling extraction without model-assisted gold regions; the Quickstart explains both paths.

uv tool install anchor-kb
anchor env create study --provider harness --yes
anchor models prefetch --env study
anchor project create pump-study --env study
anchor use study pump-study
anchor canvas create pump-selection --title "Pump selection"
anchor install codex --env study
anchor serve --env study --project pump-study

Use claude-code, claude-desktop, or cursor instead of codex for those clients. Restart or reconnect your agent after registration. Model prefetch needs network access and can take several minutes; later local processing can use the cache.

Open the server's printed URL, normally http://127.0.0.1:8002, and open pump-selection. Drag a PDF onto the canvas. With harness, the card waits for your agent to handle its ingestion intent. Ask:

In ANCHOR project pump-study, process the pending PDF ingestion intent on canvas pump-selection. Then create one spec table of the operating limits, preserving units and product variant, with a source reference on every row. Flag values that the document does not state.

Inspect the resulting row anchors in the PDF dock. A page-only reference opens the page; a precise locator can highlight the cited cell, item, region, or box. Check the claim against the source before using it.

For a request about existing canvas objects, use mark up (i), add words or drawings, and click send to agent. The agent can ask a question or stage a suggestion in that thread. Review the preview and approve, decline, or send feedback. An empty placeholder does not submit work by itself. ANCHOR provides the tools and request queue; your external agent must retrieve the requests.

Follow the Quickstart for the complete setup and the tutorial for the review flow.

Pick a provider

Provider Interpretation Where content goes
local Local Docling extraction; no model-assisted gold regions ANCHOR processing stays on this computer after local models are cached.
harness Your agent interprets pages To the connected harness and potentially its model provider. No ANCHOR API key.
ollama Configured vision model To your Ollama endpoint, on this computer or another host.
openai, azure, custom Configured vision endpoint To that endpoint; credentials and model setup are required.

Gold-region semantic search needs gold regions and embeddings. Local-only extraction still supplies page text, viewing, and available layout geometry. An agent can retrieve that content even in a local environment, so select the agent's data policy as well as ANCHOR's provider. See Provider setup.

Where data lives

For a managed project created with anchor project create:

~/.anchor/envs/study/
  env.toml
  projects.toml
  projects/pump-study/
    anchor.toml
    .anchor_data/
      bronze/       original PDFs and metadata
      silver/       page extraction, text, rendered pages, and geometry
      gold/         interpreted regions, when produced
      canvases/     saved canvases and event logs
      intents/      persistent agent requests and threads

To use your own working folder, run anchor init pump-study --env study there instead of creating a managed project. Back up the whole project folder, including hidden .anchor_data/. Credentials belong to the environment and are separate from that project backup. See Environments and projects and On-disk substrate.

anchor use selects CLI defaults. MCP installers pin an environment; the agent selects a project with open_project or a per-call project argument. One browser server serves one project. If data looks empty, compare those selections using anchor serve-info, list_projects, and anchor_status.

Learn the application

Extensions and limits

The package includes PDF, CAD, SysML, and FMU extension code. CAD and SysML support is experimental. FMU simulation requires the optional runtime:

uv tool install --force 'anchor-kb[fmus]'

Without that runtime, FMU simulation fails closed. ANCHOR_FMU_DEMO=1 explicitly enables synthetic demo output, which is stamped synthetic=true. Inspect a model before wiring spec rows into simulation parameters.

Producer manifests can be discovered and registered through anchor extensions. Registration alone does not launch or proxy an external producer's MCP server. See Extensions and OIP.

A source link supports review; it is not proof. A reference may open a whole page rather than an exact value. Inspect the source and its operating conditions, then record your verdict on the row's anchor.

The HTTP server is unauthenticated and binds to 127.0.0.1 by default. Keep it on loopback, or provide authentication through your own deployment layer before network exposure. Storage is file-based. Shared services provide the same domain behavior across adapters, while locks and event buses are process-local; avoid concurrent writes to the same canvas from separate processes.

Run anchor version to identify your installation. See Releases and CHANGELOG.md for version history.

Develop from source

git clone https://github.com/Novia-RDI-Seafaring/anchor
cd anchor
uv sync --extra dev
pnpm --dir web install --frozen-lockfile

Run uv run anchor serve in one terminal and pnpm --dir web dev in another. Open http://localhost:5173 for the development UI. For a global source install, build the frontend first with pnpm --dir web build, then run uv tool install --force .. Direct git installation does not build the frontend. See Install.

Checks for contributors:

uv run --extra dev pytest
uv run --extra dev lint-imports
pnpm --dir web test
pnpm --dir web exec tsc --noEmit
uv run --extra docs mkdocs build --strict

The backend follows ports-and-adapters layering. Pure domain code lives in src/anchor/core, I/O in infra, protocols in adapters, and producer-specific code in extensions. The React UI lives in web. Changes go through a branch and pull request; see CONTRIBUTING.md.

License

MIT, see LICENSE.

Citation

If you use ANCHOR, please cite the software repository:

@misc{ANCHOR,
  author       = {Lamin Jatta and Christoffer Bj{\"o}rkskog and Mikael Manng{\aa}rd and Johan West{\"o}},
  title        = {ANCHOR: Agent-Native Canvas to Help Organize Resources for Traceable Engineering Document Extraction},
  year         = {2026},
  howpublished = {\url{https://github.com/Novia-RDI-Seafaring/anchor}},
}

GitHub-compatible citation metadata is provided in CITATION.cff.

Acknowledgments

This work was done in the Business Finland funded project Virtual Sea Trial.

Contributing

Open changes as short-lived branches targeting main; see CONTRIBUTING.md. Run uv run --extra dev pytest and uv run --extra dev lint-imports before pushing backend changes. See EXTENSIONS.md for the proposed third-party extension contract and its current implementation status.

Metadata

Release files for anchor-kb 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for anchor-kb 0.5.0
File Size Uploaded Provenance
anchor_kb-0.5.0.tar.gz 2.9 MB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for anchor-kb 0.5.0
File Interpreter ABI Platform
anchor_kb-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 4.7 MB

Release files / anchor_kb-0.5.0.tar.gz

Download URL anchor_kb-0.5.0.tar.gz
Size 2.9 MB
Tags Source
SHA-256 checksum
How to use checksums
42b0226fa406c79c8f5c9659f3311c650c508f0382a8335f2f5249451386726f
BLAKE2b-256 checksum
How to use checksums
9c77e318890746cdaf101d3660e92cf21dcef03286ac7e3a395bdf5abd1ecc9d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / anchor_kb-0.5.0-py3-none-any.whl

Download URL anchor_kb-0.5.0-py3-none-any.whl
Size 1.9 MB
Tags Python 3
SHA-256 checksum
How to use checksums
a06d9e9baa6348efcdd190c5c7770b9fd176b0eb6a1e1519b98a2a98cb75bed6
BLAKE2b-256 checksum
How to use checksums
abbf8faab994097dca6d68ffe3ea47818d27691d43d4c5b888b2e5d42afe33f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Security for anchor-kb 0.5.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for anchor_kb-0.5.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page