The Language Provider Protocol (LPP) is a versioned protocol between tooling clients and long-running language-provider processes in the WrightKit ecosystem.
The protocol allows independent compilers (such as opy-rs and del-rs) to
expose diagnostics, symbol queries, and refactoring operations to tooling clients
(such as Wright or IDE plugins) over a clean, versioned RPC interface without
coupling their internal ASTs. Compilers remain independently usable via their own
libraries and CLIs without depending on Wright.
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 versions: 1.0 and additive 1.1 (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.
Passing conformance confirms that an implementation handles protocol messages correctly. It does not certify that the underlying compiler supports every syntax feature of the language.
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.