verified context layer
Contracts that verify themselves.
Requirement and implementation are bound by a pair of hashes. Any harness, any model. We never generate code — that's why our verdict is worth something.
Product person? 60 seconds, no terminal
Watch an agent break a payments module, get caught by an independent verdict, fix it — and see the second verification cost $0.
Developer? Run it on your repo
One curl, no install: map your repo, freeze contracts on the code that matters, verify every agent change — from your terminal or from inside Claude Code / Codex.
Terminal path ↓Try the CLI — one command, nothing to install
The real loop lives in your terminal, next to your agent. If you have Node, this runs the whole story on a throwaway project:
curl -fsSL https://mvp.logishell.com/lsh.mjs -o /tmp/lsh.mjs && node /tmp/lsh.mjs demo
Then on your own repo: node /tmp/lsh.mjs scan src/ → confirm --all → let your agent change the code → verify. Contracts live in .logishell/ inside your project.
Connect your harness — any harness
We support every harness because we're not allowed to have one. One MCP server, one registry — Claude Code, Codex, Cursor talk to the same contracts. The agent can scan and verify; only a human can confirm.
curl -fsSL https://mvp.logishell.com/lsh-mcp.mjs -o /tmp/lsh-mcp.mjs # Claude Code claude mcp add lsh -- node /tmp/lsh-mcp.mjs # Codex (~/.codex/config.toml) [mcp_servers.lsh] command = "node" args = ["/tmp/lsh-mcp.mjs"]
The primitive: LogicBlock
contract_hash
An executable specification confirmed by a human. The reference. One contract — many implementations: different models, different languages.
impl_hash
An implementation automatically checked against the contract. The defendant. Cosmetics (formatting, comments) never change the hash.
Verdict
Cached by the pair. Re-checking a known pair costs zero. Content-addressed: reproducible by any third party.
How it works
1 · scan
Paste your code — scan proposes contract drafts from existing functions. We propose, a human confirms.
2 · confirm
Confirm a contract — its canonical form gets a contract_hash and becomes the reference.
3 · verify
Paste an implementation (from any agent, from any harness) — get a verdict for the pair (contract_hash, impl_hash).
Why we're neutral
A tool that writes code cannot be the one that rules on its correctness. That's a structural conflict of interest, not a question of model quality. We support every harness because we're not allowed to have one.