# nodus-extension

> Typed, versioned, sandboxed plugin framework for Nodus.
> Part of the [Masterplan Infinite Weave](https://www.the-master-plan.com/) ecosystem.
> Created by Shawn Knight.

nodus-extension provides a plugin framework for Nodus where third-party developers write
`nodus-extension.json` + `extension.py` and the framework loads them via subprocess with
capability gating, ABI versioning, and type checking. It exposes plugin operations to Nodus
scripts via `import "nodus-extension"`.

## Status

v0.1.0 — prepared, not yet published. 126 tests passing, 93% coverage.
Sandbox tier 1 (subprocess isolation). OCI/VM sandbox deferred to v0.2.

## Key Documents

- [README.md](README.md): Install, attach_to_runtime, write an extension, invoke

## Install

```
pip install nodus-extension  # once published
pip install -e . --no-deps  # dev install
```

## Usage in Nodus

```nodus
import "nodus-extension" as ext

ext_load("/path/to/my-extension")
let result = ext_invoke("my-extension", "tool.name", "{\"key\": \"value\"}")
let info = ext_describe("my-extension")
```

## Core Constraints

- Host functions use `_ext_` prefix (`_ext_load`, `_ext_list`, etc.)
- .nd wrappers use `ext_` prefix (same split as nodus-memory)
- `ext_invoke` takes args as JSON string — not a Nodus map
- Capability gate: extension must declare `"tool.invoke"` to call tools
- Subprocess sandbox only in v0.1

## Ecosystem

- nodus-lang: https://github.com/Masterplanner25/Nodus (required dep)
- Masterplan Infinite Weave: https://www.the-master-plan.com/

## Creator

Shawn Knight — [Masterplan Infinite Weave](https://www.the-master-plan.com/)
- [Duality of Progress: Master Index](https://medium.com/masterplan-infinite-weave/2025-chatgpt-ai-the-duality-of-progress-master-index-strategic-manifesto-4c96cf98348a) — the framework context
- [Why I'm Building A.I.N.D.Y.](https://medium.com/masterplan-infinite-weave/2025-chatgpt-ai-the-duality-of-progress-why-im-building-a-i-n-d-y-or-any-tool-really-a138f7860fba) — strategic context
