The Language Provider Protocol (LPP) is a versioned protocol between tooling clients and long-running language-provider processes in the WrightKit ecosystem.
A provider is a protocol role, not the product identity of a language
repository. An independently usable language implementation such as opy-rs
or del-rs may expose an LPP provider process so Wright, editors, agents, or
other tooling clients can consume diagnostics, semantic queries, and validated
source edits without sharing compiler internals. The same implementation may
also expose its own Rust library and standalone CLI and must not require Wright
for standalone use.
LPP therefore decouples tooling integration from implementation ownership:
standalone language implementation
├─ library / CLI
└─ optional LPP provider process
↓
tooling clients
Wright / agents / editors
LPP passes source text, positions, diagnostics, semantic-query results, and source-level edits without exposing provider ASTs/HIR or Wright internal representations. It does not prescribe how a language implementation organizes its frontend, compiler, reconstruction, or Workshop integration internally.
- Protocol version: 1.0 (specified in
spec/lpp-v1.md). - Repository state: initial published contract and conformance suite.
- Wright is a client/consumer of the protocol; LPP is not a dependency from the language implementation back into Wright tooling internals.
AGENTS.md Repository ownership, routing, and validation rules
LICENSE MIT License
spec/lpp-v1.md Normative LPP v1 specification
conformance/README.md Provider conformance workflow
conformance/fixtures/v1/ Versioned JSON-RPC message fixtures
conformance/mock-provider/ Reference mock provider for x-demo-lang
conformance/runner/ Conformance runner for provider binaries
- Read
spec/lpp-v1.mdfor the wire specification. A provider can be implemented using only the specification and conformance fixtures. - See
conformance/README.mdfor the fixture runner and mock-provider workflow.
Conformance proves that a process speaks LPP correctly. It does not prove that the underlying language implementation is semantically complete or that Wright supports every capability of that implementation.
cargo fmt --all --check
cargo clippy --all-targets -- -D warnings
cargo test --workspace
./target/release/lpp-conformance-runner --validate-only --fixtures conformance/fixtures/v1
./target/release/lpp-conformance-runner --provider ./target/release/lpp-mock-provider --fixtures conformance/fixtures/v1
CI runs the Rust checks and the full conformance run on every push and pull request.
This repository is licensed under the MIT License. The specification and conformance fixtures are free to use in any implementation. Implementations that expose an LPP provider do not need to use the MIT License for their own code.
The specification was written from scratch for WrightKit without copying code or text from upstream compilers or language services. Upstream projects such as OverPy and OSTW remain external compatibility references for their respective implementations, not for the LPP protocol itself.