Journeys
Journey: Extend Without Forking: Plugins & WASM
Extend the context layer without patching its source. Declare a tool in a plugin manifest, react to lifecycle hooks, or compile a custom compressor or chunker to a sandboxed WASM module — each is discovered, advertised in /v1/capabilities and conformance-checked exactly like a built-in.
You areadding your own tools, compressors or providers
plugin.toml[[tools]]hooksLEAN_CTX_WASM_DIRconformance/v1/capabilities
You need a domain tool (an internal lookup) and a custom compressor for your data shape. Forking the engine and maintaining a patched build is a non-starter. LeanCTX gives you three escalating ways to extend it, none of which touch its source.
1. A tool the agent can call — a plugin manifest
LeanCTX registers it as a native MCP tool at startup and advertises it in
/v1/capabilities:
# plugin.toml
[plugin]
name = "crm"
version = "0.1.0"
[[tools]]
name = "crm_lookup"
description = "Look up an account in the CRM"
command = "crm-bin" # gets JSON args on stdin, returns text on stdout
timeout_ms = 8000
input_schema = { type = "object", properties = { account = { type = "string" } }, required = ["account"] }
[trust]
permissions = ["network"] # declared + surfaced for consent
2. React to lifecycle events — hooks
Declare a command per event — pre_read, post_compress, on_knowledge_update,
on_session_start / on_session_end. Hooks are zero-cost when nothing listens.
3. A custom compressor / read-mode / chunker — WASM
Compile it to a sandboxed WASM module (any language) and drop it in a directory; LeanCTX discovers it by file stem and registers it as a first-class extension:
export LEAN_CTX_WASM_DIR=~/.local/share/lean-ctx/wasm # *.wasm → registered compressors
lean-ctx conformance # your extension is checked like a built-in
/v1/capabilities → extensions.compressors: ["identity","markdown","prose","whitespace","my_ext"]
conformance scorecard → [ok] extensions/compressor:my_ext
4. Under the hood — core/plugins/ + core/wasm_ext.rs
Plugins fire hooks and register manifest tools; the WASM host implements
wasm-abi-v1 (alloc + lctx_compress / lctx_provider_fetch) with a
host-enforced byte budget, so a faulty guest can never overrun. Everything runs
under the extension trust model, scrubbed env, cwd jail, timeout, declared
permissions surfaced for consent, and is proven by the conformance suite.
Payoff
The engine is extensible in any language, sandboxed, discoverable and conformance-checked, your tools and transforms are first-class without ever touching LeanCTX’s source.