AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻譯準備中
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證INTERPLANE: open interoperability protocol between AI models and agent runtimes. Models express intent. Runtimes retain authority.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗INTERPLANE is an open interoperability protocol between AI models and agent runtimes.
Models express intent. Runtimes retain authority. INTERPLANE defines the boundary between them.
This repository holds the protocol (normative text and JSON Schemas), the Rust reference implementation, the conformance fixtures, the AIEN reference adapter, and the benchmark and qualification records behind every published result. A model's output is parsed into tool requests; the runtime decides each request with its own policy; INTERPLANE carries the request and the decision across the boundary and refuses to upgrade a decision. Website: interplane.io (its source is aien-dev/interplane.io).
Development follows Human-Directed Agentic Engineering (HDAE): humans define goals, architecture, constraints, acceptance criteria, and stopping points; agents implement, execute checks, diagnose failures, and revise within those boundaries. Human review retains responsibility for claims, acceptance, and release decisions. This development method does not alter the protocol boundary: runtimes retain execution authority.
For the documented method and a systems-software case study, see Gregory M. Kurtzer, Ginux: Building an Independent Kernel That Runs Linux Userspace through Human-Directed Agentic Engineering (2026).
Model side: Qwen3.5 Ajax (when published) other local or hosted models
\ | /
----- INTERPLANE -----
/ | \
Runtime side: AIEN other runtimes
INTERPLANE belongs to neither side. AIEN is the reference runtime (Odysseus was the first, through an adapter removed on 2026-10-15; see "Removed adapters" below); Qwen3.5 is the first qualified model dialect. Each runtime keeps its own tools, policy, approvals, memory and execution. INTERPLANE only standardizes what crosses between them and makes it measurable.
INTERPLANE is an attachment of AienOS, the core tree of AIEN: it lives in its own repository and plugs into the core at a boundary. Related repositories:
adapters/aien pins its aien-capability and aien-mcp crates. Its aien-test
tool is the Spark judge that tests every pull request here.adapters/aien/PINS.interplane/<commit>/bundle.json.rust/Cargo.toml). Pre-1.0.docs/REPORT-0.2.md). 0.3 (Trust) is closed with its gate passed
(docs/REPORT-0.3.md). 0.4 and 0.5 are planned, not built (ROADMAP.md).docs/PIPELINE.md).STATUS.md is the only place that says what is implemented, tested, conformant or
qualified. Nothing elsewhere in this repository claims more than STATUS.md does.
cd rust && cargo run -q -p interplane-crossveil --example offline
A scripted model fetches a web page that carries an injected instruction, then "obeys" it by
asking to send an email, write a file and append a note. The reference pipeline with its mock
runtime denies the email and the write, holds the note for a person's approval (untrusted content
is in view) and executes none of them. The example checks this and exits 1 on any difference. The
Spark gate INTERPLANE-RUST runs it (see "Build and test").
To connect your own program, see docs/WRITING-AN-ADAPTER.md and its
runnable example rust/crates/interplane-crossveil/examples/todo_adapter.rs (run it from rust/
with cargo run -q -p interplane-crossveil --example todo_adapter): a to-do list host with its own
policy, an approval a person grants and one they decline.
| Module | What it is | Status |
|---|---|---|
| Core | normative JSON Schemas (2020-12) for envelope, intent, capability, decision, result, event, catalog, selection, input record, probe report; versioning and error codes | see STATUS.md |
| Lenshift | model dialect parsers and result renderers: openai, openai_stream, qwen35, aien_legacy; ajax reserved | see STATUS.md |
| Crossveil | the authority-boundary contract: two runtime callbacks, a lifecycle with fail-closed invariants, trust classes | see STATUS.md |
| CrossAxis | explicit, versioned capability mapping; a deterministic domain selector with a before/after receipt; bounded expansion | see STATUS.md |
| Interplane Probe | measured capability qualification of an OpenAI-compatible endpoint | see STATUS.md |
| Conformance | 106 conformance cases plus 56 dialect fixtures; the Rust runner must reproduce the recorded verdicts byte for byte | see STATUS.md |
| Vectorveil | the envelope and canonical JSON; no transport framework | envelope only |
| RelayLine | the event vocabulary for multi-round exchanges | contract only |
The counts 106 and 56 are what interplane-conformance and interplane-corpus validate report on
main (see "Build and test").
spec/ normative Markdown + spec/schemas/*.schema.json
rust/ Cargo workspace: interplane-core, -lenshift, -crossaxis, -crossveil, -conformance, -probe
dialects/ per-dialect fixtures (fixtures/) and recorded provider streams (replay/)
conformance/ canonical fixtures, recorded verdicts (expected/), trust corpus freeze
adapters/ aien/ reference adapter (depends on its host; Core never does); odysseus/ keeps catalog records only
examples/ receipt/ (before/after receipt); the offline and to-do examples are in rust/crates/interplane-crossveil/examples/
bench/ CrossAxis benchmark corpora, pre-registered protocols (0.2, 0.2x, 0.3), published runs (records only)
qualification/ real-model probe captures, evidence and reports
provenance/ companion manifest verifier, outside Core (ADR 0004)
docs/ reports (REPORT-*.md), PIPELINE.md, WRITING-AN-ADAPTER.md, plans, analysis
docs/adr/ decisions
tests/gates/ the Spark test gates and their one entry point, run.sh
.aien/ Spark pipeline settings: gates that always run, the bundle verification key
STATUS.md what is implemented, tested, conformant or qualified
ROADMAP.md the layers and where each stands
CHANGELOG.md changes by version
CURRENT_STATE.md what the host projects' live code actually contained when this started
You need the Rust toolchain named in rust-toolchain.toml (1.99.0); rustup picks it up
automatically. From the repository root:
cd rust
cargo test --all
cargo run -q -p interplane-conformance --bin interplane-conformance -- ../conformance/fixtures --out /tmp/verdicts.json
cmp /tmp/verdicts.json ../conformance/expected/verdicts.json
cargo run -q -p interplane-conformance --bin interplane-corpus -- validate
The cmp line prints nothing when the verdicts match the recorded reference byte for byte.
Every pull request is tested on the DGX Spark, not on GitHub (see docs/PIPELINE.md). Each gate
is a file in tests/gates/ and runs tests/gates/run.sh <step>; you can run a step yourself the
same way:
| Gate | Step | What it checks |
|---|---|---|
INTERPLANE-NO-PYTHON | no-python | no Python file is tracked; runs on every change (.aien/always) |
INTERPLANE-SCHEMAS-AND-FIXTURES | schemas-and-fixtures | schema self-check, then every fixture against the schemas |
INTERPLANE-RUST | rust | fmt, clippy, all tests, both offline examples, the 106 verdicts equal conformance/expected/verdicts.json |
INTERPLANE-PACKAGE | package | every crate packages and builds from its .crate file |
INTERPLANE-NEGATIVE-CONTROLS | negative-controls | trust corpus digests, deliberately broken variants are detected, matrix equals the recorded one |
INTERPLANE-PROVENANCE | provenance | the provenance verifier's tests and its six fixture verdicts |
INTERPLANE-ADAPTER-AIEN | adapter-aien | the AIEN adapter and its T4 subset; needs the sibling checkouts ../aegis-runtime and ../aien-protocols |
For example, tests/gates/run.sh no-python prints AIEN-OBS python_files_found false and exits 0.
STATUS.md: the state of every component, with the fixture or run that backs it.docs/REPORT-*.md: the published reports for 0.1, 0.2, 0.2x, 0.3 and the adapter reproduction.bench/runs/: the recorded benchmark and trust-gate runs.qualification/: real-model probe captures and reports (Qwen3.5-9B on Ollama, llama.cpp and SGLang).adapters/aien/evidence/: recorded runs of the AIEN adapter against a live AIEN daemon.Two Python adapters were removed on 2026-10-15 under the project rule that no Python ships here:
adapters/odysseus: ran the Odysseus agent runtime as an INTERPLANE authority. It was the T3 runner
of the closed 0.3 trust gate and the runtime of the 0.2 and 0.2x bench campaigns. Odysseus is a
Python program, so the adapter could not move to Rust; its catalog records stay in
adapters/odysseus/ because the bench corpus and recorded runs cite them.adapters/motus: let a Lithos AI Motus agent (a Python framework) send its tool calls through
INTERPLANE, using the AIEN authority through the aien-authority-bridge binary, which stays in
adapters/aien.The Rust AIEN adapter (adapters/aien) is the reference adapter. Both removed adapters remain in git
history (present through commit 43ec8f8).
No Python ships in this repository (project rule, 2026-10-15); the INTERPLANE-NO-PYTHON gate fails
if a Python file is tracked. The Python SDK (python/, package interplane) was a second
implementation of every SDK module, kept byte-identical to Rust by the tests of that time. It was
removed on 2026-10-15 and is in git history. Its last conformance verdicts and negative-control
matrix were byte-identical to the Rust ones and are kept as conformance/expected/; the
INTERPLANE-RUST and INTERPLANE-NEGATIVE-CONTROLS gates compare the Rust output against those
files.
The model side is untrusted. Lenshift never executes. CrossAxis never grants. A valid envelope
means "structurally understandable", never "authorized". A signature proves origin, never
authority. The runtime makes every authorization decision through its own policy engine; INTERPLANE
carries the decision and refuses to upgrade it. Denied never becomes authorized by retry.
To report a vulnerability, see SECURITY.md.
Apache-2.0 for the protocol, schemas, fixtures and the Rust reference SDK (LICENSE).
adapters/aien depends on AGPL host projects and is AGPL-3.0-or-later, with its own LICENSE, as
are the Odysseus catalog records in adapters/odysseus; see docs/adr/0002-licensing.md.