Skip to main content

Odibi Anchor

Odibi Anchor is a provider-neutral reliability and evidence layer for engineering agents. It gives an agent a bounded, auditable lifecycle for selecting context, authorizing work, checking changes, and retaining evidence without coupling the workflow to one host.

Odibi Anchor requires Python 3.11 or newer and is licensed under Apache-2.0.

New installation? Follow the getting-started guide for package selection, launch-ready PortfolioV1 scaffolding, host setup, preparation, and recovery.

Install and run locally

python -m venv .venv
. .venv/bin/activate                 # Windows: .venv\Scripts\activate
python -m pip install "odibi-anchor==0.3.17"
anchor help

The anchor CLI emits deterministic JSON. One-shot execution does not preserve process state; use anchor batch or anchor shell for a sequence that shares a bootstrap:

printf '%s\n' '{"action":"status"}' '{"action":"audit_history"}' | anchor batch -

Check routing before bootstrap, or install the packaged agent contract into a repository:

anchor doctor
anchor setup-host amp --target /absolute/path/to/repository

For source development, clone the repository, create a virtual environment, and run python -m pip install -e '.[dev,mcp]'.

MCP quickstart (stdio)

Install the MCP extra and configure one long-lived stdio server:

python -m pip install "odibi-anchor[mcp]==0.3.17"
export ANCHOR_HOME=/absolute/writable/odibi-anchor-state
export ANCHOR_PROJECT_ID=my-project
export ANCHOR_PROJECT_ROOT=/absolute/path/to/my-project
python -m odibi_anchor.mcp_server

Equivalent client configuration:

{
  "command": "/absolute/path/to/python",
  "args": ["-m", "odibi_anchor.mcp_server"],
  "env": {
    "ANCHOR_HOME": "/absolute/writable/odibi-anchor-state",
    "ANCHOR_PROJECT_ID": "my-project",
    "ANCHOR_PROJECT_ROOT": "/absolute/path/to/my-project"
  }
}

The project must already be registered under ANCHOR_HOME. See runtime rollout and MCP integration for setup and operational details.

Databricks quickstart

Install the pinned public release in a Databricks notebook:

%pip install "odibi-anchor[databricks]==0.3.17"
dbutils.library.restartPython()

Before the first launch, complete the copy-ready personal-workspace setup. It creates a durable UC Volume, installs host guidance, and writes the portfolio where the managed launcher expects it. Do not use /tmp for the portfolio or a UC Volume for live SQLite state.

After that one-time setup, every fresh Python process launches with only the project ID:

import runpy

user = spark.sql("SELECT current_user()").first()[0]
instruction_root = f"/Workspace/Users/{user}"

namespace = runpy.run_path(
    f"{instruction_root}/.assistant/agent_bootstrap.py",
    init_globals={"ANCHOR_PROJECT_ID": "personal-work"},
)
anchor = namespace["anchor"]
startup = namespace["STARTUP_PACKET"]
assert startup["status"] == "ready"

If the installed distribution is missing or stale, the launcher returns the exact pinned latest-stable install and Python-restart remediation; run it and rerun the same launcher call. The anchor callable is process-bound and comes from the launcher namespace (or the return value of odibi_anchor.launch()); from odibi_anchor import anchor is intentionally unsupported. Run doctor only when additional startup diagnostics are needed.

Host setup refuses to overwrite an existing user-owned .assistant tree. The setup guide explains both safe choices: retain existing guidance under a dedicated Anchor instruction root, or remove an obsolete installation only after identifying it. Workspace targets are published and byte-verified through the Databricks Workspace API rather than the FUSE mount.

ANCHOR_HOME must be writable local filesystem storage outside the installed package/source checkout. Let portfolio preparation set it. On Databricks, /tmp is session-scoped and must not be treated as durable. Configure an approved durable snapshot root while keeping live state local; Anchor checkpoints substantive authority writes and restores only the latest absent SQLite database and managed project artifacts through verified immutable files. Recoverable per-file bookkeeping flushes at durable lifecycle boundaries instead of publishing a snapshot per call. Do not run live SQLite state from Workspace Files, DBFS, Volumes, or another network/distributed filesystem. See portfolio and durable state and Databricks MCP guidance.

Import legacy v0.11.0 state

Legacy Context Workbench state is never selected or mutated implicitly. Import one exact v0.11.0 home into a new, non-overlapping Anchor home with the explicit two-step API:

from odibi_anchor import apply_legacy_import, plan_legacy_import

plan = plan_legacy_import(
    "/absolute/path/to/legacy-home",
    anchor_home="/absolute/path/to/new-anchor-home",
)
# Inspect the source, destination, schema set, and plan_id before approving the write.
result = apply_legacy_import(plan)

The importer fails closed on destination collisions, incompatible/newer schemas, symlinks, ambiguous managed-project targets, or open tasks. It copies project artifacts, rewrites only exact managed-project self-targets, and leaves the source unchanged. Legacy database history is preserved in a verified backup but is not activated: its branded task/memory payloads are not an Anchor runtime contract. The first Anchor launch creates fresh runtime ownership state; new tasks are established through the normal lifecycle.

Routing and concurrent runtimes

Server routing is an immutable binding between ANCHOR_PROJECT_ID and the exact canonical ANCHOR_PROJECT_ROOT. Startup verifies the ID, registered target, and requested root agree. If the root matches exactly one managed project, launch() can derive its ID; ambiguous roots fail closed and require an explicit ID. Once bound, changing environment variables or workspace/.active_project cannot redirect that process. .active_project is an interactive preference only—it is not routing authority.

Concurrent runtimes may share an ANCHOR_HOME only when it is a local filesystem that provides the required locking and atomic filesystem semantics. Do not place a concurrently shared home on DBFS, object storage, an NFS-like mount, or another network/distributed filesystem. Bind every process explicitly, use distinct project IDs for distinct roots, and use a separate per-project ANCHOR_HOME when local-filesystem guarantees are uncertain. A shared home does not make same-project conflicting writers safe.

Security and support

Odibi Anchor records operational state under ANCHOR_HOME; keep it outside source control and protect it as potentially sensitive. Never commit environment files, runtime databases, session records, or generated manifests.

For bugs and feature requests, use GitHub Issues. Security-sensitive reports should not include credentials, private repository content, or runtime state in a public issue.

See CONTRIBUTING.md, SECURITY.md, CHANGELOG.md, and LICENSE.

Metadata

Release files for odibi-anchor 0.3.17

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

Source distribution (sdist)

Source distribution for odibi-anchor 0.3.17
File Size Uploaded Provenance Actions
odibi_anchor-0.3.17.tar.gz 3.3 MB With provenance Details for odibi_anchor-0.3.17.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for odibi-anchor 0.3.17
File Interpreter ABI Platform Actions
odibi_anchor-0.3.17-py3-none-any.whl Python 3 none any Details for odibi_anchor-0.3.17-py3-none-any.whl

Total release size: 6.2 MB

Release files / odibi_anchor-0.3.17.tar.gz

Download URL odibi_anchor-0.3.17.tar.gz
Size 3.3 MB
Tags Source
SHA-256 checksum
How to use checksums
ab7dcfb6d969f384d3fdb5c278a901a0cd1ae3d0bcfa7e27fcde35d13cde0857
BLAKE2b-256 checksum
How to use checksums
c59531872c70cbc65766822e16da4b540e2a1d60adc85e90d247338e0e9bdae5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 20, 2026.

Transparency log

Release files / odibi_anchor-0.3.17-py3-none-any.whl

Download URL odibi_anchor-0.3.17-py3-none-any.whl
Size 2.9 MB
Tags Python 3
SHA-256 checksum
How to use checksums
ab42b4e12f7769f8514095c972a6579f67045abb4facd907c8e4673c3ed0810a
BLAKE2b-256 checksum
How to use checksums
05a1433712cabd7fb650542faa6981609495d5807d177a5c3ec9b92711f0a4b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 20, 2026.

Transparency log

Security for odibi-anchor 0.3.17

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 odibi_anchor-0.3.17.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 Sep 20, 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.

Release history Release notifications | RSS feed

This release

0.3.17 This release

2 release files Full provenance

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