LogiShell

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.