ANCHOR
Agent-Native Canvas to Help Organize Resources.
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 canvaspump-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
- Install and upgrade
- Documents and canvases
- Connect an agent
- Manual agent configuration
- CLI reference and MCP reference
- Checking a reference
- Architecture
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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| anchor_kb-0.5.0.tar.gz | 2.9 MB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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 logSecurity 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.
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 logA 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.