Documentation

Install lets, open your first window, meet the companion, build a unique of your own, and read the protocol that ties it all together.

Getting started

Install with your agent or by hand, your first /lets graph, listening vs away, and Send to Claude with resume.

The companion (Doto)

Persona, moods, voice, how Doto learns you, the special skills he writes for himself, and his expressions and secret moves.

Uniques & the store

What a unique is, defaults vs the store, authoring one from the template, and the store's verification policy.

The graph board

The first unique: what you can do on the board, and the events and commands Claude uses to edit it with you.

Doto's home (den)

The second default unique: see what Doto learned about you and edit or forget any of it by pointing. new in 0.6.0

Talk in code (cocode)

The first store-only unique: an editor for any language, where Claude predicts your next lines and runs the real program. new

Talk in Morse (mors)

A store-only unique: one key, one tape. Key your message in dots and dashes; Claude reads it as a prompt and can answer in Morse. new

Protocol (LIP)

The Lets Interaction Protocol: envelope, domains, core messages, transport, security, manifest and versioning.

Architecture

How Claude Code, the engine and the browser window talk, the pieces of the engine, and the life of one window.

lets in one table

lets is a Claude Code plugin with three layers. Everything that crosses between them is a typed JSON envelope defined by LIP, up (human → Claude) and down (Claude → window). LIP is designed for mediums that do not exist yet: a unique for voice, AR or a haptic strip would speak the same envelope.

LayerWhat it does
EngineA zero-dependency Node MCP server. Hosts windows on loopback, carries the protocol, keeps the companion's memory, routes multi-task work to the cheapest trustworthy model, installs community mediums from git.
UniquesThe interactive mediums: static web apps that speak LIP, each in its own repository. The engine installs the default ones from defaults.json on first use. Today they are graph and den, Doto's home. The store holds the rest, starting with cocode, a code window you talk through, and mors, a Morse key you talk through.
Shell + SDKWhat every unique gets for free: the companion entity, chat panel, runtime components (sliders, options, forms, image paste…), toasts and the theme.

Words you'll meet

unique
One interactive medium the engine hosts, like the graph board. A repository with a manifest, a guide for Claude and a static UI.
window
One open instance of a unique, shown in the app's browser pane. Each window has its own id and token.
shell
The shared browser layer every unique mounts: companion, chat, components, image paste, toasts, theme.
companion, Doto
Claude's presence inside the window: a dot that does. Doto is the default name; you can rename him.
LIP
The Lets Interaction Protocol: the JSON envelopes that cross between window, host and Claude.
defaults
The uniques every installation gets, listed in the engine's defaults.json (graph and den today).
store
A git repository whose index.json lists community uniques by git URL. lets-store is the first.
session new in 0.4.0
A saved copy of a window's content, written when you press Send to Claude, so the window can be resumed later.

These docs describe lets 0.6.0. A badge like new in 0.6.0 marks what landed with that release.