The command installs the same signed, notarized app as the .dmg, and it picks the build for this Mac: Apple Silicon or Intel. It also puts lsh on your PATH. Already have the app? Running this again just updates it.
The command installs the same app as the .exe and puts lsh on your PATH. The build is not signed yet, so SmartScreen may say «Windows protected your PC»: press More info and then Run anyway. PowerShell refuses scripts? Run it once as powershell -ExecutionPolicy Bypass -c "irm logishell.com/get | iex".
One line for every distribution: the script picks the .deb where dpkg exists and the AppImage everywhere else, and puts lsh in ~/.local/bin. Nothing is installed as root.
The .dmg is built for Apple Silicon and needs macOS 12 or newer. It is signed and notarized, so macOS opens it without warnings.
Intel Mac? The button hands out the Apple Silicon bundle: take the Intel .dmg instead.
Installed? Press ⌥Space: one gesture calls LOG from anywhere on your Mac.
diff(draft, review.fixed) // what the reviewer changed
costPanel() // local $0, remote to the cent
$ harness ask --role light ✓ local · qwen3.5:4b · 37 tok/s · $0 · works offlinelogishell.com
tl;dr1light and private work runs locally, free→2heavy work goes to the cloud on your keys→3one panel shows what it cost
What you get
Local. Your keys. Any model.
Models get cheaper and stronger every quarter. LogiShell does not bet on one of them: a new model ships, you switch a line in a config, and your shell stays yours.
01 · perimeters
Local + Remote
Two perimeters. Private and light work runs on a model on your own machine: free, offline, nothing leaves. Heavy work goes to the cloud. By default everything that can stay home stays home.
local · $0+remote · your key
02 · byok
Bring your own keys
You pay the provider, not us: we never store a key and never resell your tokens. In the local harness the key lives in the keychain of your own machine and calls go straight from you to the provider. One person, any number of own machines.
keychain→provider→cost panel
03 · adapters
Any model, any harness
Ollama, Claude, GPT, Gemini, Workers AI behind one interface, with MCP to give tools to any of them. Roles pick the model: one writes, a different one reviews, and you see the diff. Providers are suppliers, not a lock.
writer→reviewer→diff
Pricing
The whole core is free.
You pay providers directly with your own keys, or nothing at all on local models. We charge for what costs us money to run. Annual billing is 20% off.
free
Free
$0
The whole core: shell, editor, terminal, canvas, local models, every adapter, your own keys. No account needed to run it on your machine.
function generate(spec){ /* llm */ }
const impl = model.write(spec) // no interface
review(impl) // waits for a human
verify(impl) // no cached verdict
regenerate(); review(); regenerate(); review();
const again = model.write(spec) // snowflake #4718
// ...every generated function is a snowflake...
if(!trusted(impl)) block(); else ship();
const hash = null // no identity
The problem
Code generation scaled. Code trust didn't.
LLMs made implementation nearly free, and reuse nearly impossible. Every generated function is a snowflake: no stable interface, no identity, no proof it works. Writing software is no longer the expensive part. Trusting it is.
spec.md
the ask
model
writes impl #4718
impl #4718
no hash · no identity
human review
queue: 41 waiting
regenerate → re-review → repeat forever
Review is the new wall
Every AI-generated line waits for a human willing to trust it.
Trust evaporates
Generated code has no identity; verified today, anonymous tomorrow.
Code stopped compounding
Teams regenerate and re-review the same logic thousands of times.
Block anatomy
A block is a contract, not code.
computeQuote
ComputeDeterministic
fn computeQuote(LineItem[], Customer) → Quote
in LineItem[] · CustomerQuote
0x6748…1ee9·verdict: verified·cached
1
Typed ports
Inputs and outputs are declared types: teal in, amber out. Blocks only connect when the types line up.
2
Declared effects & cost
Every capability a block touches is on the contract, stated abstractly. A schema that names a cloud binding or a filesystem path is rejected at the perimeter.
3
Content-addressed identity
The hash is the sha256 of the block's content, with its dependency hashes folded in Merkle-style. Two identical blocks share it; a renamed block keeps it. Derived, never declared.
4
Verified once, cached forever
On the deterministic side of the blade the verdict is keyed by content hash plus input digest and never expires. Non-determinism anywhere in what a block depends on unsettles it, and the plan names the culprit.
How it works
How it works
01 · Contract
A contract, not code.
Define ports, effects, capabilities and cost, or let LOG draft the contract from your spec. Nothing is generated yet.
02 · Generate
Any model fills it in.
A model writes an implementation to satisfy the contract. Implementations are disposable: the contract is the asset.
03 · Verify
Verified once, cached forever.
Review checks the implementation against the contract. The verdict is keyed by the block's content hash, so a review that already passed never runs again.
04 · Compose
Blocks snap into a program.
Blocks connect by structural port matching: a User output satisfies an input asking for an email string: no mapping file. An ambiguous seam is a gap with a reason, never a guess.
Caching, pricing, review and replay all derive from this one visible line.
Two ways in
Bring a repo. Or bring nothing.
You have a repo
Import it. Nothing gets rewritten.
LogiShell reads your repo in place: nothing rewritten, nothing moved. Symbols are lifted into typed blocks by asking your own language servers, and only the nodes it can prove cross into the canvas. The rest comes back marked unmapped, with the reason.
$lsh-runner import .
▸ mapped symbol billing/quote.computeQuote
▸ unmapped file legacy/report.rb: no probe
▸ 812 nodes: 604 mapped, 208 unmapped
✓ 604 of them are kernel blocks
You have an idea
Solo founder? Start from a sentence.
Describe the product and LOG drafts the contracts, entities, typed ports, the effects each step needs. Deterministic steps run straight away, no account, no infrastructure, nothing to pay for. The first real effect stops at a gate and waits for you.
Skills for your agent$npx skills add logishell/skills
Claude Code plugin/plugin marketplace add logishell/skills
Describe → materialize
Describe like a child. Verify like an auditor.
prompt
Invoiceentity
idUUID
customerIdUUID
linesLineItem[]
periodDateRange
taxRegionRegion
totalMoney
statusPaymentStatus
issuedAtTimestamp
0x2fd8…f5ecverdict: verifiedcached
entity → contract → implementation → verified
The stack
Shell → Harness → Models.
Your shellwhere you work
Code editor, terminal and canvas in one place, with LOG beside you. It runs on your machine or in any browser, and it is the same shell whichever model is behind it.
The harnesspicks the model
Adapters behind one interface, roles routed by a config file, MCP for tools, typed blocks so the work a model produces can be verified instead of trusted.
Your modelslocal and remote
Suppliers, not a lock.
A local perimeter on your own hardware and a remote one on your own keys. A cheaper, stronger model ships: you win, and so do we.
“One shell. Every model. Yours.”
Systems, not snippets
Real systems, assembled from blocks.
Nine shapes LogiShell is built for: each one a graph of typed blocks. Deterministic where it can be, gated where it must be. The wires only connect when the ports do.
Pricing & quotes6 blocks
sampleCart
out · Cart
Tax engine
ref · EU 19%
computeQuote
✓ verified · cached
Deterministic· verified · cached
Auth & sessions4 blocks
credentials
out · Creds
login
✓ verified
session
stored
Deterministic· verified · audited
Invoicing & tax7 blocks
usage
out · Usage
rates
ref · region
invoice
✓ verified · cached
Deterministic· verified · cached
AI agentsagentic
inbox
out · Msg
^_^ agent
plans · gated
tools
typed
Probabilistic· journaled · gated
Content moderation3 blocks
post
out · Post
classify
p = 0.97
gate
approved
Probabilistic· human-approvable
ETL pipeline5 blocks
ingest
out · Rows
transform
✓ verified
store
replayable
Deterministic· replays free
Integrationsconnectors
Stripe
out · Charge
Slack
out · Event
flow
ports match ✓
Deterministic· ports typed
Internal toolsops
blocks.query
live data
dashboard
wired, not copied
Deterministic· live, not a copy
Support triage4 blocks
ticket
out · Ticket
triage
routes · gated
route
human-ok
Probabilistic· journaled · gated
Why now
Research caught up.
Recursive Language Models and CodeAct pointed the same way: a model does far better exploring a typed, executable environment than swallowing the whole context. LogiShell is that environment: typed, content-addressed, auditable.
JSON Schema 2020-12 contracts · MCP server your agent can call · source-available · no proprietary lock-in
✓kernel runs today: validate · plan · run✓contract v0: Go and TS mirrors pinned→canvas IDE in prototype
Your shell in the age of AI. Built in the open by a solo technical founder.
Get LogiShell
Your shell in the age of AI.
LogiShell already runs, on your machine or in any browser. Bring your own keys, or bring nothing and start on a local model.
Neither store build is submitted yet. Android installs the .apk directly: your phone will ask once to allow installs from the browser. On iPhone, open mobile.logishell.com in Safari and add it to your home screen.
The .dmg is signed with our Developer ID and notarized by Apple, so macOS opens it without warnings. Prefer a terminal? curl -fsSL logishell.com/get | sh installs the same app.
Get product updates
By selecting Get updates, you request product-update emails and an onboarding link. To stop emails, contact hello@logishell.com. See our Privacy Policy.